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'
}
Please also mark the comments that contributed to the solution of the article
Content-Key: 337218
Url: https://administrator.de/contentid/337218
Printed on: April 25, 2024 at 22:04 o'clock
2 Comments
Latest comment
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*"){
#......
}