honeybee
Goto Top

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:

$data = query user /server:$hostname
if ($data="Kein Benutzer vorhanden für * ") {  
   write-host 'true'  
   } else
   write-host 'false'  
   }

Content-ID: 337218

Url: https://administrator.de/forum/powershell-pruefung-der-ausgabe-337218.html

Ausgedruckt am: 11.04.2025 um 02:04 Uhr

Kraemer
Kraemer 09.05.2017 aktualisiert um 17:07:50 Uhr
Goto Top
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 ...
132895
Lösung 132895 10.05.2017 aktualisiert um 09:05:36 Uhr
Goto Top
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 face-wink
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*"){
  #......
}
Gruß