Powershell Get-Service
Guten Morgen,
ich bin etwas unbeholfen bei dieser Aufgabe.
Es soll ueberprueft werden, ob alle Dienste die vom Start-Typ „Automatisch“ sind, auch laufen. Falls einer dieser Dienste derzeit nicht laeuft, ist im naechsten Schritt zu ueberpruefen,
wann dieser seit dem letzten Systemstart zuletzt ausgefuehrt wurde. Diese Informationen sind in einer Tabelle wie folgt auszugeben:
Dienstname Start-Typ Status Zuletzt ausgefuehrt
Mein Problem liegt bei dem "Zuletzt ausgefuehrt".
Das was ich bis jetzt schon für mein Skript habe ist:
$Service = get-wmiobject win32_service -Filter "Startmode='Auto' " | Select-object Name, Startmode,State
$Service |Convertto-html | Set-Content C:\Ausgabe\Dienste.html
& C:\Ausgabe\Dienste.html
Meine Überlegung ist es halt dort sowas hinzupacken:
if $service.state = stopped
then (zeige mir das Datum an, andem es zuletzt ausgefuehrt wurde)
ich bin etwas unbeholfen bei dieser Aufgabe.
Es soll ueberprueft werden, ob alle Dienste die vom Start-Typ „Automatisch“ sind, auch laufen. Falls einer dieser Dienste derzeit nicht laeuft, ist im naechsten Schritt zu ueberpruefen,
wann dieser seit dem letzten Systemstart zuletzt ausgefuehrt wurde. Diese Informationen sind in einer Tabelle wie folgt auszugeben:
Dienstname Start-Typ Status Zuletzt ausgefuehrt
Mein Problem liegt bei dem "Zuletzt ausgefuehrt".
Das was ich bis jetzt schon für mein Skript habe ist:
$Service = get-wmiobject win32_service -Filter "Startmode='Auto' " | Select-object Name, Startmode,State
$Service |Convertto-html | Set-Content C:\Ausgabe\Dienste.html
& C:\Ausgabe\Dienste.html
Meine Überlegung ist es halt dort sowas hinzupacken:
if $service.state = stopped
then (zeige mir das Datum an, andem es zuletzt ausgefuehrt wurde)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 220768
Url: https://administrator.de/forum/powershell-get-service-220768.html
Ausgedruckt am: 06.05.2025 um 17:05 Uhr
4 Kommentare
Neuester Kommentar
Hallo Nutzer2013,
eine solche Eigenschaft "Zuletzt ausgefuehrt" gibt es leider nicht, aber was du machen könntest wäre das System-EventLog zu überprüfen wann ein bestimmter Dienst beendet wurde - und zwar so:
(Achtung: Das Script ist für ein deutsches System ausgelegt, EventLogs in deutscher Ausgabe)
Zu beachten ist das das obige Script, je nachdem wie groß die EventLogs sind, einige Zeit benötigt um die EventLogs auszuwerten. Außerdem sind nur Dienste berücksichtigt welche nur mit einem anderen ExitCode als 0 beendet wurden (also Fehlerhaft), es ist nämlich normal das sich einige Dienste die automatisch starten nach einiger Zeit selber beenden.
Grüße Uwe
eine solche Eigenschaft "Zuletzt ausgefuehrt" gibt es leider nicht, aber was du machen könntest wäre das System-EventLog zu überprüfen wann ein bestimmter Dienst beendet wurde - und zwar so:
(Achtung: Das Script ist für ein deutsches System ausgelegt, EventLogs in deutscher Ausgabe)
$stoppedServices = get-wmiobject win32_service -Filter "Startmode='Auto' and State='Stopped' and ExitCode <> 0 "
$arrServices = @()
foreach ($service in $stoppedServices){
$sName = $service.Name
$timeStopped = (Get-EventLog -LogName System | ?{$_.EventID -eq 7036 -and $_.Message -match "$sName.*?Beendet"}| Sort-Object -Descending -Property TimeWritten| select -First 1).TimeWritten
echo "Service: $sName stopped at $timeStopped"
$arrServices += $service| select Name,StartMode,State,@{Name="LastStopped";Expression={$timeStopped}},ExitCode
}
$arrServices| Convertto-HTML | Set-Content "C:\Ausgabe\Dienste.html" -Force
Grüße Uwe