-kataniCSurfer Geschrieben 17. Dezember 2010 Geschrieben 17. Dezember 2010 Hallo, ich bin gerade dabei ein Script zu schreiben, dass den Hacken bei den Energieeinstellungen des aktiven Netzwerk adapters setzt. Siehe Bild 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 Zitieren
Empfohlene Beiträge
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.