Powershell: Prüfung der Ausgabe
Hallo,
ich bin kein Powershell-Profi, und trotzdem versuche ich, ein Powershell-Skript zu schreiben. Und zwar möchte ich, dass, wenn kein Benutzer auf dem Server angemeldet ist, als Antwort "true" ausgegeben wird. Wenn kein Benutzer angemeldet ist, dann wird immer "Kein Benutzer vorhanden für * " ausgegeben.
Mein Versuch:
ich bin kein Powershell-Profi, und trotzdem versuche ich, ein Powershell-Skript zu schreiben. Und zwar möchte ich, dass, wenn kein Benutzer auf dem Server angemeldet ist, als Antwort "true" ausgegeben wird. Wenn kein Benutzer angemeldet ist, dann wird immer "Kein Benutzer vorhanden für * " ausgegeben.
Mein Versuch:
$data = query user /server:$hostname
if ($data="Kein Benutzer vorhanden für * ") {
write-host 'true'
} else
write-host 'false'
}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 337218
Url: https://administrator.de/forum/powershell-pruefung-der-ausgabe-337218.html
Ausgedruckt am: 11.04.2025 um 02:04 Uhr
2 Kommentare
Neuester Kommentar
Moin,
was heißt für dich nicht angemeldet? Keine Desktop-Anmeldung, keine TS-Anmeldung, keine SMB-Anmeldung ... ... ...? Oder alles nicht?
Gruß
PS: https://gallery.technet.microsoft.com/scriptcenter/Get-UserSessions-Pars ...
was heißt für dich nicht angemeldet? Keine Desktop-Anmeldung, keine TS-Anmeldung, keine SMB-Anmeldung ... ... ...? Oder alles nicht?
Gruß
PS: https://gallery.technet.microsoft.com/scriptcenter/Get-UserSessions-Pars ...

Wenn wir doch schon die Powershell haben dann sollten wir auch wenn möglich dessen Vorteile nutzen und nicht auf den alten Batch-Commands aufbauen 
Gruß
Function Get-LoggedOnUsers {
Param(
[Parameter(Mandatory = $True,Position = 0,ValueFromPipeline = $True)][string[]]$computers
)
Process {
ForEach ($comp in $computers) {
$processes = gwmi win32_process -computer $comp -Filter "Name = 'explorer.exe'"
ForEach ($process in $processes) {
[pscustomobject] @{"Computer"=$comp;"Domain"=($process.GetOwner()).Domain;"User"=($process.GetOwner()).User}
}
}
}
}
if (Get-LoggedOnUsers -computers "DeinServer01"){
$false
}else{
$true
}
$data="Kein Benutzer vorhanden für * "
Du solltest dir erst mal die Vergleichsoperatoren in der Referenz ansehen, = ist in Powershell ein Zuweisungsoperator kein Vergleichsoperator! Hier würde man stattdessen -eq, -like oder -match nehmen.if ($data -like "Kein Benutzer vorhanden*"){
#......
}