Zum Inhalt springen

Netzwerk Adapter Energie einstellungen (WOL aus Ruihezustand aktivieren)


Empfohlene Beiträge

Geschrieben

Hallo,

ich bin gerade dabei ein Script zu schreiben, dass den Hacken bei den Energieeinstellungen des aktiven Netzwerk adapters setzt. Siehe Bild

11961d1257078634-frage-zu-den-einstellungen-windows-7-energiesparmodus-nwk.jpg

Das problem ist nur wie setze ich den Hacken darunter (Nur Magic Package kann?)

Hier mein bisheriges Script:

'################################################################################################

'# Enable "device can wakeup Client"															#

'# Scripted by: pch 2010-12-10 																	#

'# Questions: Create a Ticket																	#

'# Compatible OS: Microsoft Windows 7 Professional												#

'################################################################################################


'GLOBALE DEKLARATION:__________________

Dim Logpath : Logpath = environment("WinDir") & "\sccm_logs\"

Dim Logfilename : Logfilename=date & "_setNetworkadapterPWRCFG"

Dim netAdapter

Dim ErrCount : ErrCount = 0

Dim Val


'AUFRUFE:__________________

'Write Log	


CheckEnv()


' Call funnction getactiveadapter()

Logfile Logpath & Logfilename, "Calling function getactiveadapter()..", False


netAdapter = getactiveadapter()


If netAdapter = "" Then

		Logfile Logpath & Logfilename, "Couldn't get Adapter from WMI!!!", False

		Logfile Logpath & Logfilename, "Aborting script.", False

		Logfile Logpath & Logfilename, "Script ended: " & Date & "_" & Time, False

		Logfile Logpath & Logfilename, "-----------===================< END >===================-----------", False

	wscript.quit(0)

End If


	Logfile Logpath & Logfilename, "Target Networkadapter: " & netAdapter, False

	Logfile Logpath & Logfilename, "Calling function RunPowercfg()..", False

	Logfile Logpath & Logfilename, "Command: " & "powercfg -DEVICEENABLEWAKE " & Chr(34) & netAdapter & Chr(34), False


Val = RunPowercfg(netAdapter, "set")


	Logfile Logpath & Logfilename, "Command executed. Getting WoL enabled devices....", False

	Logfile Logpath & Logfilename, "Devices: ", False


Val = RunPowercfg(netAdapter, "get")



If Val Then

	Logfile Logpath & Logfilename, "Target device: " & Chr(34) & netAdapter & Chr(34) &_

								   " enabled. Script successfully run" , False

Else						  

	Logfile Logpath & Logfilename, "Could not enable target device: " & Chr(34) & netAdapter & Chr(34) & " Sufficent rights?", False

End If


	Logfile Logpath & Logfilename, "Logging finished: " & Date & "_" & Time , False

	Logfile Logpath & Logfilename, "Script ended. " , False

	Logfile Logpath & Logfilename, "-----------===================< END >===================-----------", False


' FUNCTIONS:__________________


'################################################################################################

'Mit WMI-Query aktiven Netzwerkadapter finden.													#

'################################################################################################

Function getactiveadapter()

	On Error Resume Next

	'Initialisierung der Variable

	'WMIC Objekt initalisiern

	Dim objWMI : Set objWMI = GetObject("winmgmts:")

	'Select auf WMIC ausführen

	Dim colSettings : Set colSettings = _ 

	objWMI.ExecQuery("Select * from Win32_networkadapter where NetEnabled = TRUE")

	'Variablen für den durchlauf in der Schleife und Rückgabe Initialisieren

	Dim objNetdev, strModel

	'Für jeden Satz im Objekt .Description in die Variable schreiben

	For Each objNetdev in colSettings

		strModel = objNetdev.Description

	Next

	'Wenn ein Fehler auf tritt Funktion ErrHandler aufrufen

	If Err.Number <> 0 Then

		ErrHandler Err, "getactiveadapter()"

	End If

	'Variable zurückgeben	

	getactiveadapter = strModel

End Function


'################################################################################################

'Mit WMI-Query OS version prüfen finden.														#

'################################################################################################

Function getOS()

	On Error Resume Next

	'Initialisierung der Variable

	'WMIC Objekt initalisiern

	Dim objWMI : Set objWMI = GetObject("winmgmts:")

	'Select auf WMIC ausführen

	Dim colSettings : Set colSettings = _ 

	objWMI.ExecQuery("Select * from Win32_OperatingSystem")

	'Variablen für den durchlauf in der Schleife und Rückgabe Initialisieren

	Dim objOS, strVersion

	'Für jeden Satz im Objekt .Description in die Variable schreiben

	For Each objOS in colSettings

		strVersion = objOS.Version

	Next

	If Err.Number <> 0 Then

		ErrHandler Err, "getOS()"

	End If

	'Variable zurückgeben	

	getOS = strVersion

End Function


'################################################################################################

'Umgebungsvariable finden und zurückgeben														#

'################################################################################################

function environment(variable)

	On Error Resume next

	Dim WshShell

	Dim objEnv

	Set WshShell = CreateObject("Wscript.Shell")

	Set objEnv = WshShell.Environment("Process")

	environment = objEnv(variable)

	set WshShell = Nothing

	Set objEnv = Nothing

	If Err.Number <> 0 Then

		ErrHandler Err, "environment()"

	End If


End Function


'################################################################################################

'Fehler entgegennehmen und an Logfile weitergeben												#

'################################################################################################

Function ErrHandler(arrerror, inFunction)

	Dim doContinue : doContinue = false	'test .. normaly False

	ErrCount = ErrCount+1

	wscript.echo arrerror.number & vbCrlf & arrerror.description


	'Wenn die Function ErrHandler 3 mal aufgerufen wird Script beenden

	'wscript.echo arrerror.number & vbCrlf & arrerror.description

	If ErrCount >3 Then

		wscript.quit(0)

	End If

	'fehler an Logfile übergeben:

	Logfile Logpath & Logfilename, "Script returned:" & vbtab & arrerror.number, False

	Logfile Logpath & Logfilename, "Description:" & vbtab & arrerror.description, False

	Logfile Logpath & Logfilename, "Script failed at function: " & inFunction, False

	Logfile Logpath & Logfilename, "Aborting script.", False

	Logfile Logpath & Logfilename, "Script ended: " & Date & "_" & Time, False

	Logfile Logpath & Logfilename, "-----------===================<END>===================-----------", False

	If Not doContinue Then

		wscript.quit(0)

	End If

End Function


'################################################################################################

'Logfile initialisieren und befüllen 															#

'################################################################################################

Function Logfolder(folder)

	On Error Resume Next

	Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")

	'Prüfen ob der Ordner existiert

	If Not FSO.FolderExists(folder) then

		'Wenn nicht erstellen

		FSO.CreateFolder(folder)

	Else

		'Ansonsten True zurückliefern

		Logfolder = True

	End If

	set FSO = nothing

	If Err.Number <> 0 Then

		'wenn ein Fehler auftritt

		If Err.Number = 70 Then

			'Wenn der Fehler 70 ist (Zugriff verweigert) False zurückgeben

			Logfolder = False

		Else

		'Bei einem Anderen Fehler Funktion ErrHandler aufrufen

		ErrHandler Err, "Logfolder()"

		End If

	End If

End Function


'################################################################################################

'Logfile initialisieren und befüllen 															#

'################################################################################################

Function Logfile(file, content, newFile)

	On Error Resume Next

	Const ForAppending = 8

	Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")

	file = file & ".log"

	content = "[" & Date & "_" & Time & "]; " & vbTab & content

	If newFile Then

		if FSO.FileExists(file) then

		  	FSO.DeleteFile(file)

		end if	

	End If

	Dim fileo : Set fileo = FSO.OpenTextFile (file, ForAppending, TRUE)

	fileo.WriteLine(content)

	fileo.Close


	set fileo = nothing

	set FSO = nothing

	If Err.Number <> 0 Then

		ErrHandler Err, "Logfile()"

	End If	

End Function


'################################################################################################

' Powercfg.exe ausführen um die werte zu setzen													#

'################################################################################################

Function RunPowercfg(device, GetSet)

	On error resume next

	'-- Obtain a Temporary File Name

	Const nWindowType = 0

	Const forReading = 1

	Const ForAppending = 8

	Dim oFS : Set oFS = CreateObject("Scripting.FileSystemObject")

	Dim cProgram

	'Dim scriptname : scriptname = Wscript.ScriptFullName

	'Dim CurDir : CurDir = oFS.getparentfoldername(scriptname)


	If GetSet="set" Then

		cProgram = "cmd /c POWERCFG.exe -DEVICEENABLEWAKE " & Chr(34) & device & Chr(34)

	Else 

		If	GetSet="get" Then

			cProgram = "cmd /c POWERCFG.exe -DEVICEQUERY wake_armed"

		End If

	End If


	Dim cFile

	cFile = oFS.GetSpecialFolder(2).Path & "\" & oFS.GetTempName 


	'-- Execute the command and redirect the output to the file

	Dim oShell : Set oShell = CreateObject( "WScript.Shell" )

	oShell.Run cProgram & " >" & cFile, nWindowType, True 

	Set oShell = Nothing


	'-- Read output file and return

	Dim oFile : Set oFile = oFS.OpenTextFile(cFile, ForAppending, True)

	oFile.WriteLine " "

	Set oFile = oFS.OpenTextFile(cFile, forReading, True)


  	Do Until oFile.AtEndOfStream

		line = oFile.Readline

		If line = device Then

			RunPowercfg = True

		End If

		Logfile Logpath & Logfilename, line, False

	Loop

	oFile.Close

	oFS.DeleteFile cFile

	If Err.Number <> 0 Then

		ErrHandler Err, "RunPowercfg()"

	End If

End Function


'################################################################################################

'Zugriffsberechtigungen und Umgebung Checken													#

'################################################################################################

Function CheckEnv()

	On Error Resume Next

	Dim OSVersion

	Dim message

	Dim arrPreLog(7)

	Dim x : x = 0	


	'Prüfen ob der Logfolder Path vorhanden ist falls nicht, diesen erstellen

	arrPreLog(x) = "-----------===================<START>===================-----------" : x=x+1

	arrPreLog(x) = "Enable device can wakeup Client" : x=x+1

	message = Logfolder(Logpath)

	arrPreLog(x) = "Function Logfolder() returned: " & message : x=x+1

	If Not message Then

		'Wenn die funktion false zurückliefer Logpath auf das Temp Verzeichnis umbiegen

		arrPreLog(x) = "Previous Log directory: " & Logpath

		Logpath = environment("temp") & "\sccm_logs\"

		arrPreLog(x) = arrPreLog(x) & " set to: " & Logpath : x=x+1

	Else

		'Wenn das Ursprüngliche verzeichnis %WINDIR%\sccm_logs existiert, checken ob darin geschrieben werden kann

		arrPreLog(x) = "Log directory: " & Logpath : x=x+1

		arrPreLog(x) = "Checking whether Log directory is writable" : x=x+1	

		Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")

		Dim File : File = Logpath & FSO.GetTempName

		arrPreLog(x) = "Trying to create Temporary File: " & file : x=x+1

		FSO.CreateTextFile(File)

		If Err.number=70 Then

			' wenn erlaubnis verweigert, auf das Temp Verzeichnis umbiegen

			arrPreLog(x) = logpath & " not writable changing Log directory to: "

			Logpath = environment("temp") & "\sccm_logs\"

			arrPreLog(x) = arrPreLog(x) & logpath : x=x+1

		Else

			' wenn das File erstellt werden kann, wieder löschen.

			arrPreLog(x) = logpath & " writeable: Deleting temporary file..." : x=x+1

			FSO.DeleteFile(File)

		End If

		File = Nothing		

		FSO = Nothing

	End If

	message = Logfolder(Logpath)

	'arrPreLog Array in Logfile schreiben

	Logfile Logpath & Logfilename, arrPreLog(0), True

	For i=1 To 6 Step 1

		Logfile Logpath & Logfilename, arrPreLog(i), False

	Next

		Logfile Logpath & Logfilename, "Calling function getOS()..", False	

	OSVersion = getOS

		If OSVersion = "" Then

				Logfile Logpath & Logfilename, "Couldn't get OS Version from WMI!!!", False

				Logfile Logpath & Logfilename, "Check if you have sufficent rights. And run the Script again.", False

				Logfile Logpath & Logfilename, "Aborting script.", False

				Logfile Logpath & Logfilename, "Script ended: " & Date & "_" & Time, False

				Logfile Logpath & Logfilename, "-----------===================< END >===================-----------", False

			wscript.quit(0)

		End If

		Logfile Logpath & Logfilename, "Detected Version: " & OSVersion, False

	If Not Left(OSVersion, 3) = "6.1" Then

			Logfile Logpath & Logfilename, "This Script is only successfully tested on Windows 7", False

			Logfile Logpath & Logfilename, "Aborting script.", False

			Logfile Logpath & Logfilename, "Script ended: " & Date & "_" & Time, False

			Logfile Logpath & Logfilename, "-----------===================< END >===================-----------", False

		wscript.quit(0)

	End If

	Logfile Logpath & Logfilename, "Environment checked ready to run..", False

End Function

Greetz

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...