Hallo, ich bin gerade dabei ein kleines Tool zu basteln, dass mir im ersten Schritt alle angemeldeten Benutzer und Sessions Infos von verschiedenen Terminal Servern auslesen soll.
Hier habe ich aber schon ein Problem, dies richtig in eine Funktion zu bringen.
Auschnitt aus dem Code:
Spoiler anzeigen
;######### Variablen
Local $TS = "TSA,TSB,TSC,TSD" ; All TS listed with "," separated
Local $TSfile = "C:\test.log" ;Liste der TS Benutzer
Local $TSarrSize
Local $TSarr = StringSplit($TS, ",") ; The string in data will be split into an array everywhere "," is encountered
Local $PID, $Ret = ""
;######### Funktionen
;TS Liste ($TSfile) aktualisieren; Auslesen aller angemeldeten Benutzer an allen TS
Func RefreshList()
If IsArray($TSarr) Then
$TSarrSize = UBound($TSarr); get array size
For $i = 0 to $TSarrSize - 1; subtract 1 from size to prevent an out of bounds error
ConsoleWrite($TSarr[$i] & @LF)
$PID = Run("quser.exe /server:" & $TSarr[$i], '', @SW_HIDE, 0x2 + 0x4)
While 1
$Ret &= StdoutRead($PID) & StderrRead($PID)
If @error Then ExitLoop
WEnd
FileWrite($TSfile,$Ret)
Next
EndIf
EndFunc
Ich habe mehrere Server, die abgefragt werden müssen. Leider habe ich wohl ein Denkfehler in der Funktion.
Es soll die Liste der Server die oben im $TS array stehen nacheinander nach den Benutzern abgefragt werden, denke die beste und schnellste Lösung ist per quser, oder?
Dann sollen die Benutzer mit Session Info in die $TSfile eingetragen werden, wenn allerdings eine Fehlermeldung zurückkommt bzw. der Server nicht erreichbar war, soll er dieses nicht in die Datei schreiben. Bei mir schreibt er nun bei einem Server der Offline ist:
Spoiler anzeigen
{ErrorPrintf(): LoadString failed, Error 15105, (0x00003B01)}
Fehler [15105]:Im Cache des Ressourcenladeprogramms ist kein MUI-Eintrag geladen.
Fehler [1722]:Der RPC-Server ist nicht verfgbar.
Wie kann ich dies am besten lösen? Hat jemand eine bessere, einfacherre Variante diese Abfrage zu lösen?
Bin für jeden Denkanstoß dankbar!