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
GELÖST

Shutdown Script in vbs

Frage Entwicklung VB for Applications

Mitglied: chrizz-at

chrizz-at (Level 1) - Jetzt verbinden

03.07.2009, aktualisiert 20:02 Uhr, 5968 Aufrufe, 7 Kommentare

Hallo, ich brauche ein Script welches in einer Domäne alle Rechner herunterfährt. Besser gesagt auf 2 Domänen. Dies will ich aber von unserem Server aus machen. Das heisst ich muss irgendwie auf den anderen Domaincontroller der 2. Domäne zugreifen (Mit vbs als Administrator einloggen um die Rechner der 2. Domäne herunterzufahren)

Alles was ich zusammengebracht habe ist mit vbs einen bestimmten Rechner herunterzufahren mit den verschiedenen Parametern.. Wie mache ich das mit mehreren und wie logge ich mich auf dem 2. Server (DC für die 2. Domäne) an? Schlecht wär es auch nicht wenn sich die Server dann auch herunterfahren würden!

01.
strComputer = "TestPC" 
02.
 
03.
Const LOGOFF = 0 
04.
Const SHUTDOWN = 1 
05.
Const REBOOT = 2 
06.
Const POWEROFF = 8 
07.
Const FORCE = 4 
08.
 
09.
flags = POWEROFF + FORCE 
10.
 
11.
Set objwmi = GetObject("winmgmts:" _ 
12.
    & "{(Shutdown)}!\\" & strComputer) 
13.
 
14.
wql = "Select * from Win32_OperatingSystem" 
15.
 
16.
Set colOperatingSystems = objwmi.ExecQuery(wql) 
17.
 
18.
For Each objOperatingSystem In colOperatingSystems 
19.
    objOperatingSystem.Win32Shutdown flags, 0 
20.
Next
Bitte euch Experten um Hilfe
Christoph
Mitglied: Logan000
03.07.2009 um 15:01 Uhr
Moin Moin

1. Wenn Code postest, schau doch mal in die Formatierungshilfe.
2. Eine Vertrauensstellung zwischen den Domänen würde die aufgabe erleichtern.
3. Hier hast duch ein etwas erweitertes Codebsp. mit Anmeldung: http://www.quaschtel.de/wsh/wmi.htm#Fremder_Rechner_herunterfahren
4. Um das mit mehreren PCs zu machen, baust Du dir entweder eine Schleife oder arbeitest eine Liste ab.
5. Ich verwende zum Shutdown/Reboot lieber die Shutdown.exe.

Gruß L.
Bitte warten ..
Mitglied: Iwan
03.07.2009 um 15:08 Uhr
Hallo Hallo

6. Ich verwende zum Shutdown/Reboot lieber die PSShutdown.exe.
vorher natürlich die Computer noch in eine TXT eintragen und dank dieser die Computer runterfahren/neu starten lassen
dann würde ich das ganze noch per Batch machen, evtl. vorher die Rechner noch anpingen, um zu sehen, ob sie überhaupt an sind und fertig wäre das ganze
Bitte warten ..
Mitglied: chrizz-at
06.07.2009 um 13:13 Uhr
Hallo, ich habe hier jetzt einen Code den ich gerne Rekursiv ausgeführt hätte?

Weil ich die PC Namen aus einer Textfile auslesen werde, bzw. die Variable PC ist nicht immer "hostmobile" sondern ändert sich durch das auslesen aus einer Textdatei.

Wie mache ich eine Rekursion da draus das der code für jeden Rechner in der Textfile ausgeführt wird?

lg Chris

01.
' Rechnername und Logindaten  
02.
PC = "hostmobile" '  <- Soll Variabel sein! - Kann auch IP Adresse verwendet werden. 
03.
Const User = "Christoph" 
04.
Const PW = "test" 
05.
 
06.
 
07.
' Verbindung zu Fremdrechner & Betriebsystem 
08.
	On Error Resume Next 
09.
	Set WMI = CreateObject("WBemScripting.SWbemLocator") 
10.
	Set Login = WMI.ConnectServer(PC,"root/cimv2",USER,PW) 
11.
	If Err.Number <> 0 then 
12.
					Wscript.Echo Now() & " Fehler beim Einloggen bei Rechner: " & PC 
13.
					Err.Clear 
14.
					Shutdown = 1 
15.
			End if 
16.
	Set BS = Login.InstancesOf("Win32_OperatingSystem") ' Kann auch ExecQuery("SELECT * FROM Win32_OperatingSystem") verwendet werden. 
17.
 
18.
 
19.
' Befehl zum Herunterfahren 
20.
	On Error Resume Next 
21.
	For Each obj in BS 
22.
	Shutdown = obj.Shutdown 
23.
	Next 
24.
 
25.
' Meldung erfolgreich oder Fehlermeldung ausgeben 
26.
	If (Shutdown = 0) Then 
27.
	WScript.Echo Now() & ": Rechner " & PC & " wird/wurde heruntergefahren." 
28.
	Else 
29.
	WScript.Echo Now() & ": Rechner " & PC & " konnte nicht heruntergefahren werden!" 
30.
	End if
Bitte warten ..
Mitglied: Logan000
13.07.2009 um 09:44 Uhr
Moin Moin

Der Beitrag ist ja immer noch offen.
Ist doch nicht so schwer. Du schiebst dein Code in eine Function. Dann liest du die PCnamen aus einer Textdatei Zeilenweise aus und rufst deine Function mit dem PC namen auf.
Etwa so (ungetestet):
01.
Const User = "Christoph" 
02.
Const PW = "test" 
03.
Const ForReading = 1 
04.
Dim szNextLine 
05.
Dim szValue 
06.
Set objDictionary = CreateObject("Scripting.Dictionary") 
07.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
08.
Set objTextFile = objFSO.OpenTextFile("PCListe.txt", ForReading) 
09.
Do Until objTextFile.AtEndOfStream  
10.
		szNextLine = objTextFile.Readline 
11.
                PCShutdown(szNeuLine) 
12.
Loop 
13.
 
14.
Function PCShutdown(PC,User,PW) 
15.
	On Error Resume Next 
16.
	Set WMI = CreateObject("WBemScripting.SWbemLocator") 
17.
	Set Login = WMI.ConnectServer(PC,"root/cimv2",USER,PW) 
18.
	If Err.Number <> 0 then 
19.
					Wscript.Echo Now() & " Fehler beim Einloggen bei Rechner: " & PC 
20.
					Err.Clear 
21.
					Shutdown = 1 
22.
			End if 
23.
	Set BS = Login.InstancesOf("Win32_OperatingSystem") ' Kann auch ExecQuery("SELECT * FROM Win32_OperatingSystem") verwendet werden. 
24.
	On Error Resume Next 
25.
	For Each obj in BS 
26.
	Shutdown = obj.Shutdown 
27.
	Next 
28.
	If (Shutdown = 0) Then 
29.
	WScript.Echo Now() & ": Rechner " & PC & " wird/wurde heruntergefahren." 
30.
	Else 
31.
	WScript.Echo Now() & ": Rechner " & PC & " konnte nicht heruntergefahren werden!" 
32.
	End if 
33.
End Function
Gruß L.
Bitte warten ..
Mitglied: chrizz-at
14.07.2009 um 09:48 Uhr
Ok das funktioniert mal nicht.. aber ist ein Ansatz!
Wenn ich ein bisschen Plan hätte würd ichs hinkriegen

Es scheitert bei der Zeile

01.
Do Until objTextFile.AtEndOfStream  
02.
		szNextLine = objTextFile.Readline 
03.
                PCShutdown(szNeuLine) <-- HIER! 
04.
Loop
Bitte warten ..
Mitglied: Logan000
14.07.2009 um 11:43 Uhr
Moin Moin

Ein Tippfehler meinerseits.
Ist aber ziemlich offensichtlich.
So solte es funktionieren:
01.
Do Until objTextFile.AtEndOfStream  
02.
		szNextLine = objTextFile.Readline 
03.
'                PCShutdown(szNeuLine) <-- HIER! 
04.
                PCShutdown(szNextLine)  
05.
Loop
Gruß L.
Bitte warten ..
Mitglied: chrizz-at
14.07.2009 um 14:00 Uhr
Hab das Script selbst fertigstellen können!

Es sieht so aus wer es haben möchte:

Einfach Rechnernamen in die Textfile eintragen (und nätürlich auch Administrator Login) und los gehts!

01.
' ******************************* 
02.
' Shutdown Script (c) HOST		* 
03.
' Author: Christoph Strassmair	* 
04.
' Created: 06.07.09				* 
05.
' Last Changed: 14.07.09		* 
06.
' ******************************* 
07.
' Login Daten 
08.
Const User = "Christoph" 
09.
Const PW = "PWTEST" 
10.
 
11.
' Dimensionieren der Variablen 
12.
Dim szNextLine, objDictionary, objFSO, objTextFile, PC 
13.
Set objDictionary = CreateObject("Scripting.Dictionary") 
14.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
15.
Set objTextFile = objFSO.OpenTextFile("PCListe.txt", 1) 
16.
 
17.
Do Until objTextFile.AtEndOfStream  
18.
	szNextLine = objTextFile.Readline 
19.
	PCShutdown szNextLine, User, PW 
20.
Loop 
21.
 
22.
Private Sub PCShutdown(PC,User,PW) 
23.
	On Error Resume Next 
24.
	Set WMI = CreateObject("WBemScripting.SWbemLocator") 
25.
	Set Login = WMI.ConnectServer(PC,"root/cimv2",USER,PW) 
26.
	If Err.Number <> 0 then 
27.
					Wscript.Echo Now() & " Fehler beim Einloggen bei Rechner: " & PC & vbCRLf & _ 
28.
					"Grund: " & Err.Description 
29.
					Err.Clear 
30.
	End if 
31.
	Set BS = Login.InstancesOf("Win32_OperatingSystem") ' Kann auch ExecQuery("SELECT * FROM Win32_OperatingSystem") verwendet werden. 
32.
	On Error Resume Next 
33.
	For Each obj in BS 
34.
	Shutdown = obj.Shutdown 
35.
	Next 
36.
	If (Err.Number <> 0) Then 
37.
	WScript.Echo Now() & ": Rechner " & PC & " konnte nicht heruntergefahren werden!" 
38.
	Else 
39.
	WScript.Echo Now() & ": Rechner " & PC & " hat den Shutdown Befehl erhalten." 
40.
	End if 
41.
End Sub
Danke für eure Hilfe!! Thread gelöst!
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Batch & Shell
gelöst VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen) (5)

Frage von Luuke257 zum Thema Batch & Shell ...

VB for Applications
gelöst VBS Script kann Prgramm nicht starten (15)

Frage von C.Boerner zum Thema VB for Applications ...

Windows Server
Aufgabenplanung bringt bei VBS Script immer 0x41301 (14)

Frage von 116480 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...