PCs automatisch abschalten - Servergesteuert
Clients über Serverseitige Policy herunterfahren
Hallo Zusammen,
Ich bin auf der Suche nach einer Gruppenrichtlinie für Windows Server 2003, mit der ich PCs (Windows XP Clients) zu einer bestimmten Uhrzeit herunterfahren kann. Weiß jemand etwas und kann mir weiterhelfen?
Hallo Zusammen,
Ich bin auf der Suche nach einer Gruppenrichtlinie für Windows Server 2003, mit der ich PCs (Windows XP Clients) zu einer bestimmten Uhrzeit herunterfahren kann. Weiß jemand etwas und kann mir weiterhelfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 87990
Url: https://administrator.de/contentid/87990
Ausgedruckt am: 22.11.2024 um 21:11 Uhr
21 Kommentare
Neuester Kommentar
Ich bin auf der Suche nach einer Gruppenrichtlinie für Windows Server 2003, mit der ich PCs (Windows XP Clients) zu einer bestimmten Uhrzeit herunterfahren kann.
Eine Gruppenrichtlinie wüßte ich da nicht, aber wie wäre es mit einer Batchdatei nach dem Muster
shutdown -f -s -m \\Computername
die Du auf dem Server als geplanten Task einrichtest?
Gehe mal auf mein Tutorial hier im Forum : Benutzerdefinierten Task für Taskplaner per GPO verteilen (mit erweiterten Einstellungen)
Die GPO kopiert einen Eintrag in den lokalen Taskplaner der Clients die dann zum angegebenen Zeitpunkt herunterfahren. Mit dieser Lösung fahren die Rechner nur herunter wenn vorher der Rechner 1 Stunde idle war. Das kannst du aber mit dem Shutdown-Befehl anpassen, und z.B noch eine Meldung an den Rechner schicken das der jetzt gleich herunterfährt, so der Benutzer falls er noch am PC sitzt die Möglichkeit hat das ausschalten abzubrechen (Befehl shutdown /a).
Ich denke das sollte deine Lösung sein ....
Uwe
Die GPO kopiert einen Eintrag in den lokalen Taskplaner der Clients die dann zum angegebenen Zeitpunkt herunterfahren. Mit dieser Lösung fahren die Rechner nur herunter wenn vorher der Rechner 1 Stunde idle war. Das kannst du aber mit dem Shutdown-Befehl anpassen, und z.B noch eine Meldung an den Rechner schicken das der jetzt gleich herunterfährt, so der Benutzer falls er noch am PC sitzt die Möglichkeit hat das ausschalten abzubrechen (Befehl shutdown /a).
Ich denke das sollte deine Lösung sein ....
Uwe
Hallo,
ich muss SarekHL recht geben und würde auch mit dem shutdown Befehl arbeiten.
viel Skripten ist dafür nicht wirklich nötig.
einfach eine Batch-Datei erstellen die alle Rechner enthält die in der OU enthalten sind. Diese Datei dann für die Gewünschte Uhrzeit in den Tastmanager des Servers legen und gut ist.
Der Server wird die Datei dann ausführen und alle Rechner runterfahren.
Wenn man sich dann alles noch in eine log Datei schreiben läßt kann man sogar noch nachvollziehen, welche Rechner runtergefahren wurden, und welche er nicht finden konnte.
Die Rechner die aus sind, die bleiben auch aus und auf die hat dieser Befehl keine Wirkung.
Was ich nicht weiß ist, ob man den Shutdown Befehl so umstellen kann das er eine OU runterfährt ohne das ich alle Rechner einzelnd ansteuern muss.
Gruß
Micha
ich muss SarekHL recht geben und würde auch mit dem shutdown Befehl arbeiten.
viel Skripten ist dafür nicht wirklich nötig.
einfach eine Batch-Datei erstellen die alle Rechner enthält die in der OU enthalten sind. Diese Datei dann für die Gewünschte Uhrzeit in den Tastmanager des Servers legen und gut ist.
Der Server wird die Datei dann ausführen und alle Rechner runterfahren.
Wenn man sich dann alles noch in eine log Datei schreiben läßt kann man sogar noch nachvollziehen, welche Rechner runtergefahren wurden, und welche er nicht finden konnte.
Die Rechner die aus sind, die bleiben auch aus und auf die hat dieser Befehl keine Wirkung.
Was ich nicht weiß ist, ob man den Shutdown Befehl so umstellen kann das er eine OU runterfährt ohne das ich alle Rechner einzelnd ansteuern muss.
Gruß
Micha
Servus,
Von Sysinternals - um nicht zu sagen Microsoft - gibt es ein nettes Tool - das nennt sich...
*Tadaaa* - wer hätte es gedacht PSEXEC
Das würde ich auf einem Server installieren (kopieren) - und auf dem Server ein Skript schreiben, dass er die ausgewählten Clients per Taskplaner herunterfährt.
Von Sysinternals - um nicht zu sagen Microsoft - gibt es ein nettes Tool - das nennt sich...
*Tadaaa* - wer hätte es gedacht PSEXEC
Das würde ich auf einem Server installieren (kopieren) - und auf dem Server ein Skript schreiben, dass er die ausgewählten Clients per Taskplaner herunterfährt.
Servus,
Von Sysinternals - um nicht zu sagen
Microsoft - gibt es ein nettes Tool - das
nennt sich...
*Tadaaa* - wer hätte es gedacht
[http://www.technet.microsoft.com/en-us/sysinternals/bb897553.aspx
PSEXEC]
Das würde ich auf einem Server
installieren (kopieren) - und auf dem Server
ein Skript schreiben, dass er die
ausgewählten Clients per Taskplaner
herunterfährt.
Von Sysinternals - um nicht zu sagen
Microsoft - gibt es ein nettes Tool - das
nennt sich...
*Tadaaa* - wer hätte es gedacht
[http://www.technet.microsoft.com/en-us/sysinternals/bb897553.aspx
PSEXEC]
Das würde ich auf einem Server
installieren (kopieren) - und auf dem Server
ein Skript schreiben, dass er die
ausgewählten Clients per Taskplaner
herunterfährt.
dann aber direkt mit psshutdown aus der gleichen Suite mit folgendem Befehl:
psshutdown.exe -k -c -t 60 -m "Rechner wird laut Policy nun heruntergefahren!" \\[RECHNER-NAME]
mit der Option "-c" hat ein Benutzer falls er noch am PC sitzt, die Möglichkeit den Shutdown abzubrechen und so genug Zeit seine Arbeit zu speichern.
obiger Link geht leider nicht, hier der korrekte : PSTools
Habe hier mal ein VBS-Script erstellt das alle Rechner in einer OU zusammenstellt und dann jeden Rechner in dieser herunterfährt:
Das Script in den Taskplaner des Servers mit den Rechten eines Domänen-Admins ausführen lassen der auf den Clients Admin Rechte hat.
Die OU und die Domäne musst du natürlich an deine Gegebenheiten anpassen...
Das Script in den Taskplaner des Servers mit den Rechten eines Domänen-Admins ausführen lassen der auf den Clients Admin Rechte hat.
Die OU und die Domäne musst du natürlich an deine Gegebenheiten anpassen...
Set colItems = GetObject("LDAP://ou=FirmenComputer, dc=testlab, dc=de")
set objShell = CreateObject("Wscript.Shell")
colItems.Filter = Array("Computer")
For each objItem in colItems
sdcommand = "shutdown /s /t 60 /m \\" & objItem.CN
objShell.Run sdcommand
Next
Das ist keine Lösung per Gruppenrichtlinienobjekt sondern ein Task auf dem Server !!
Kopiere den Inhalt des Scripts in eine Datei mit der Endung *.vbs, passe es deinen Gegebenheiten an und dann legst einen Task auf dem Server mit diesem Script an und lässt das zur angegebenen Zeit ausführen. Das Script sucht per "ADSI" im Active Directory nach PC-Objekten in der angegebenen Organizational Unit und sendet per Shell-Befehl eine Shutdown Sequenz jeden Rechner der sich in der OU befindet.
Normalerweise haben Benutzer die der Gruppe "Domänen Admins" angehören auf allen Clients Lokale Adminrechte, so das die Angabe eines Benutzers der dieser Gruppe angehört für die Ausführung des Tasks ausreichend ist.
Kopiere den Inhalt des Scripts in eine Datei mit der Endung *.vbs, passe es deinen Gegebenheiten an und dann legst einen Task auf dem Server mit diesem Script an und lässt das zur angegebenen Zeit ausführen. Das Script sucht per "ADSI" im Active Directory nach PC-Objekten in der angegebenen Organizational Unit und sendet per Shell-Befehl eine Shutdown Sequenz jeden Rechner der sich in der OU befindet.
Normalerweise haben Benutzer die der Gruppe "Domänen Admins" angehören auf allen Clients Lokale Adminrechte, so das die Angabe eines Benutzers der dieser Gruppe angehört für die Ausführung des Tasks ausreichend ist.
Du hast wahrscheinlich die angaben der Domäne falsch abgeändert ErrorCode: 0x80072030L LDAP_NO_SUCH_OBJECT ERROR_DS_NO_SUCH_OBJECT Object does not exist. -- wenn hier etwas nicht stimmt findet das Script das Objekt im ActiveDirectory nicht:
Wenn die Bezeichnung der OU Sonderzeichen wie z.B. (,+"\<>;= ) enthält musst du dem Zeichen einen Backslash voranstellen.
Wenn du damit nicht zurecht kommst schreib mir deine Daten (OU ,Domäne ,etc) und ich passe Dir das Script an deine Umgebung an ....
Uwe
- Set colItems = GetObject("LDAP://ou=OrganizationalUnit, dc=testlab, dc=de")
Wenn die Bezeichnung der OU Sonderzeichen wie z.B. (,+"\<>;= ) enthält musst du dem Zeichen einen Backslash voranstellen.
Wenn du damit nicht zurecht kommst schreib mir deine Daten (OU ,Domäne ,etc) und ich passe Dir das Script an deine Umgebung an ....
Uwe
Wenn die Computer-Accounts in einer Gruppe im Active Directory liegen musst du das Script wie folgt ändern: (und wieder daran denken die DOMÄNE im Abschnitt GetObject anzupassen)
Set WshNetwork = WScript.CreateObject("WScript.Network")
strServerName = WshNetwork.ComputerName
Set objGruppe = GetObject("LDAP://cn=shutdown, OU=Groups, OU=Verwaltung, dc=DOMÄNE, dc=TLD")
set objShell = CreateObject("Wscript.Shell")
objGruppe.GetInfo
members = objGruppe.GetEx("member")
for each strMember in members
Set oMember = GetObject("LDAP://" & strServerName & "/" & strMember)
classArray = oMember.objectClass
if (classArray(UBound(classArray)) = "computer") Then
sdcommand = "shutdown /s /t 60 /m \\" & oMember.CN
objShell.Run sdcommand
end if
next
OK, wenn du noch nie so richtig gescriptet hast verstehe ich deine Probleme, wusste ich leider nicht.
Was du aber vorhast geht so wie du dir das vorstellst nicht. Du möchtest Rechner einer bestimmten OU herunterfahren -> OK aber warum möchtest du das dann bestimmten Usern zuordnen, das will mir nicht in die Birne. Ich denke es geht primär darum Strom zu sparen wenn am Abend jemand vergessen hat seinen PC auszuschalten, oder verstehe ich dich da falsch !?
Das obige Script macht folgendes:
Mit CN=xxx wird ein bestimmtes Objekt im AD angesprochenorganizational units mit OU und die Domänen suffixe eben mit DC. Das script legt damit ein Objekt an womit auf dessen Eigenschaften in dem Fall die Gruppe zugegriffen werden kann. Eine Eigenschaft sind eben die Mitglieder dieser Gruppe. Da diese als Array zurückgegeben werden (mehrere Mitglieder) holt sich das script zu jedem Mitglied eine Referenz zu diesem aus dem AD und überprüft ob es sich bei dem Mitgliedsobjekt um ein Computeraccount handelt, denn User lassen sich schlecht herunterfahren (höchstens mit nem schlag auf die Birne). Wenn es sich um einen PC handelt wird der Name dessen an den Shutdown-Befehl übergeben und heruntergefahren.
Du versuchst wahrscheinlich das ganze als GPO-Objekt zu verwirklichen was aber mit dieser Methode nicht beabsichtigt ist. Da du anfangs gesagt hattest das du PC's einer bestimmten OU runterzu.... Geht das mit diesem Script elegangt weil es sich die Infos aus dem AD holt und du somit keine zweite Liste der Rechner die du runterdengeln willst führen musst. ALSO KEIN GPO OBJEKT ANLEGEN SONDERN TASKPLANER STARTEN , NEUEN TASK ANLEGEN(AUF DEM SERVER NICHT AUF DEN CLIENTS).
Ich lege dir ans Herz dich dringend mal mit dem Scripting auseinander zu setzen, denn als Admin wirst du an jeder Ecke darauf stossen, zumindest wenn dir jemand mal ne Aufgabe stellt die sich eben nicht mit Mausschubbsen erledigen lässt.
Falls noch Fragen sind bitte als private message an mich, dann müllen wir hier den post nicht so zu...
Grüße ... und koch nicht zu viel Kaffee für die lieben Kollegen
Uwe
Was du aber vorhast geht so wie du dir das vorstellst nicht. Du möchtest Rechner einer bestimmten OU herunterfahren -> OK aber warum möchtest du das dann bestimmten Usern zuordnen, das will mir nicht in die Birne. Ich denke es geht primär darum Strom zu sparen wenn am Abend jemand vergessen hat seinen PC auszuschalten, oder verstehe ich dich da falsch !?
Das obige Script macht folgendes:
Mit CN=xxx wird ein bestimmtes Objekt im AD angesprochenorganizational units mit OU und die Domänen suffixe eben mit DC. Das script legt damit ein Objekt an womit auf dessen Eigenschaften in dem Fall die Gruppe zugegriffen werden kann. Eine Eigenschaft sind eben die Mitglieder dieser Gruppe. Da diese als Array zurückgegeben werden (mehrere Mitglieder) holt sich das script zu jedem Mitglied eine Referenz zu diesem aus dem AD und überprüft ob es sich bei dem Mitgliedsobjekt um ein Computeraccount handelt, denn User lassen sich schlecht herunterfahren (höchstens mit nem schlag auf die Birne). Wenn es sich um einen PC handelt wird der Name dessen an den Shutdown-Befehl übergeben und heruntergefahren.
Du versuchst wahrscheinlich das ganze als GPO-Objekt zu verwirklichen was aber mit dieser Methode nicht beabsichtigt ist. Da du anfangs gesagt hattest das du PC's einer bestimmten OU runterzu.... Geht das mit diesem Script elegangt weil es sich die Infos aus dem AD holt und du somit keine zweite Liste der Rechner die du runterdengeln willst führen musst. ALSO KEIN GPO OBJEKT ANLEGEN SONDERN TASKPLANER STARTEN , NEUEN TASK ANLEGEN(AUF DEM SERVER NICHT AUF DEN CLIENTS).
Ich lege dir ans Herz dich dringend mal mit dem Scripting auseinander zu setzen, denn als Admin wirst du an jeder Ecke darauf stossen, zumindest wenn dir jemand mal ne Aufgabe stellt die sich eben nicht mit Mausschubbsen erledigen lässt.
Falls noch Fragen sind bitte als private message an mich, dann müllen wir hier den post nicht so zu...
Grüße ... und koch nicht zu viel Kaffee für die lieben Kollegen
Uwe
Zitat von @colinardo:
mit der Option "-c" hat ein Benutzer falls er noch am PC sitzt, die Möglichkeit den Shutdown abzubrechen und so
genug Zeit seine Arbeit zu speichern.
obiger Link geht leider nicht, hier der korrekte : PSTools
mit der Option "-c" hat ein Benutzer falls er noch am PC sitzt, die Möglichkeit den Shutdown abzubrechen und so
genug Zeit seine Arbeit zu speichern.
obiger Link geht leider nicht, hier der korrekte : PSTools
Hallo,
nur eine kleine Anmerkung meinerseits, da ich das von "früher" auch so kannte, es aber mit Windows 7 leider so nicht mehr funktioniert
Diese Methode funktioniert NICHT mit Windows 7 Clients (der OP hat ja angegeben, dass er WinXP-Clients hat), also es wird dem User keine Möglichkeit geboten, den Shutdown-Vorgang abzubrechen.
http://forum.sysinternals.com/psshutdown-c-not-working-for-windows-7-cl ...
P.S.: Normalerweise betreibe ich keine Grabschändung, bin allerdings erst kürzlich über diesen Thread gestoßen und dachte vlt. interessiert es ja wen