Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

PCs automatisch abschalten - Servergesteuert

Frage Microsoft

Mitglied: IchHalt

IchHalt (Level 1) - Jetzt verbinden

19.05.2008, aktualisiert 18.10.2012, 7499 Aufrufe, 21 Kommentare

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?
Mitglied: SarekHL
19.05.2008 um 18:59 Uhr
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

01.
shutdown -f -s -m \\Computername 
die Du auf dem Server als geplanten Task einrichtest?
Bitte warten ..
Mitglied: IchHalt
19.05.2008 um 19:04 Uhr
Die Sache ist die, dass mehrere PCs heruntergefahren werden sollen... eigl alle Clients die in einer bestimmten OU zu finden sind... Muss man eventuell vorher Prüfen - wenn es denn so geht - ob der PC noch an ist oder kann man die GP einfach so drauf pushen und wenn der PC nicht da ist, wirkt die Richtlinie nicht? Bin auch nich so der Scripting Guru dass ich mir ne ADM datei selbst erstellen kann...
Bitte warten ..
Mitglied: colinardo
19.05.2008, aktualisiert 18.10.2012
Gehe mal auf mein Tutorial hier im Forum : http://www.administrator.de/wissen/benutzerdefinierten-task-f%c3%bcr-ta ...

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
Bitte warten ..
Mitglied: moesch123
19.05.2008 um 19:23 Uhr
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
Bitte warten ..
Mitglied: IchHalt
19.05.2008 um 19:35 Uhr
Vielen Dank Softmeister,
denke auch, dass dies meine Lösung sein wird. werde das die Tage mal auf der Arbeit austesten.

Gruß und Dank
Patrick
Bitte warten ..
Mitglied: IchHalt
20.05.2008 um 16:19 Uhr
Hallo Nochmal.
Also ich habe das nun mal ausprobiert. Beim übertragen des Tasks setzt er den Usernamen allerdinfs auf den aktuell angemeldeten Benutzer. Doch der Benutzer hat nicht genügend rechte.
-> schtasks.exe /change /tn "Shutdown" /ru "System"

Diesen Teil habe ich nach der Erklärung so verstanden, dass er es verhindern soll. Dies passiert aber nicht. Bitte noch mal um hilfe.

Gruß und Dank,
Patrick
Bitte warten ..
Mitglied: colinardo
20.05.2008 um 17:00 Uhr
Der Befehl funktioniert leider nur wenn der Benutzer der sich am Rechner anmeldet, Admin Rechte auf der Maschine besitzt.
Bitte warten ..
Mitglied: 60730
20.05.2008 um 18:10 Uhr
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.
Bitte warten ..
Mitglied: colinardo
20.05.2008 um 19:52 Uhr
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.


dann aber direkt mit psshutdown aus der gleichen Suite mit folgendem Befehl:
01.
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
Bitte warten ..
Mitglied: colinardo
20.05.2008 um 20:50 Uhr
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...

01.
Set colItems = GetObject("LDAP://ou=FirmenComputer, dc=testlab, dc=de") 
02.
set objShell = CreateObject("Wscript.Shell") 
03.
colItems.Filter = Array("Computer") 
04.
 
05.
For each objItem in colItems 
06.
      sdcommand = "shutdown /s /t 60 /m \\" & objItem.CN 
07.
      objShell.Run sdcommand 
08.
Next
Bitte warten ..
Mitglied: IchHalt
20.05.2008 um 22:32 Uhr
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...

Also is das dann ein Servertask, der vom Server aus ausgeführt wird? Muss nur halt unter nem Administrator ausgeführt werden?

Gruß + Dank
Patrick
Bitte warten ..
Mitglied: colinardo
20.05.2008 um 22:47 Uhr
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.
Bitte warten ..
Mitglied: IchHalt
21.05.2008 um 13:03 Uhr
Hab das mit dem VBS-Script mal ausprobiert. Wenn ich das Script starte, gibt er folgenden Fehler aus:

Skript: \\Skriptpfad
Zeile: 1
Zeichen: 1
Fehler: ein solches Objekt ist auf dem Sever nicht vorhanden
Code: 80072030
Quelle: (Null)

Gruß und Dank
Patrick
Bitte warten ..
Mitglied: colinardo
21.05.2008 um 13:24 Uhr
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:
  • Set colItems = GetObject("LDAP://ou=OrganizationalUnit, dc=testlab, dc=de")
in der ersten Zeile steht hinter "ou=" deine gewünschte Organizational Unit und dann folgen die DNS-Bezeichnungen deiner Umgebung wie hier z.B. die Domäne "testlab.de" -> "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
Bitte warten ..
Mitglied: IchHalt
21.05.2008 um 13:35 Uhr
Ahh schonmal nen kleinen Fehler gefunden. Kann ich innerhalb einer OU dann auch auf eine Gruppe verlinken? Der Task soll nur bei bestimmten Mitgliedern einer Gruppe durchgeführt werden. Habe folgende Strukur: Domäne\OU "Verwaltung"\ OU "Groups" \Gruppe "shutdown"

Gruß und Dank
Patrick
Bitte warten ..
Mitglied: colinardo
21.05.2008 um 13:52 Uhr
Hast du die Computer-Objekte in einem Gruppen-Objekt untergebracht ??
Bitte warten ..
Mitglied: colinardo
21.05.2008 um 14:32 Uhr
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)
01.
Set WshNetwork = WScript.CreateObject("WScript.Network") 
02.
strServerName = WshNetwork.ComputerName 
03.
Set objGruppe = GetObject("LDAP://cn=shutdown, OU=Groups, OU=Verwaltung, dc=DOMÄNE, dc=TLD") 
04.
set objShell = CreateObject("Wscript.Shell") 
05.
objGruppe.GetInfo 
06.
members = objGruppe.GetEx("member") 
07.
for each strMember in members 
08.
	Set oMember = GetObject("LDAP://" & strServerName & "/" & strMember) 
09.
        classArray = oMember.objectClass 
10.
	if (classArray(UBound(classArray)) = "computer") Then 
11.
            sdcommand = "shutdown /s /t 60 /m \\" & oMember.CN 
12.
            objShell.Run sdcommand 
13.
        end if 
14.
next 
15.
	
Bitte warten ..
Mitglied: IchHalt
21.05.2008 um 15:49 Uhr
funktioniert die Zuweisung nur Pro Gerät im Netz oder auch Userbezogen? In der OU hatte ich nämlich ursprünglich User drin stehen.

mit Getobject "cn" kann ich also eine Gruppe in einer OU ansprechen?
members = objGruppe.GetEx("member") sage ich ihm dass das Script für die Mitglieder dieser Gruppe ausgeführt werden soll?
Set oMember = GetObject("LDAP://" & strServerName & "/" & strMember) -> muss ich hier noch etwas ändern?
if (classArray(UBound(classArray)) = "computer") -> was sagt das "computer" aus?

Hab vorher noch nie etwas mit scripten oder ähnlichem gemacht, nur ein WENIG Batch...
Bin ja auch noch nen Azubi ;)

Gruß und Dank
Patrick
Bitte warten ..
Mitglied: colinardo
21.05.2008 um 18:14 Uhr
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
Bitte warten ..
Mitglied: colinardo
21.05.2008 um 18:24 Uhr
Im letzten Script brauchst du nur im ersten GetObject-Befehl den Pfad auf dein Gruppen-Objekt setzen alles andere kannst du so lassen. Alle Rechner die du herunterfahren willst müssen Mitglied in dieser Gruppe sein..
Bitte warten ..
Mitglied: d0ckw0rka
13.11.2012, aktualisiert um 12:05 Uhr
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


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
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Windows 10
gelöst PCs über eine Batch Datei nach 2 Tagen Laufzeit automatisch herunterfahren (12)

Frage von Karsten70154 zum Thema Windows 10 ...

Microsoft Office
gelöst Registerkarte in Excel automatisch färben (14)

Frage von ralfkausk zum Thema Microsoft Office ...

Windows Server
Jnlp Endungen mit Java automatisch verknüpfen über GPO (10)

Frage von staybb zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...