oscarpapa
Goto Top

PowerShell script Hilfestellung

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

Printed on: April 20, 2024 at 07:04 o'clock

Member: grill-it
grill-it Oct 19, 2018 at 09:47:31 (UTC)
Goto Top
Moin,

zu Punkt 3
Versuchs mal mit
query user /server:$servername
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
Member: MarkBeaker
MarkBeaker Oct 19, 2018 updated at 14:57:01 (UTC)
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