WakeOnLAN für die Netzwerkkarte remote über ein Powershell- oder WMI-Script aktivieren
Hallo,
ich muss in einem räumlich weit auseinanderliegenden Netzwerk für mehrere Rechner WakeOnLAN aktivieren.
Das ist so ziemlich das einzige, was mit den üblichen Mitteln remote nicht funktioniert.
Hier habe ich zwar eine Lösung gefunden, aber ich kriege es einfach nicht hin: https://technet.microsoft.com/de-de/library/ee617165(v=ws.10).aspx
Hatte schon mal jemand eine ähnliche Aufgabe zu lösen und daher ein Script dafür parat?
Würde mich freuen!
ich muss in einem räumlich weit auseinanderliegenden Netzwerk für mehrere Rechner WakeOnLAN aktivieren.
Das ist so ziemlich das einzige, was mit den üblichen Mitteln remote nicht funktioniert.
Hier habe ich zwar eine Lösung gefunden, aber ich kriege es einfach nicht hin: https://technet.microsoft.com/de-de/library/ee617165(v=ws.10).aspx
Hatte schon mal jemand eine ähnliche Aufgabe zu lösen und daher ein Script dafür parat?
Würde mich freuen!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 292949
Url: https://administrator.de/contentid/292949
Ausgedruckt am: 24.11.2024 um 06:11 Uhr
11 Kommentare
Neuester Kommentar
Set-NetAdapterPowerManagement -Name Ethernet -WakeOnMagicPacket Enabled
Gruß jodel32
Hallo GlintofGold,
das gewünschte lässt sich mit der Powershell relativ einfach realisieren, einfach in Zeile 1 den Pfad zu einer Textdatei eintragen in welcher die Rechnernamen oder IP-Adressen untereinander aufgelistet sind. Bei Bedarf das Ping-Delay in Zeile 18 nach Bedarf anpassen.
Das Skript sollte natürlich mit den nötigen Credentials gestartet werden welche für den Remote-Zugriff auf die Rechner benötigt werden. Jeder Rechner wird vor der Abfrage angepingt, sollte er antworten wird die EInstellung für Wake-On-Lan vorgenommen ansonsten nicht.
Das das BIOS der Rechner entsprechend eingestellt sein muss ist natürlich Voraussetzung.
Die Einstellung wirkt normalerweise erst nach einem Reboot des Rechners, das nur noch zur Info. Bei Bedarf kann man also noch einen Reboot-Befehl mit einbauen wenn das gewünscht ist.
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
das gewünschte lässt sich mit der Powershell relativ einfach realisieren, einfach in Zeile 1 den Pfad zu einer Textdatei eintragen in welcher die Rechnernamen oder IP-Adressen untereinander aufgelistet sind. Bei Bedarf das Ping-Delay in Zeile 18 nach Bedarf anpassen.
$computers = gc 'C:\computerliste.txt'
if ($PSVersionTable.PSVersion.Major -lt 3){write-host "ERROR: Minimum Powershell Version 3.0 is required!" -F Yellow; return}
function Send-Ping([string]$device,[int]$delay){
$ping = New-Object System.Net.NetworkInformation.Ping
try{
if($ping.Send($device,$delay).Status -ne "Success"){
return $false
}else{
return $true
}
}catch{return $false}
}
$computers | %{
$computer = $_
if (Send-Ping $computer -delay 500){
try{
gwmi Win32_Networkadapter -Filter "NetEnabled = 'True'" -ComputerName $computer -EA Stop | %{
$pnpid = $_.PNPDeviceId; $netcard = $_.Description
gwmi MSPower_DeviceWakeEnable -Namespace root\wmi -ComputerName $computer | ?{$_.InstanceName -match [regex]::Escape($pnpid)} | %{
$_.Enable = $true
if($_.Put()){[pscustomobject][ordered]@{"Computer"=$computer;"Adapter"=$netcard;"Result"="OK"}}
}
}
}catch{
write-host $_.Exception.Message -ForegroundColor Red
}
}else{
[pscustomobject][ordered]@{"Computer"=$computer;"Result"="Computer was offline"}
}
}
Das das BIOS der Rechner entsprechend eingestellt sein muss ist natürlich Voraussetzung.
Die Einstellung wirkt normalerweise erst nach einem Reboot des Rechners, das nur noch zur Info. Bei Bedarf kann man also noch einen Reboot-Befehl mit einbauen wenn das gewünscht ist.
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Zitat von @GlintofGold:
Die Einstellungen für WakeOnMagicPacket werden aber an denZiel-Geräten nicht verändert, WOL funktioniert somit trotzdem nicht.
Geht hier mit 20 unterschiedlichen Rechnern einwandfrei! Win7/8/10 , nutze ich schon seit eh und jeh ...Die Einstellungen für WakeOnMagicPacket werden aber an denZiel-Geräten nicht verändert, WOL funktioniert somit trotzdem nicht.
Lass dir einfach mal die Ausgabe des $_.Put() Befehls auf der Konsole ausgeben.
Die Einstellungen für WakeOnMagicPacket
Du meinst jetzt aber nicht die Settings des Netzwerkkartentreibers selber (unter Erweitert)? Das ist nämlich ein anderes paar Schuhe...Mein Skript setzt diese Einstellung
http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-comp ...
Siehe
http://blogs.technet.com/b/heyscriptingguy/archive/2011/08/11/configure ...
Zitat von @colinardo:
Läuft hier testweise auch Zitat von @GlintofGold:
Die Einstellungen für WakeOnMagicPacket werden aber an denZiel-Geräten nicht verändert, WOL funktioniert somit trotzdem nicht.
Geht hier mit 20 unterschiedlichen Rechnern einwandfrei! Win7/8/10 , nutze ich schon seit eh und jeh ...Die Einstellungen für WakeOnMagicPacket werden aber an denZiel-Geräten nicht verändert, WOL funktioniert somit trotzdem nicht.
Es geht schon um die Einstellung im 'Netzwerkkartentreiber/Erweitert'.
Dann sprachen wir von zwei unterschiedlichen Dingen, das obige Skript war nur für das Powermanagement-Häkchen unter dem Tab Energieverwaltung zuständig nicht für die erweiterten Eigenschaften der Netzwerkkarte, aber das ging aus deinem Post ja leider nicht eindeutig hervor.Schaue nachher nochmal ein meine Skriptsammlung, aber ich meine das ist abhängig von Treiber und der Netzwerkkarte. Denn die Namen der Eigenschaften können sich da unterscheiden.
Ab Windows 8.1 und Windows 10 geht das hiermit:
Set-NetAdapterAdvancedProperty
Set-NetAdapterAdvancedProperty -Name MyAdapter -DisplayName "Wake on Magic Packet" -DisplayValue "Enable"
Die Einstellungen finde sich aber auch in der Registry unter:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class
NACHTRAG:
Du könntest also einfach ein Powershell-Computerstartskript per GPO deployen was die Einstellung in der Registry setzt
$nicname = gwmi win32_networkadapter -Filter "NetEnabled ='True'" | select -First 1 -Expand Description
gci "HKLM:\SYSTEM\CurrentControlSet\Control\Class" -Recurse -EA SilentlyContinue | ?{$_.GetValue('DriverDesc') -eq $nicname} | %{Set-ItemProperty ($_.Name.Replace('HKEY_LOCAL_MACHINE','HKLM:')) -Name '*WakeOnMagicPacket' -Value 1}