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-Key: 337218

Url: https://administrator.de/contentid/337218

Printed on: April 25, 2024 at 22:04 o'clock

Member: Kraemer
Kraemer May 09, 2017 updated at 15:07:50 (UTC)
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 ...
Mitglied: 132895
Solution 132895 May 10, 2017 updated at 07:05:36 (UTC)
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ß