micneu
Goto Top

WakeOnLan Stapelverarbeitend

Wollt ihr morgens Rechner Starten lassen bevor die Mitarbeiter anwesend sind habe ich hier ein kleines vb-script was euch helfen kann.

Speichert das vb-script mit ".vbs" und ruft es mit cscript name.vbs auf...
aufruf des scripts ohne optionen gibt euch die syntax

'  
' Soll automatisch Computer zu einer bestimmten zeit Starten  
' Oder Herunterfahren  
' (c)  M. Neumann  
' 16.06.2009  
' rw.exe http://www.sysworksoft.net/products/rw.html  

Option Explicit

Dim wol_ipadressenDatei, ipadressen
Dim wait, iArgument, FSO, sCommand, sModus, iLfdNr
Dim oArgumente, WshShell
Dim sDatei, sWait, COPYLOGO, copyRight, sLaenge, sZeichen, vVariable, zZeichen

Const ForReading = 1

Set oArgumente = WScript.Arguments
Set WshShell = WScript.CreateObject("WScript.Shell")  
Set fso = CreateObject("Scripting.FileSystemObject")  
copyRight = COPYLOGO & " 16.06.2009, M. Neumann"  
'wait = 5  
iArgument = 0 
COPYLOGO = Chr(169) ' entspricht dem Zeichen (c)  
sZeichen = "="  
iLfdNr = 0
Function zHeader(vVariable, zZeichen)
	sLaenge = Len(vVariable)
	wscript.Echo(String(sLaenge, zZeichen))
	WScript.Echo(vVariable)
	wscript.Echo(String(sLaenge, zZeichen))
End Function

If oArgumente.Count > 0 Then
	Do
		If UCase(oArgumente(iArgument)) = "-D" Or _  
			UCase(oArgumente(iArgument)) = "/D" Or _  
			UCase(oArgumente(iArgument)) = "-Datei" Then  
			'---- Dateiargument  
			iArgument = iArgument + 1
			sDatei = oArgumente(iArgument)
			Set wol_ipadressenDatei = fso.OpenTextFile(sDatei,ForReading)
		
		ElseIf UCase(oArgumente(iArgument)) = "-W" Or _  
			UCase(oArgumente(iArgument)) = "/W" Or _  
			UCase(oArgumente(iArgument)) = "-Wait" Then  
			'---- Zeitargument  
			iArgument = iArgument + 1
			sWait = oArgumente(iArgument)
			sWait = sWait * 1000
						
		ElseIf UCase(oArgumente(iArgument)) = "-M" Or _  
			UCase(oArgumente(iArgument)) = "/M" Or _  
			UCase(oArgumente(iArgument)) = "-Modus" Then  
			'---- Betriebsart (sCommand / Stop)  
			iArgument = iArgument + 1
			sModus = oArgumente(iArgument)
		End If
		
		iArgument = iArgument +1
	Loop Until iArgument >= oArgumente.Count
End If

If sDatei = "" Or sWait = "" Or sModus = "" Then  
	' Es wurde kein Argument übergeben  
	zHeader copyRight,sZeichen
	WScript.Echo("Es wurde kein oder falsche Parameter übergeben.")  
	WScript.Echo(vbTab + "-d dateiname oder -datei dateiname: " & sDatei)  
	WScript.Echo(vbTab + "-w zeit(in sekunden) oder -wait zeit(in sekunden): " & sWait)  
	WScript.Echo(vbTab + "-m Betriebsart Start (START) oder Heruntrfahren (STOP) " & vbCrLf & vbTab &" von Computer: " & sModus)  
	
Else
	If sDatei	<> "" And sWait <> "" And sModus <> "" Then  
		Do While wol_ipadressenDatei.AtEndOfStream <> True
			iLfdNr = iLfdNr +1
			ipadressen = Split(wol_ipadressenDatei.ReadLine, ";")  
			WScript.Echo("LfdNr.: " & iLfdNr & ", IP: " & ipadressen(0) & ", mac: " & ipadressen(1) & ", Hostname: " & ipadressen(2))  
			If sModus = "start" Then  
				 		sCommand = "cmd\rw.exe /m:" & ipadressen(1)  
				 		WshShell.Run(sCommand)
				 		WScript.Echo(sCommand)
				 		WScript.Sleep sWait
			ElseIf sModus = "stop" Then  
				 		sCommand = "shutdown -s -f -t " & sWait & " -m \\" & ipadressen(0)  
						WshShell.Run(sCommand)
				 		WScript.Echo(sCommand)
			End If
		Loop
	End If		
End If
aufbau der werte datei:

IP;MAC;Hostname
192.168.01.109;0012345C0CF1;ab-1
192.168.01.114;00567899015;ab-1
192.168.01.115;0012341e;ab-3
192.168.01.116;00199901d20b;ab-4

Hoffe das ist was für euch

Gruß Michael

Content-ID: 132173

Url: https://administrator.de/contentid/132173

Printed on: December 14, 2024 at 00:12 o'clock

aqui
aqui Dec 22, 2009 at 23:32:57 (UTC)
Goto Top
Die ct hatte das auch in ihrer Ausgabe Heft 25 / 2009 , Seite 186
http://www.heise.de/ct/09/25/links/186.shtml
micneu
micneu Dec 23, 2009 at 14:32:36 (UTC)
Goto Top
der gleiche code?... kann nicht sein oder ....

face-wink
firewall68
firewall68 Jun 11, 2010 at 09:50:23 (UTC)
Goto Top
Mhm nicht schlecht kann man den auch den hostnamen in deinem script verwenden ?
Das Problem bei der IP = Ich habe DHCP im Einsatz, alle 8 Tage neue zuordnung ;0(

Kann es sein das die Rechner nicht herunterfahren ? wenn das script auf einem W2008R2 Server ausgeführt wird ?
Auch das Shutdown über die normale CMD am Server lässt den Client (XP) nicht herunterfahren.
micneu
micneu Jun 29, 2010 at 09:20:45 (UTC)
Goto Top
ich setze es auf einem win xp ein.
wichtig ist das der benutzername z. b. administrator auf allen kisten das gleiche pw hat.