20 Computer zeitgleich mittels GPO Script herunterfahren
Salute allerseits
Folgendes Szenario: 20 Labor PC's (AllinOne PC), diese sollen mittes GPO um 20:30 MO-SA heruntergefahren werden, da diese öfters vergessen werden herunterzufahren.
Wie kann ich das auf einfache Art und Weise machen? Ich möchte das AD GPO nutzen, und es sollen auch nur diese Geräte heruntergefahren werden und keine anderen.
Folgendes Szenario: 20 Labor PC's (AllinOne PC), diese sollen mittes GPO um 20:30 MO-SA heruntergefahren werden, da diese öfters vergessen werden herunterzufahren.
Wie kann ich das auf einfache Art und Weise machen? Ich möchte das AD GPO nutzen, und es sollen auch nur diese Geräte heruntergefahren werden und keine anderen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 430333
Url: https://administrator.de/contentid/430333
Ausgedruckt am: 24.11.2024 um 08:11 Uhr
9 Kommentare
Neuester Kommentar
Ausführen:
shutdown.exe /s /f
Hallo,
Ich mache das nicht per GPO, sondern mit einem PS und der Aufgabenplanung, so kann man auch eine Warnmeldung angeben, sollte jemand noch angemeldet sein. Die Labor PCs sollten der Einfachheit halber natürlich in einer OU sein.
LG Martin
Ich mache das nicht per GPO, sondern mit einem PS und der Aufgabenplanung, so kann man auch eine Warnmeldung angeben, sollte jemand noch angemeldet sein. Die Labor PCs sollten der Einfachheit halber natürlich in einer OU sein.
<#
Skript testet, ob Domain-Clients online sind, sendet Warnmeldung für Shutdown an angemeldetet Benutzer*Innen und fährt den jeweiligen Rechner herunter. Eventuell angemeldete Benutzer werden gegebenenfalls abgemeldet. Sollte dieses Vorgehen nicht gewünscht sein, den Parameter "Force" entfernen.
#>
### ErrorAction für Skript festelegen
$ErrorActionPreference = 'SilentlyContinue'
### Abfrage, ob Clients online sind
Write-Host "Abfrage nach Clients, die gegenwärtig online sind." -ForegroundColor Green
$Clients = (Get-ADComputer -SearchBase "OU=XY,DC=XY,DC=XY" -Filter *).Name # + (Get-ADComputer -SearchBase "OU=XY,DC=XY,DC=XY" -Filter *).Name für weitere OUs
$Client_Online = @()
$Clients | ForEach {if ((Test-Connection -ComputerName $_ -Quiet -Count 1) -eq 'True') {$Client_Online += $_}}
### Warnmeldung Clients online
Write-Host "Gebe Warnmeldung für Shutdown auf Clients aus." -ForegroundColor Green
$Client_Online | Foreach-Object {Invoke-Command -ComputerName "$_" {msg * "Der Computer wird in 10 Minuten automatisch heruntergefahren. Bitte geöffnete Dokumente speichern!"}}
### Zehn Minuten pausieren vor Shutdown
Start-Sleep -Seconds 600
### Online Clients herunterfahren
Write-Host "Fahre alle Clients, die gegenwärtig online sind, herunter." -ForegroundColor Green
$Client_Online | ForEach-Object {Stop-Computer -ComputerName $_ -Force}
Exit
LG Martin
Moin,
Gruß
Zitat von @wisebeer:
Ich mache das nicht per GPO, sondern mit einem PS und der Aufgabenplanung, so kann man auch eine Warnmeldung angeben, sollte jemand noch angemeldet sein.
und warum machst du das nicht einfach per shutdown? Hat noch den smarten Vorteil, dass das Ganze sauber in den Eventlogs auftaucht...Ich mache das nicht per GPO, sondern mit einem PS und der Aufgabenplanung, so kann man auch eine Warnmeldung angeben, sollte jemand noch angemeldet sein.
Gruß
ja gut - shutdown ist immer noch besser.
1. Scripte die einfach nur warten sind Fehleranfällig
2. Machst du in deinem Script viel unnötiges
imho richtig:
Computer aus dem AD ziehen - for-each durchlaufen - prüfen ob online - shutdown abfeuern.
Vorteile:
Die Clients warten - nicht der Server
Das Script läuft nicht vor die Wand, wenn in der LANGEN Zwischenzeit ein Rechner herunter gefahren wurde
Ein Rechner ist nicht in einem undefinierten Zustand (Neustart während deiner Wartezeit)
Gruß
deshalb wollte ich das einfach vom Server starten
das kannst du mit shutdownund die Logs zentral haben.
da ändert sich nichtsIm Eventlog auf dem Client ist der Shutdown Befehl ja trotzdem, auch wenn er remote kommt.
jepp - nur in deinem Fall ohne Grund1. Scripte die einfach nur warten sind Fehleranfällig
2. Machst du in deinem Script viel unnötiges
imho richtig:
Computer aus dem AD ziehen - for-each durchlaufen - prüfen ob online - shutdown abfeuern.
Vorteile:
Die Clients warten - nicht der Server
Das Script läuft nicht vor die Wand, wenn in der LANGEN Zwischenzeit ein Rechner herunter gefahren wurde
Ein Rechner ist nicht in einem undefinierten Zustand (Neustart während deiner Wartezeit)
Gruß