Beiträge von water

    Wenn Du im Active Directory das Object "CN=NACHNAME\, VORNAME,OU=BLUBB,OU=Standorte,OU=BLUBB,DC=BLUBB,DC=BLUBB,DC=de" ansprechen willst , dann musst du das Komma escapen/maskieren.
    Meinem Verständis nach müsste der Aufruf


    _ADDNToSamAccountName("CN=NACHNAME\, VORNAME,OU=BLUBB,OU=Standorte,OU=BLUBB,DC=BLUBB,DC=BLUBB,DC=de")


    funktionieren.
    Wenn Du bei dsquery statt dem * den FQDN angibts, dann wirst Du sicher auch das Komma escapen müssen, oder?


    Der Link zu http://www.autoitscript.com/forum/index.php?showtopic=106163 ist meine "Übersetzung" der adfunctions.au3 von John Clelland in eine komplette UDF (helpfile, Beispiele ...).
    Die Funktionen sind großteils unverändert (mehr error checking etc.).


    // edit: Richtig heisst? "NACHNAME, VORNAME" oder "NACHNAME\, VORNAME"?

    Aus dem AutoIt Scriptomatic Tool habe ich folgenden Script kopiert - funktioniert aber leider auch nur für die lokalen Drucker bei remote PCs:

    ; Generated by AutoIt Scriptomatic


    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"


    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Printer", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)


    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "Attributes: " & $objItem.Attributes & @CRLF
    $Output = $Output & "Availability: " & $objItem.Availability & @CRLF
    $strAvailableJobSheets = $objItem.AvailableJobSheets(0)
    $Output = $Output & "AvailableJobSheets: " & $strAvailableJobSheets & @CRLF
    $Output = $Output & "AveragePagesPerMinute: " & $objItem.AveragePagesPerMinute & @CRLF
    $strCapabilities = $objItem.Capabilities(0)
    $Output = $Output & "Capabilities: " & $strCapabilities & @CRLF
    $strCapabilityDescriptions = $objItem.CapabilityDescriptions(0)
    $Output = $Output & "CapabilityDescriptions: " & $strCapabilityDescriptions & @CRLF
    $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
    $strCharSetsSupported = $objItem.CharSetsSupported(0)
    $Output = $Output & "CharSetsSupported: " & $strCharSetsSupported & @CRLF
    $Output = $Output & "Comment: " & $objItem.Comment & @CRLF
    $Output = $Output & "ConfigManagerErrorCode: " & $objItem.ConfigManagerErrorCode & @CRLF
    $Output = $Output & "ConfigManagerUserConfig: " & $objItem.ConfigManagerUserConfig & @CRLF
    $Output = $Output & "CreationClassName: " & $objItem.CreationClassName & @CRLF
    $strCurrentCapabilities = $objItem.CurrentCapabilities(0)
    $Output = $Output & "CurrentCapabilities: " & $strCurrentCapabilities & @CRLF
    $Output = $Output & "CurrentCharSet: " & $objItem.CurrentCharSet & @CRLF
    $Output = $Output & "CurrentLanguage: " & $objItem.CurrentLanguage & @CRLF
    $Output = $Output & "CurrentMimeType: " & $objItem.CurrentMimeType & @CRLF
    $Output = $Output & "CurrentNaturalLanguage: " & $objItem.CurrentNaturalLanguage & @CRLF
    $Output = $Output & "CurrentPaperType: " & $objItem.CurrentPaperType & @CRLF
    $Output = $Output & "Default: " & $objItem.Default & @CRLF
    $strDefaultCapabilities = $objItem.DefaultCapabilities(0)
    $Output = $Output & "DefaultCapabilities: " & $strDefaultCapabilities & @CRLF
    $Output = $Output & "DefaultCopies: " & $objItem.DefaultCopies & @CRLF
    $Output = $Output & "DefaultLanguage: " & $objItem.DefaultLanguage & @CRLF
    $Output = $Output & "DefaultMimeType: " & $objItem.DefaultMimeType & @CRLF
    $Output = $Output & "DefaultNumberUp: " & $objItem.DefaultNumberUp & @CRLF
    $Output = $Output & "DefaultPaperType: " & $objItem.DefaultPaperType & @CRLF
    $Output = $Output & "DefaultPriority: " & $objItem.DefaultPriority & @CRLF
    $Output = $Output & "Description: " & $objItem.Description & @CRLF
    $Output = $Output & "DetectedErrorState: " & $objItem.DetectedErrorState & @CRLF
    $Output = $Output & "DeviceID: " & $objItem.DeviceID & @CRLF
    $Output = $Output & "Direct: " & $objItem.Direct & @CRLF
    $Output = $Output & "DoCompleteFirst: " & $objItem.DoCompleteFirst & @CRLF
    $Output = $Output & "DriverName: " & $objItem.DriverName & @CRLF
    $Output = $Output & "EnableBIDI: " & $objItem.EnableBIDI & @CRLF
    $Output = $Output & "EnableDevQueryPrint: " & $objItem.EnableDevQueryPrint & @CRLF
    $Output = $Output & "ErrorCleared: " & $objItem.ErrorCleared & @CRLF
    $Output = $Output & "ErrorDescription: " & $objItem.ErrorDescription & @CRLF
    $strErrorInformation = $objItem.ErrorInformation(0)
    $Output = $Output & "ErrorInformation: " & $strErrorInformation & @CRLF
    $Output = $Output & "ExtendedDetectedErrorState: " & $objItem.ExtendedDetectedErrorState & @CRLF
    $Output = $Output & "ExtendedPrinterStatus: " & $objItem.ExtendedPrinterStatus & @CRLF
    $Output = $Output & "Hidden: " & $objItem.Hidden & @CRLF
    $Output = $Output & "HorizontalResolution: " & $objItem.HorizontalResolution & @CRLF
    $Output = $Output & "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
    $Output = $Output & "JobCountSinceLastReset: " & $objItem.JobCountSinceLastReset & @CRLF
    $Output = $Output & "KeepPrintedJobs: " & $objItem.KeepPrintedJobs & @CRLF
    $strLanguagesSupported = $objItem.LanguagesSupported(0)
    $Output = $Output & "LanguagesSupported: " & $strLanguagesSupported & @CRLF
    $Output = $Output & "LastErrorCode: " & $objItem.LastErrorCode & @CRLF
    $Output = $Output & "Local: " & $objItem.Local & @CRLF
    $Output = $Output & "Location: " & $objItem.Location & @CRLF
    $Output = $Output & "MarkingTechnology: " & $objItem.MarkingTechnology & @CRLF
    $Output = $Output & "MaxCopies: " & $objItem.MaxCopies & @CRLF
    $Output = $Output & "MaxNumberUp: " & $objItem.MaxNumberUp & @CRLF
    $Output = $Output & "MaxSizeSupported: " & $objItem.MaxSizeSupported & @CRLF
    $strMimeTypesSupported = $objItem.MimeTypesSupported(0)
    $Output = $Output & "MimeTypesSupported: " & $strMimeTypesSupported & @CRLF
    $Output = $Output & "Name: " & $objItem.Name & @CRLF
    $strNaturalLanguagesSupported = $objItem.NaturalLanguagesSupported(0)
    $Output = $Output & "NaturalLanguagesSupported: " & $strNaturalLanguagesSupported & @CRLF
    $Output = $Output & "Network: " & $objItem.Network & @CRLF
    $strPaperSizesSupported = $objItem.PaperSizesSupported(0)
    $Output = $Output & "PaperSizesSupported: " & $strPaperSizesSupported & @CRLF
    $strPaperTypesAvailable = $objItem.PaperTypesAvailable(0)
    $Output = $Output & "PaperTypesAvailable: " & $strPaperTypesAvailable & @CRLF
    $Output = $Output & "Parameters: " & $objItem.Parameters & @CRLF
    $Output = $Output & "PNPDeviceID: " & $objItem.PNPDeviceID & @CRLF
    $Output = $Output & "PortName: " & $objItem.PortName & @CRLF
    $strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
    $Output = $Output & "PowerManagementCapabilities: " & $strPowerManagementCapabilities & @CRLF
    $Output = $Output & "PowerManagementSupported: " & $objItem.PowerManagementSupported & @CRLF
    $strPrinterPaperNames = $objItem.PrinterPaperNames(0)
    $Output = $Output & "PrinterPaperNames: " & $strPrinterPaperNames & @CRLF
    $Output = $Output & "PrinterState: " & $objItem.PrinterState & @CRLF
    $Output = $Output & "PrinterStatus: " & $objItem.PrinterStatus & @CRLF
    $Output = $Output & "PrintJobDataType: " & $objItem.PrintJobDataType & @CRLF
    $Output = $Output & "PrintProcessor: " & $objItem.PrintProcessor & @CRLF
    $Output = $Output & "Priority: " & $objItem.Priority & @CRLF
    $Output = $Output & "Published: " & $objItem.Published & @CRLF
    $Output = $Output & "Queued: " & $objItem.Queued & @CRLF
    $Output = $Output & "RawOnly: " & $objItem.RawOnly & @CRLF
    $Output = $Output & "SeparatorFile: " & $objItem.SeparatorFile & @CRLF
    $Output = $Output & "ServerName: " & $objItem.ServerName & @CRLF
    $Output = $Output & "Shared: " & $objItem.Shared & @CRLF
    $Output = $Output & "ShareName: " & $objItem.ShareName & @CRLF
    $Output = $Output & "SpoolEnabled: " & $objItem.SpoolEnabled & @CRLF
    $Output = $Output & "StartTime: " & WMIDateStringToDate($objItem.StartTime) & @CRLF
    $Output = $Output & "Status: " & $objItem.Status & @CRLF
    $Output = $Output & "StatusInfo: " & $objItem.StatusInfo & @CRLF
    $Output = $Output & "SystemCreationClassName: " & $objItem.SystemCreationClassName & @CRLF
    $Output = $Output & "SystemName: " & $objItem.SystemName & @CRLF
    $Output = $Output & "TimeOfLastReset: " & WMIDateStringToDate($objItem.TimeOfLastReset) & @CRLF
    $Output = $Output & "UntilTime: " & WMIDateStringToDate($objItem.UntilTime) & @CRLF
    $Output = $Output & "VerticalResolution: " & $objItem.VerticalResolution & @CRLF
    $Output = $Output & "WorkOffline: " & $objItem.WorkOffline & @CRLF
    Next
    ConsoleWrite($Output)
    FileWrite(@TempDir & "\Win32_Printer.TXT", $Output )
    Run(@Comspec & " /c start " & @TempDir & "\Win32_Printer.TXT" )
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_Printer" )
    Endif



    Func WMIDateStringToDate($dtmDate)


    Return (StringMid($dtmDate, 5, 2) & "/" & _
    StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
    & " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
    EndFunc

    Klingt gut!
    Mein Problem: Ich sitze in einem Firmen-Netzwerk und bekomme (vermutlich wegen der fehlenden Proxy-Authentifizierung) die Fehlermeldung "Sorry, but the database is currently offline!"

    Oder so. Verwendet ein Dummy-Field in der GUI:

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <Guilistview.au3>
    #include <WindowsConstants.au3>
    #Include <Misc.au3>
    #AutoIt3Wrapper_Run_Debug_Mode=n


    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 438, 192, 132)
    $ListView1 = GUICtrlCreateListView("Input1|Input2|Input3|Input4", 16, 16, 601, 265)
    Global $hLVHandle = GUICtrlGetHandle($ListView1)
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Input1", 130, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Input2", 130, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Input3", 130, 0)
    _GUICtrlListView_SetColumn($hLVHandle, 3, "Input4", 130, 0)
    $Input1 = GUICtrlCreateInput("", 16, 320, 129, 24)
    GUICtrlSetState(-1, $GUI_FOCUS)
    $Input2 = GUICtrlCreateInput("", 168, 320, 129, 24)
    $Input3 = GUICtrlCreateInput("", 328, 320, 137, 24)
    $Input4 = GUICtrlCreateInput("", 496, 320, 121, 24)


    $button = GUICtrlCreateButton("ADD", 250, 350, 100, 50)


    Global $hCM = GUICtrlCreateContextMenu($ListView1) ; ein Kontextmenü für das Listview erstellen
    Global $hCMDel = GUICtrlCreateMenuItem("Markierte Einträge löschen", $hCM) ; der 3. Kontextmenüeint


    Global $hEnter = GUICtrlCreateDummy()


    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###


    ; Set accelerators for ENTER
    Global $asAccelKeys[1][2] = [["{ENTER}", $hEnter]]
    GUISetAccelerators($asAccelKeys)


    ;$dll = DllOpen("user32.dll")


    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hEnter
    Switch ControlGetFocus("Form1")
    Case "Edit1"
    GUICtrlSetState($Input2,$GUI_FOCUS)
    Case "Edit2"
    GUICtrlSetState($Input3,$GUI_FOCUS)
    Case "Edit3"
    GUICtrlSetState($Input4,$GUI_FOCUS)
    Case "Edit4"
    GUICtrlSetState($Input1,$GUI_FOCUS)
    _NewItem()
    GUICtrlSetData($Input1,"")
    GUICtrlSetData($Input2,"")
    GUICtrlSetData($Input3,"")
    GUICtrlSetData($Input4,"")
    EndSwitch
    Case $button
    _NewItem()
    Case $hCMDel
    _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    EndSwitch
    ;Sleep(250)
    WEnd


    Func _TestInput1()
    Local $read = GUICtrlRead($Input1)
    If StringLen($read) > 1 Then
    MsgBox(1, "", "Ungültige Eingabe")
    GUICtrlSetState($Input1, $GUI_FOCUS)
    Else
    GUICtrlSetData($Input1, "")
    GUICtrlSetState($Input2, $GUI_FOCUS)
    EndIf
    EndFunc ;==>_TestInput1


    Func _TestInput2()
    Local $read = GUICtrlRead($Input2)
    If StringLen($read) > 2 Then
    MsgBox(1, "", "Ungültige Eingabe")
    GUICtrlSetState($Input2, $GUI_FOCUS)
    Else
    GUICtrlSetData($Input2, "")
    GUICtrlSetState($Input3, $GUI_FOCUS)
    EndIf
    EndFunc ;==>_TestInput2


    Func _TestInput3()
    Local $read = GUICtrlRead($Input3)
    If StringLen($read) > 3 Then
    MsgBox(1, "", "Ungültige Eingabe")
    GUICtrlSetState($Input3, $GUI_FOCUS)
    Else
    GUICtrlSetState($Input4, $GUI_FOCUS)
    EndIf
    EndFunc ;==>_TestInput3


    Func _TestInput4()
    _NewItem()
    GUICtrlSetState($Input1, $GUI_FOCUS)
    EndFunc ;==>_TestInput4



    Func _NewItem() ; Funktion zum auslesen der Eingabefelder (Neuer Eintrag bzw. Eintrag bearbeiten)
    GUICtrlCreateListViewItem(GUICtrlRead($Input1) & "|" & GUICtrlRead($Input2) & "|" & GUICtrlRead($Input3) & "|" & GUICtrlRead($Input4), $ListView1)
    EndFunc ;==>_NewItem


    Ich würde das IE Objekt auch wieder beenden. Er startet für jeden Link then IE neu und irgendwann reicht Dein Hauptspeicher nicht mehr.


    FileWrite($File & "\" & $name[2] & ".txt", $HTML)
    _IEQuit($Object)

    Ich würde das nicht mit AdLibEnable machen sondern einfach in die "While true" Schlefie einbauen. Du änderst ja das GUI in der Checkdrive-Funktion, daher passt das sehr gut in die Schleife. Ausserdem führt AdLibEnable dazu, dass das Hauptscript während der Verarbeitung deiner Unterroutine steht.

    While True
    $msg = GUIGetMsg()
    Switch $msg
    Case $gui_event_close
    Exit
    Case $copybutton
    $text1 = GUICtrlRead($moviename)
    $text2 = GUICtrlRead($moviesession)
    $text3 = GUICtrlRead($moviesessiondisc)
    If $text1 = "" Then
    MsgBox(0, "Fehler", "Die Eingabe des Titels ist erforderlich")
    Else
    start()
    EndIf
    Case Else
    checkDrive()
    EndSwitch
    WEnd

    Wenn Du "failed to login" verwendest, dann sollte aber auch die Datumsprüfung funktionieren.
    Das Skript liest immer den letzten Satz und stellt fest, dass es Datum und Uhrzeit bereits verarbeitet hat, tut nichts und geht in den nächsten Loop.

    Tja, dann funzt aber das ganze Skript nicht :(
    Der von Dir gewünschte Trigger-Text steht immer in der ZWEIT-letzten Zeile. Auf diese kann AutoIt aber leider nicht zugreifen (geht nur auf die letzte Zeile mit -1).
    Wie groß wird das Log maximal und kann es wirklich gelöscht werden (brauchst Du die restlichen Einträge nicht)?

    Schön zu hören!
    Das Problem mit dem Sleep ist Dir bewusst? Wenn während der Sleep-Zeit zwei oder mehr Zeilen in das Log geschrieben werden und eine/mehrere davon (abgesehen von der letzten Zeile) Deinen Trigger-Text enthalten, dann merkt das Skript nichts davon, da nur die letzte Zeile geprüft wird.
    Kannst Du damit leben oder muss das auch abgefangen werden?

    Wenn der Text triggert und Dir die Nummern egal sind, dann sieht das Skript so aus:

    HotKeySet("+!q", "Quit") ; HotKey to end the script Shift+Alt+Q
    $hFile = FileOpen("C:\temp\Log.txt", 0)
    Global $sOldDate = ""
    While 1
    $sLogEntry = FileReadLine($hFile, -1)
    If @error = 0 Then
    If StringInStr($sLogEntry,"does not match the expected the checksum") > 0 And $sOldDate <> StringLeft($sLogEntry, 14) Then
    ShellExecute("WinWord.exe")
    $sOldDate = StringLeft($sLogEntry, 14)
    EndIf
    EndIf
    Sleep(2000) ; 2 Sekunden Pause
    WEnd


    Func Quit()
    Exit 0
    EndFunc ;==>Quit

    Was triggert nun genau die Funktion in meinem Beispielscript? Der Text "does not match the expected the checksum" oder der Wert 3669493577?
    Davon hängt dann ab, wie ich das Programm schreiben muss.

    Wenn das Skript von Beitrag 10 immer nur den Text auf der Console ausgibt, dann heisst das, dass der StringSPlit nicht erfolgreich war.
    Sind Deine Zahlen tatsaechlich in Anfuehrungszeichen?

    OK. Hier der aktuellste Stand der zusätzlich noch dafür sorgt, dass für eine Zeile der Trigger nur einmal angezogen wird (d.h. Datum/Uhrzeit des Eintrags wird gespeichert und nur bei Änderung spricht der Trigger an).

    HotKeySet("+!q", "Quit") ; HotKey to end the script Shift+Alt+Q
    $hFile = FileOpen("C:\temp\Log.txt", 0)
    Global $sOldDate = ""
    While 1
    $sLogEntry = FileReadLine($hFile, -1)
    $aLogEntry = StringSplit($sLogEntry, '"')
    If @error = 0 Then
    If $aLogEntry[2] = "6766792" And $sOldDate <> StringLeft($sLogEntry,14) Then ; In $aLogEntry[4] steht dann der zweite Variable Wert
    ShellExecute("WinWord.exe")
    $sOldDate = StringLeft($sLogEntry,14)
    EndIf
    EndIf
    Sleep(2000) ; 2 Sekunden Pause
    WEnd


    Func Quit()
    Exit 0
    EndFunc ;==>Quit