1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. subzero007

Beiträge von subzero007

  • For hochzählen oder alternative?

    • subzero007
    • 21. Oktober 2009 um 17:56

    Hallo Benutze folgendes Um eine datei auszuwerten:

    [autoit]

    _FileReadToArray($file, $arfile)
    ;_ArrayDisplay($arfile)
    Local $icount = _GUICtrlListView_GetItemCount($ListViewhost)
    For $j = 0 To $icount - 1
    ;$ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost, $i)

    [/autoit][autoit][/autoit][autoit]

    $ListViewText = _GUICtrlListView_GetItemText($ListViewhost, $j)

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To UBound($arfile) - 1 ; 1. Element ist Beschreibung der csv Daten
    $temp = StringSplit($arfile[$i], ";")


    If $temp[17] = $ListViewText Then

    $IP = _QueryDNS($ListViewText)
    Ping($ListViewText, 100) ; Host anpingen
    If Not @error Then $STATus = 'ON'
    Ping($ListViewText, 100) ; Host anpingen
    If @error Then $STATus = 'Offline'

    [/autoit]

    Jetzt habe ich das Problem wenn in der datei $temp[17] nicht vorhanden ist dann hängt er an der stelle?

    Wie kann ich sagen wenn er dort einen feherl hat das er weiter machen soll?
    z.b. wie
    If $temp[17] <> $ListViewText Then
    $i += 1

    aber irgendwie klappt es nicht was mache ich falsch oder was muss man beachten?

  • Or Probleme...

    • subzero007
    • 21. Oktober 2009 um 14:53

    So geht es leider auch nicht ??

    [autoit]

    $file = FileOpen("\\server\share\log1\" & $ListViewText & ".log", 0)
    If $file = -1 Then
    $file = FileOpen("\\server\share\log2\" & $ListViewText & ".log", 0)

    [/autoit]
  • Or Probleme...

    • subzero007
    • 21. Oktober 2009 um 14:35

    Hey,
    so danke euch erstaml mein 1 Problem ist gelöst

    jetzt hänge ich daran die datei entweder in pfad eins oder im Pfad zwei zu öffnen was mache ich falsch?

    [autoit]


    If not (FileExists("\\server\share\log1\" & $ListViewText & ".log")) And not (FileExists("\\server\share\log2\" & $ListViewText & ".log")) Then
    GUICtrlCreateListViewItem($temp[17] & "||" & $Text & "|" & $temp[7] & "|" & $IP & "|" & $STATus, $Liste)
    Else

    [/autoit][autoit][/autoit][autoit]

    $file = FileOpen("\\server\share\log1\" & $ListViewText & ".log", 0)
    If $file = -1 Then
    FileClose($file)
    $file = FileOpen("\\server\share\log2\" & $ListViewText & ".log", 0)

    [/autoit]

    also wenn ich nur zeile 6 Stehen lasse funktioniert es wie kann ich das abfangen oder was mache ich falsch ?

  • Or Probleme...

    • subzero007
    • 21. Oktober 2009 um 13:19

    hey,
    jetzt kriege ich zumindestsens keinen syntaxfehler:.......

    das ganze ist ein tel meiner funktion:

    ich will nur zwei verschiedene verzeichnisse prüfen aber leider geht es nicht so wie ich es mir vorstelle?

    [autoit]

    Func _befuelle_lv_liste()
    ;### Befülle Listview Liste aus Inhalten einer 26 - spaltigen csv Datei
    ;### Suchkriterium Hostname aus dem Listview $ListViewText [1] (noch zu überprüfen!!!!), gffs. musst Du den Hostnamen anders bestimmen
    ;### CSV Daten:
    ;### 7. Spalte Besitzer
    ;### 17. Spalte Hostname
    ;### 26. Spalte Last Logon
    _GUICtrlListView_DeleteAllItems($Liste)

    [/autoit][autoit][/autoit][autoit]

    Local $arfile
    Local $file = '\\server\share\log\CI.csv'
    _FileReadToArray($file, $arfile)
    ;_ArrayDisplay($arfile)
    Local $icount = _GUICtrlListView_GetItemCount($ListViewhost)
    For $j = 0 To $icount - 1
    ;$ListViewText = _GUICtrlListView_GetItemTextArray($ListViewhost, $i)

    [/autoit][autoit][/autoit][autoit]

    $ListViewText = _GUICtrlListView_GetItemText($ListViewhost, $j)

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To UBound($arfile) - 1 ; 1. Element ist Beschreibung der csv Daten
    $temp = StringSplit($arfile[$i], ";")
    If $temp[17] = $ListViewText Then ; Wenn der Hostname mit dem Hostnamen aus dem 1. Listview übereinstimmt (das musst Du noch kontrollieren)
    $IP = _QueryDNS($ListViewText)
    Ping($ListViewText, 100) ; Host anpingen
    If Not @error Then $STATus = 'ON'
    Ping($ListViewText, 100) ; Host anpingen
    If @error Then $STATus = 'Offline'

    If Not FileExists("\\server\share\log1\" & $ListViewText & ".log") Or Not FileExists("\\server\share\log2\" & $ListViewText & ".log") then


    GUICtrlCreateListViewItem($temp[17] & "||" & $Text & "|" & $temp[7] & "|" & $IP & "|" & $STATus, $Liste)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Else

    [/autoit][autoit][/autoit][autoit]

    $file = FileOpen("\\server\share\log3\" & $ListViewText & ".log", 0)
    While 1
    ;
    ;
    $Text = ""
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    $Text = StringReplace($line, "USERNAME=", "")
    If @extended > 0 Then ;GUICtrlCreateListViewItem($ListViewText[1]&'|'&$text, $Liste)
    ; _ADGetLastLoginDate($Text)

    [/autoit][autoit][/autoit][autoit]

    If $Text = "" Then
    GUICtrlCreateListViewItem($temp[17] & "|" & "|" &$Text & "|" & $temp[7] & "|" & $IP & "|" & $STATus, $Liste)
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $result1 = _ADObjectExists($Text)
    If $result1 = 1 Then
    $result = _ADGetLastLoginDate($Text)
    If $result1 = 0 Then
    $result = ''
    EndIf
    $result = StringRegExpReplace($result, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})", "$4:$5:$6 $3.$2.$1")

    [/autoit][autoit][/autoit][autoit]

    GUICtrlCreateListViewItem($temp[17] & "|" & $Text & "|" & $result & '|' & $temp[7] & "|" & $IP & "|" & $STATus, $Liste)
    EndIf
    EndIf
    WEnd

    [/autoit][autoit][/autoit][autoit]

    FileClose($file)
    EndIf ;
    EndIf
    Next
    Next
    EndFunc

    [/autoit]

    Ich will in zeile 29 zwei verzeichnisse prüfen:
    Was mache ich falsch?

  • Or Probleme...

    • subzero007
    • 21. Oktober 2009 um 13:01

    Ohne '('
    kriege ich auch fehler ich weiss nicht was los ist habe schon viel versucht ???

  • Or Probleme...

    • subzero007
    • 21. Oktober 2009 um 12:54

    Was mache ich falsch Kriege immer nur Syntax fehler:
    Was will ich machen prüfe ob datei in pfad 1 oder in pfad 2 wenn nein GUICtrlCreateListViewItem

    und wenn datei enthalten mit else weitermachen ....


    [autoit]

    If Not FileExists("\\server\share\log1\" & $ListViewText & ".log")) Or If Not FileExists("\\server\share\log2\" & $ListViewText & ".log") then


    GUICtrlCreateListViewItem($temp[17] & "||" & $Text & "|" & $temp[7] & "|" & $IP & "|" & $STATus, $Liste)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Else

    [/autoit][autoit][/autoit][autoit]

    $file = FileOpen("\\server\share\log3\" & $ListViewText & ".log", 0)

    [/autoit]


    Danke Alle Probleme Gelöst ;)

  • Ad Abfragen Konto Vorhanden? Letzes LogonDatumUhrzeit?

    • subzero007
    • 21. Oktober 2009 um 08:57

    Hey,

    biun schon am testen und Kriege diesen fehler hat jemand eine idee?

    [autoit]

    $strUserName = "kenmyer" ; <== gesuchter User Account

    [/autoit][autoit][/autoit][autoit]

    $objConnection = ObjCreate("ADODB.Connection")
    $objConnection.Open = "Provider=ADsDSOObject"

    $objCommand = ObjCreate("ADODB.Command")
    $objCommand.ActiveConnection = $objConnection

    $objCommand.CommandText = _
    ";(&(objectCategory=User)" & _
    "(samAccountName=" & $strUserName & "));samAccountName;subtree"

    $objRecordSet = $objCommand.Execute

    If $objRecordset.RecordCount = 0 Then
    ConsoleWrite( "sAMAccountName: " & $strUserName & " does not exist." & @CRLF)
    Else
    ConsoleWrite( $strUserName & " exists." & @CRLF)
    EndIf

    $objConnection.Close

    [/autoit]

    (13) : ==> The requested action with this object has failed.:

  • Ad Abfragen Konto Vorhanden? Letzes LogonDatumUhrzeit?

    • subzero007
    • 20. Oktober 2009 um 21:12

    Hey,

    danke guter bericht ;)

    habe auch gerade was gefunden ;)

    [autoit]


    $strQuery = "<LDAP://" & $strHostServer & "/" & $strDNSDomain & ">;(sAMAccountName=" & $user & ");ADsPath;subtree"
    $objRecordSet = $objConnection.Execute($strQuery) ; Retrieve the FQDN for the object
    $ldap_entry = $objRecordSet.fields(0).value
    $oObject = _ADObjGet($ldap_entry) ; Retrieve the COM Object for the object
    $result = $oObject.LastLogin
    $oObject.PurgePropertyList

    [/autoit][autoit][/autoit][autoit]

    If $result = "" Then
    Return ""
    Else
    Return $result
    EndIf


    Func _ADObjGet($dn)
    If $alt_userid = "" Then
    Return ObjGet($dn)
    Else
    Return $objOpenDS.OpenDSObject($dn, $alt_userid, $alt_password, BitOR(0x200, 0x1))
    EndIf
    EndFunc

    [/autoit]

    Kann es aber leider erst morgen testen habe leider auf meiner VM kein DC aber ich glaube es zu verstehen,
    ich glaube es aber auch nur ... ;)

  • Ad Abfragen Konto Vorhanden? Letzes LogonDatumUhrzeit?

    • subzero007
    • 20. Oktober 2009 um 20:34

    Hey,

    stehe wieder vor einem neuen Problem.
    Das Active directory Abfragen ob ein Konto vorhaden ist und wenn ja,
    letztes Logandatum ausgeben..

    Kann mir jemand einen Tipp geben..

  • MSGBOX OK-Abbrechen

    • subzero007
    • 20. Oktober 2009 um 12:03

    Hey,

    habe ein kleines Problem benutze Folgende Funktion.


    [autoit]

    Func _reboot()

    If GUICtrlRead($Inputcn) = "" Then
    MsgBox(0, "", "Host eingeben")
    Else


    Run(@ComSpec & " /c " & 'tools\remote\shut.cmd \\' & GUICtrlRead($Inputcn), "", @SW_HIDE)

    [/autoit][autoit][/autoit][autoit]

    EndIf
    EndFunc

    [/autoit]

    Würde in diese Funktion vor dem Run eine abfrage einbauen Per MSGBOX:
    Mit OK und Abbrechen...

    [autoit]

    MsgBox(1, "Restart", "Der Rechner wird Neugestartet", 10)

    [/autoit]

    kann mir jemand einen tipp geben?

    Danke

  • Run warten bis fenster kommt anschliessend exe beenden...

    • subzero007
    • 20. Oktober 2009 um 09:29

    Hey,
    habe ein kleines Problem
    will 2 befehle aus führen "Funktioniert"
    Anschliessend wenn der zweite befehl ausgefürhrt wird soll er ein fenster schliessen "Funktioniert"

    was nicht funktioniert das Sript beenden was muss ich dabei beachten oder was mache ich falsch ?

    [autoit]


    RunWait(@ComSpec & " /c " & 'for %i in (*.dll) do regsvr32 /s %i', "C:\WINDOWS\system32\wbem", @SW_SHOW)

    ConsoleWrite('for %i in (*.dll) do regsvr32 /s %i' & @CRLF)

    [/autoit][autoit][/autoit][autoit]

    Run(@ComSpec & " /c " & 'for %i in (*.exe) do %i /regserver', "C:\WINDOWS\system32\wbem", @SW_SHOW)

    ConsoleWrite('for %i in (*.exe) do %i /regserver' & @CRLF)

    [/autoit][autoit][/autoit][autoit]

    while 1
    if WinExists("[CLASS:#32770]", '') then winclose("[CLASS:#32770]")
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]

    Edit:// Danke läuft

  • boot time

    • subzero007
    • 15. Oktober 2009 um 12:04

    Habe es gefunden

    [autoit]


    $objWMI = ObjGet("winmgmts:\\" & $COMPUTERNAME & "\root\CIMV2")
    if @error Then Return

    [/autoit]
  • boot time

    • subzero007
    • 15. Oktober 2009 um 11:52

    So bin fertig aber wenn ich auf einen server stosse wo ich nicht genügend rechte also kein Admin bin habe kommt diese fehler meldung.
    Wie kann ich das abfangen??

    (13) : ==> Variable must be of type "Object".:
    $objItems = $objWMI.ExecQuery('Select * from Win32_OperatingSystem', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    $objItems = $objWMI^ ERROR

    [autoit]


    Func BootTime($Host)
    ; $COMPUTERNAME=EnvGet("COMPUTERNAME")
    $COMPUTERNAME=$host

    Local $ProductCode, $ProductName, $Val
    Local $objItems
    Local $objWMI

    [/autoit][autoit][/autoit][autoit]

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20

    [/autoit][autoit][/autoit][autoit]

    $objWMI = ObjGet("winmgmts:\\" & $COMPUTERNAME & "\root\CIMV2")
    $objItems = $objWMI.ExecQuery('Select * from Win32_OperatingSystem', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($objItems) Then
    For $objItem In $objItems
    $oBootTime = $objItem.LastBootUptime
    Next
    EndIf
    $BootTimeArray=StringSplit($oBootTime,".",1) ; Entferne alle Zahlen nach dem . damit es in der Console schöner aussieht.
    $BootTime=$BootTimeArray[1]; Gib mir den Teil des Arrays links vom . (Punkt)
    $BootTime=StringRegExpReplace($BootTime, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})","$4:$5:$6 $3.$2.$1")

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite($BootTime&@crlf)
    EndFunc

    [/autoit]
  • RegExp Pattern.....

    • subzero007
    • 15. Oktober 2009 um 11:00

    Ich habe es gelösst:


    For $i = 2 To $aFile[0] - 2
    $aFile[$i] = StringStripWS($aFile[$i], 7)

    $Array = _StringBetween($aFile[$i], 'CN=', ',')
    _ArrayDisplay($Array)
    $ArrayString = _ArrayToString($Array)
    GUICtrlCreateListViewItem($ArrayString, $hListView) ;<------ Hier zb.


    Danke an alle...........

    _Arraytostring war es....

  • RegExp Pattern.....

    • subzero007
    • 15. Oktober 2009 um 10:50

    kriege dann diesen fehler wenn ich dem array eine nummer gebe:
    ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

  • RegExp Pattern.....

    • subzero007
    • 15. Oktober 2009 um 10:11

    Was mache ich falsch;

    [autoit]

    For $i = 2 To $aFile[0] - 2
    $aFile[$i] = StringStripWS($aFile[$i], 7)

    $Array = _StringBetween($aFile[$i], 'CN=', ',')
    _ArrayDisplay($Array)

    GUICtrlCreateListViewItem($Array, $hListView)
    Next

    [/autoit]

    Arraydislay ist alles ok bloss die items werden nicht erstell?

  • RegExp Pattern.....

    • subzero007
    • 15. Oktober 2009 um 09:43

    Hey,

    brauche mal einen regExp Pattern...

    so sieht die datei aus

    dn desc
    CN=S0myT001,OU=Servers,OU=_Global,OU=E0my,DC=test,DC=my,DC=net Terminal Server
    CN=S0myT010,OU=Servers,OU=TS0RV,OU=E0my,DC=test,DC=my,DC=net Citrix Server
    CN=S0myT011,OU=Servers,OU=TS0RV,OU=E0my,DC=test,DC=my,DC=net Citrix Server
    CN=s0myt020,OU=Servers,OU=TS0RV,OU=E0my,DC=test,DC=my,DC=net Terminalserver my


    und das will ich haben:
    S0myT001
    S0myT010
    S0myT011
    s0myt020

    Kann mir mal jemand helfen....

  • boot time

    • subzero007
    • 14. Oktober 2009 um 19:59

    Danke habe es berits gelöst
    @pcname werde ich nicht nehmen da ich sowieso diesen wert als parameter vom Remote rechner übergeben werde.....

    also= $COMPUTERNAME = $Remoterechner

  • boot time

    • subzero007
    • 14. Oktober 2009 um 18:42

    Was mache ich falsch das format ist immer noch das selbe?

    [autoit]

    BootTime()
    Func BootTime()
    $COMPUTERNAME=EnvGet("COMPUTERNAME")
    Local $ProductCode, $ProductName, $Val
    Local $objItems
    Local $objWMI

    [/autoit][autoit][/autoit][autoit]

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20

    [/autoit][autoit][/autoit][autoit]

    $objWMI = ObjGet("winmgmts:\\" & $COMPUTERNAME & "\root\CIMV2")
    $objItems = $objWMI.ExecQuery('Select * from Win32_OperatingSystem', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($objItems) Then
    For $objItem In $objItems
    $oBootTime = $objItem.LastBootUptime
    Next
    EndIf
    $BootTimeArray=StringSplit($oBootTime,".",1) ; Entferne alle Zahlen nach dem . damit es in der Console schöner aussieht.
    $BootTime=$BootTimeArray[1]; Gib mir den Teil des Arrays links vom . (Punkt)
    StringRegExpReplace($BootTime, "(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})","$4:$5:$6 $3.$2.$1")
    ConsoleWrite($BootTime)
    EndFunc

    [/autoit]
  • boot time

    • subzero007
    • 14. Oktober 2009 um 16:05

    Habe was gefunden:

    [autoit]

    BootTime()
    Func BootTime()
    $COMPUTERNAME=EnvGet("COMPUTERNAME")
    Local $ProductCode, $ProductName, $Val
    Local $objItems
    Local $objWMI

    [/autoit][autoit][/autoit][autoit]

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20

    [/autoit][autoit][/autoit][autoit]

    $objWMI = ObjGet("winmgmts:\\" & $COMPUTERNAME & "\root\CIMV2")
    $objItems = $objWMI.ExecQuery('Select * from Win32_OperatingSystem', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($objItems) Then
    For $objItem In $objItems
    $oBootTime = $objItem.LastBootUptime
    Next
    EndIf
    $BootTimeArray=StringSplit($oBootTime,".",1) ; Entferne alle Zahlen nach dem . damit es in der Console schöner aussieht.
    $BootTime=$BootTimeArray[1]; Gib mir den Teil des Arrays links vom . (Punkt)
    ConsoleWrite($BootTime)
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit]

    Kann mir noch jemand einen tipp geben fürs format:
    das gibt er jetzt aus:
    20091014071539

    wüde es gerne so darstellen:

    Stunde:Minute:sekunde Tag:Jahr

    Einen Tipp Für mich ?

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™