Hallo, ich möchte gerne mit "ProcessList()" Prozesse auf einem Server abfragen.
ProcessList() geht aber nur für lokale Systeme.
Geht das auch Remote ?
Processlist remote abfragen
-
- [ offen ]
-
wolkenloser -
22. Februar 2012 um 13:42 -
Geschlossen -
Erledigt
-
-
Hallo,
per Console geht es.
TASKLIST /S System /U Benutzername /P Kennwort /FO TABLE /NH
So Vielleicht? Kanns leider nicht testen, habe zurzeit keinen Zugriff auf einen Server oder anderen Rechner.
Spoiler anzeigen
[autoit]$ip = inputbox("IP"," Ipadresse:")
[/autoit]
$user = inputbox("Username:", "domäne\user")
$pass = inputbox("Passwort", "Passwort:", "", "*")
Run(@ComSpec & " /k " & "tasklist /S \\"& $ip & "/U" & $user & "/P" & $pass & "/FO /NH", '', @SW_SHOW)Wenn ich mich Irre bitte berichtigen.
-
oder "PSLIST" aus den Sysinternal-Tools - Jetzt MS....
oder wahrscheinlich auch mit WMI, wobei ich auf die schnelle kein Beispiel habe.
-
WMI Beispiel
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
; Generated by AutoIt Scriptomatic June 08, 2010$wbemFlagReturnImmediately = 0x10
[/autoit] [autoit][/autoit] [autoit]
$wbemFlagForwardOnly = 0x20
$colItems = ""
$strComputer = "localhost"$Output=""
[/autoit] [autoit][/autoit] [autoit]
$Output &= "Computer: " & $strComputer & @CRLF
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Product", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)If IsObj($colItems) then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $objItem In $colItems
$Output &= "Caption: " & $objItem.Caption & @CRLF
$Output &= "Description: " & $objItem.Description & @CRLF
$Output &= "IdentifyingNumber: " & $objItem.IdentifyingNumber & @CRLF
$Output &= "InstallDate: " & $objItem.InstallDate & @CRLF
$Output &= "InstallDate2: " & WMIDateStringToDate($objItem.InstallDate2) & @CRLF
$Output &= "InstallLocation: " & $objItem.InstallLocation & @CRLF
$Output &= "InstallState: " & $objItem.InstallState & @CRLF
$Output &= "Name: " & $objItem.Name & @CRLF
$Output &= "PackageCache: " & $objItem.PackageCache & @CRLF
$Output &= "SKUNumber: " & $objItem.SKUNumber & @CRLF
$Output &= "Vendor: " & $objItem.Vendor & @CRLF
$Output &= "Version: " & $objItem.Version & @CRLF
Next
ConsoleWrite($Output)
FileWrite(@TempDir & "\Win32_Product.TXT", $Output )
Run(@Comspec & " /c start " & @TempDir & "\Win32_Product.TXT" )
Else
Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_Product" )
EndifFunc WMIDateStringToDate($dtmDate)
[/autoit] [autoit][/autoit] [autoit]Return (StringMid($dtmDate, 5, 2) & "/" & _
[/autoit]
StringMid($dtmDate, 7, 2) & "/" & StringLeft($dtmDate, 4) _
& " " & StringMid($dtmDate, 9, 2) & ":" & StringMid($dtmDate, 11, 2) & ":" & StringMid($dtmDate,13, 2))
EndFuncIch würde es aber über die Systerminals machen mit PSINFO und PS SERVICE in verbindung mit Autoit oder einer Batch Datei
Ungetestetes Beispiel für die Autoit VersionSpoiler anzeigen
[autoit]
[/autoit]
$RemoteSVC = True ; starte den Remote Service, dieser wird gebraucht um die Software auszulesen
$strComputer = "localhost"
$strUser = "Administrator"
$strService = "Remote-Registrierung"
$strPasswort = "AdminPW"
$strOutput = 'SoftwareListe ' &$strComputer
If $RemoteSVC Then ShellExecuteWait('PsService.exe','\\'& $strComputer & ' -u ' & $strComputer & '\' & $strUser &' -p '& $strPasswort & ' start ' & $strService)
ShellExecuteWait('PsInfo.exe','\\' & $strComputer & '/s > '$strOutput)
MsgBox(64,"Fertig","Softwareliste von Computer erstellt")
ExitGruß Marvin
-
@Protex hast du das remote hinbekommen? Hatte das gleiche WMI Script gestern schonmal aber hat remote nicht funktioniert.
-
Hallo,
per Console geht es.
TASKLIST /S System /U Benutzername /P Kennwort /FO TABLE /NH
So Vielleicht? Kanns leider nicht testen, habe zurzeit keinen Zugriff auf einen Server oder anderen Rechner.
Spoiler anzeigen
[autoit]$ip = inputbox("IP"," Ipadresse:")
[/autoit]
$user = inputbox("Username:", "domäne\user")
$pass = inputbox("Passwort", "Passwort:", "", "*")
Run(@ComSpec & " /k " & "tasklist /S \\"& $ip & "/U" & $user & "/P" & $pass & "/FO /NH", '', @SW_SHOW)Wenn ich mich Irre bitte berichtigen.
Gernau das mit der Console habe ich ja auch schon ausprobiert,
allerdings werte ich Tasklist mit einem Angehängten |find "Processname /C aus.Das liefert dann als Rückgabe die Anzahl der abgefragten Prozesse und genau die brauche ich um sie in Autoit weiterzuverarbeiten)
Wie gesagt Autoit - PROCESSLIST liefert genau das was ich brauche.... -
Wofür poste ich meine Beispiele überhaupt wenn du sie dir scheinbar nicht mal anschaust, ich habe dir doch 2 Lösungen gepostet...
Gruß Marvin
-
Aus Scriptomatic "herauskopieren" hätte ich auch noch fix geschafft !
Nur fehlt diesem Script eine saubere Authentifizierung mit Username & Passwort für eine Remote-Nutzung.
In dieser Standardversion wird es wenn dann nur Local, in der Domäne oder bei gleichem benutzernamen/Passwort funktionieren.
-
Micha_he jep ist richtig, habe ich etwas falsch verstanden oder soll dieses Forum nicht auch zum eigenen Denken anregen? und nicht dazu eine fertige Lösung zu präsentieren, wenn doch sollte dieses Thread wohl in Scripte (ohne Gegenleistung)... und noch was, in einer DomainenStrucktur läuft es, also wo liegt dass Problem? remote Rechner abzufragen macht man eigentlich nur in Firmen, und dort hat man zu 95% eine Domäne und somit ist dieses Script auch zu gebrauchen.. & es ist kein Hexenwerk das ganze umzuschreiben.. also ein bisschen eigeninitiative kann man schon erwarten..
Gruß Marvin
-
Wofür poste ich meine Beispiele überhaupt wenn du sie dir scheinbar nicht mal anschaust, ich habe dir doch 2 Lösungen gepostet...
Gruß Marvin
Hi Marvin,
sorry ich habe das wirklich übersehen , das sieht schon mal gut aus.PS:
Das mit dem denken krieg ich schon hin