PowerShell CMD Wake On Lan - Paket erstellen
Guten Abend,
ich habe unter
TechNet.Microsoft.Com
eine gute Anleitung gefunden, um Wake-On-Lan Pakete ohne lästige Software abzuschicken.
Das funktioniert auch, jedoch stören mich da ein paar Dinge:
Kann man das Script in Batch umschreiben, sodass ich nicht die ExecutionPolicy auf Unrestricted o.ä. setzen muss (also dass diese auf Restricted bleibt)?
Ich habe mir das so vorgestellt, dass ich einfach eine Batch-Datei erstelle und in dieser dann den Code auf einen Ein-Zeiler (oder mehr) herunterbreche, um die Restricted-ExecutionPolicy zu umgehen. (Einzelne PowerShell-Commandos lassen sich ja dann auch noch in Batch ausführen)
Dabei müssen/sollen IP, Mac, etc. nicht variabel sein.
Dass müsste ja am Ende in etwa so aussehen:
Bis zum Punkt UDPclient.Connect komme ich auch, nur beim Entscheidenden hakt's
Vielen Dank für eure Hilfe
ich habe unter
TechNet.Microsoft.Com
eine gute Anleitung gefunden, um Wake-On-Lan Pakete ohne lästige Software abzuschicken.
Das funktioniert auch, jedoch stören mich da ein paar Dinge:
Kann man das Script in Batch umschreiben, sodass ich nicht die ExecutionPolicy auf Unrestricted o.ä. setzen muss (also dass diese auf Restricted bleibt)?
Ich habe mir das so vorgestellt, dass ich einfach eine Batch-Datei erstelle und in dieser dann den Code auf einen Ein-Zeiler (oder mehr) herunterbreche, um die Restricted-ExecutionPolicy zu umgehen. (Einzelne PowerShell-Commandos lassen sich ja dann auch noch in Batch ausführen)
Dabei müssen/sollen IP, Mac, etc. nicht variabel sein.
Dass müsste ja am Ende in etwa so aussehen:
Batch
@echo off
powershell
$UDPclient = new-Object System.Net.Sockets.UdpClient
$UDPclient.Connect( << broadcast (kann ja direkt ohne Konvertierung etc.. eingetippt werden, ist ja fix>>),9)
[void]$UDPclient.Send((,[byte]255 * 6) + (0,2,4,6,8,10 | % {[convert]::ToByte( <<mac-Adresse mit , -Format kann ja auch fest, da fix>>.substring($_,2),16)} * 16)
Bis zum Punkt UDPclient.Connect komme ich auch, nur beim Entscheidenden hakt's
Vielen Dank für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 280466
Url: https://administrator.de/contentid/280466
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo
Ich mache das über das schlanke Tool wol.exe
Benötigt keine Installation, wird einfach auf dem Server ins system32 kopiert, und kann mittels
wol.exe aabbccdd1122 ausgeführt werden
Gruss Urs
Ich mache das über das schlanke Tool wol.exe
Benötigt keine Installation, wird einfach auf dem Server ins system32 kopiert, und kann mittels
wol.exe aabbccdd1122 ausgeführt werden
Gruss Urs
Mit deinem PS Code von oben, für das direkte ausführen in der CMD:
Wenn es in eine Batch kommen soll musst du das Prozentzeichen verdoppeln...
Gruß jodel
@echo off
set "mac=00:00:00:00:00:00"
set "ip=255.255.255.255"
powershell -ExecutionPolicy ByPass -Command "&{$mac = '%mac%' -replace '[\|:]','';$UDPclient = new-Object System.Net.Sockets.UdpClient; $UDPclient.Connect('%ip%',9);[void]$UDPclient.Send((,[byte]255 * 6) + ((0,2,4,6,8,10 | %% {[convert]::ToByte($mac.substring($_,2),16)}) * 16) , 102)}"
Gruß jodel
ist oben korrigiert ... (Achtung: ist für eine Batch angepasst, d.h das Prozentzeichen für die ForEach-Schleife im Powershellkonstrukt wurde verdoppelt!!). Bei Ausführung direkt auf der Kommandozeile muss es durch ein einfaches ersetzt werden)