PowerShell script Hilfestellung

oscarpapa
Goto Top
Guten Tag Administrator-User,

ich bin auf der Suche nach Hilfestellung für eine Powershell Skript, hier mal kurz eine Beschreibung, was ich vor habe.
Wir müssen nach einem "MS Patch Day" entsprechend getestete Patches auf eine größere Anzahl an Servern in eine virtuellen Environment neustarten, vorher aber sicherstellen, ob noch jemand auf den Servern eingeloggt ist, und ob evtl. noch Patches bei der automatischen installation fehlgeschlagen sind.

was ich bisher habe

$server = Get-Content "C:\serverliste.txt"
$credential = Get-Credential domäne\adminaccount
Restart-Computer -ComputerName $server -force -credential $credential

1. es sollen die DNS Namen aus der Datei "C:\serverliste.txt" gelesen werden > funktioniert
2. es sollen admin credentials abgefragt werden > funktioniert
3. anzeigen, welche User noch auf dem Server eingeloggt sind > fehlt
4. anzeigen, ob Updates "failed" sind > fehlt
5. Fragen, ob der Server neu gestartet werden soll, Antwort mit [Y] [N]
6. wenn neustart mit [Y] warten bis der Server wieder "up" ist und dieses entsprechend ausgeben, mit zB "server up and running again"
7. dann zum nächsten server in der serverliste.txt springen und wieder bei 3. weitermachen,
solange bist die serverliste.txt komplett abgearbeitet ist

wer kann mir da mal helfen, bzw. hat sowas in der Art, was ich nutzen könnte?

vielen dank und schonmal ein schönes Wochenende.

Content-Key: 390103

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

Ausgedruckt am: 16.05.2022 um 21:05 Uhr

Mitglied: grill-it
grill-it 19.10.2018 um 11:47:31 Uhr
Goto Top
Moin,

zu Punkt 3
Versuchs mal mit
Das dürfte dir die gewünschten ergebnisse bringen. inkl. Leerlauf zeit des Users

Ansonsten im Script schöne schleifchen basteln. solltest du ja hinbekommen.

das Server UP liese sich per Ping lesen oder abfrage eines bestimmten Prozesses ob der wieder läuft..

LG, Manu
Mitglied: MarkBeaker
MarkBeaker 19.10.2018 aktualisiert um 16:57:01 Uhr
Goto Top
Hallo,

zu Punkt 4:
hab ich mal dies verwenden können,
leider find ich mein Script nicht mehr.
Ich konnte damit die WSUS Clients überwachen vie PS

LINK

zu Punkt 6:
könnte so funktionieren, ungetestet:

foreach ($host in $server) {
while ( (get-service -Name lanmanserver -ComputerName $host).Status -ne "Running" ) {
"Waiting for $server ..."
Start-Sleep -Seconds 10
}
"$server is up and alive again!"
}

Gruß
Christian