Hallo,
ich habe ein Script geschrieben das in einer Domäne an den lokalen PCs verschiedene Einstellungen vornimmt die Benutzerbezogen sind.
Nun möchte ich gerne wissen wie ich es machen muss um z.B. beim Befehl
FileCopy den Rückgabewert in eine Textdatei schreiben zu können.
Es soll also in eine Textdatei geschrieben werden ob die verschiedenen Befehle erfolgreich waren oder nicht. Die Textdatei könnte ich mir dann auf den Server kopieren lassen um auszuwerten bei welchen PCs es Probleme gab.
Aus optischen Gründen habe ich eine Progressbar mit eingebaut. Hier habe ich das Problem das diese bis Funktion durchläuft und erst anschließend erfolgen die eigentlichen Befehl. Wie muss ich das ändern damit die Befehle und die Progressbar gleichzeitig laufen?
Spoiler anzeigen
#include <GUIConstants.au3>
#include <Process.au3>
#include <file.au3>
; == GUI generated with Koda ==
$LogonKnarr = GUICreate("LogonKnarr", 295, 232, -1, -1, BitOR($WS_MINIMIZEBOX,$WS_CAPTION,$WS_GROUP,$WS_BORDER,$WS_CLIPSIBLINGS))
$Pic1 = GUICtrlCreatePic(@LogonServer & "\netlogon\Knarr-LOGO.jpg", 44, 40, 210, 100, BitOR($SS_NOTIFY,$WS_GROUP))
$Progress1 = GUICtrlCreateProgress(74, 176, 150, 17)
GUICtrlSetColor(-1, 0xB2B4BF)
$Version = GUICtrlCreateLabel("Version 0.12", 96, 200, 150, 28)
GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#NoTrayIcon
$user = @UserName ; Für Funktion myGetSID
$var = StringSplit(myGetSID($user), @TAB) ;Für Funktion myGetSID
$wait = 20; wait 20ms for next progressstep
$s = 0; progressbar-saveposition
For $i = $s To 100
$s = $i;save the current bar-position to $s
GUICtrlSetData($Progress1,$i)
Sleep($wait)
Next
If $i >100 Then
$s=0
EndIf
Opt("OnExitFunc","OnAutoItExit");"OnAutoItExit" called
Func OnAutoItExit ( )
_FileWriteLog(@LogonServer & "\netlogon\Logs\" & @ComputerName & ".txt", "Exit #" & @exitCode)
EndFunc
Func myGetSID($User=@UserName, $Host=@ComputerName, $NurEiner=True)
Local $wbemFlagReturnImmediately=0x10, $wbemFlagForwardOnly=0x20, $colItems=""
Local $JaNein[2]=[True, False], $Gesucht="", $Output, $i, $s
If $User="" Then $User=@UserName
If StringInstr($Host, "\\")=1 Then $Host=StringMid($Host, 3)
If $Host="" Then $Host="."
$NurEiner=$JaNein[$NurEiner=False]
$objWMIService=ObjGet("winmgmts:\\" &$Host &"\root\CIMV2")
If IsObj($objWMIService) Then
$colItems=$wbemFlagReturnImmediately+$wbemFlagForwardOnly
$colItems=$objWMIService.ExecQuery("SELECT * FROM Win32_AccountSID", "WQL", $colItems)
If IsObj($colItems) Then
For $objItem In $colItems
$s=$objItem.Setting
$s=StringMid($s, StringInStr($s, "SID=")+4) &@Tab
$s&=StringMid($objItem.Element, StringInStr($objItem.Element, "Name=")+5)
If StringInstr($s, Chr(34) &$User &Chr(34)) Then $Gesucht&=$s
$OutPut&=StringReplace($s, Chr(34), "") &@Cr
Next
If $NurEiner Then Return StringReplace($Gesucht, Chr(34), "")
Else
Return "Keine WMI-Objekte gefunden für Klasse: Win32_AccountSID"
Endif
Else
Return $Host &" ist nicht in diesem Netz.."
EndIf
EndFunc
While 1
If @UserName = "User1" Then _Abteilung1()
WEnd
Func _Abteilung1()
;Code für erste Funktion
_Funktion2()
EndFunc