h41msh1c0r
Goto Top

Powershell Service nicht verfügbar

Servus,

Hier ein Beispiel für die Prüfung ob der Dienst installiert ist oder nicht.
$service = Get-Service -name iisadmin
 if ( ! $service ) { "IIS is not installed on this computer." }   
 else 
 { "SQL Server is " + $service.Status }  

Hier aus meinem Script
$BlsRS  = Invoke-Command -ComputerName $Serv -ScriptBlock { $Service = Get-Service -DisplayName "Service1" -ErrorAction SilentlyContinue    
                                                                         if ( ! $Service ) { "NA" }   
                                                                        }

Er stellt schon fest das der Service nicht vorhanden ist und gibt mir allerdings nix aus.

VolDFree              : 0,00
FSAUA                 : Running
TftfS                 : Running
CoreS                 : Running
BlsRS                 : >>>>  <<<<<   <--- da müsste NA , wenn der Dienst nicht installiert ist
FSWUI                 : Running

Gibt es bei Invoke-Command diesbezüglich noch etwas zu beachten?

VG

EDIT:
Oder ist es besser im Scriptblock noch ein try-catch einzubauen und dann den Fehler dort im Catch abzufangen?

EDIT2:
try{
Get-Service -DisplayName "Service1" -ErrorAction SilentlyContinue   
}
catch [System.Management.Automation.RemoteException]{
"NA"  
}

Liefert auch kein Ergebnis. ;(

Content-Key: 348762

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

Printed on: May 5, 2024 at 04:05 o'clock

Mitglied: 133883
133883 Sep 14, 2017 updated at 11:50:46 (UTC)
Goto Top
Der Try-Catch funktioniert nur wenn im Aktionsteil -ErrorAction Stop festgelegt wird denn sonst wird keine Exception getriggert und er springt nicht in den Exception Teil.

Gruß
Member: H41mSh1C0R
H41mSh1C0R Sep 14, 2017 at 12:38:30 (UTC)
Goto Top
hi,
bitte nicht hauen ^^.

    $Dienst= Invoke-Command -ComputerName $Server -ScriptBlock { $Service = Get-Service -DisplayName "Service1" -ErrorAction SilentlyContinue    
                                                                         if ( ! $Service ) { "NA" } }  
    if ( $Dienst -eq "NA" ) { $global:table.Rows[$selectedRow][3] = "NA"} else { $global:table.Rows[$selectedRow][3] = $($Dienst).Status}  

So bekomme ich am Ende in der DGV mein NA in die Zelle. Ist zwar denke etwas von hinten durch die Brust durchs Auge, aber das try catch innerhalb des invoke Command wollte nicht so wie es sollte.


Setze ich die ErrorAction auf Stop und setze im Catch Block einen Text bekomme ich den nicht in die Variable $Dienst.
Denke weil nur lokal nutzbar?

vg
Mitglied: 133883
Solution 133883 Sep 14, 2017 at 13:24:15 (UTC)
Goto Top
Zitat von @H41mSh1C0R:
Setze ich die ErrorAction auf Stop und setze im Catch Block einen Text bekomme ich den nicht in die Variable $Dienst.
Denke weil nur lokal nutzbar?
Doch return nutzen, funktioniert hier einwandfrei. Du setzt vermutlich den falschen Exception Typ lass ihn weg.