26 lines
1.9 KiB
PowerShell
26 lines
1.9 KiB
PowerShell
function Send-WOL {
|
||
param (
|
||
[parameter(
|
||
mandatory=$true,
|
||
position=0,
|
||
ValueFromPipeline=$true,
|
||
ValueFromPipelineByPropertyName=$true)]
|
||
[ValidateLength(17,17)]
|
||
[ValidatePattern("^([0-9A-F]{2}[:-]){5}([0-9A-F]{2})$")]
|
||
[array]$MACAddress
|
||
)
|
||
foreach ($MAC in $MACAddress) {
|
||
try {
|
||
$MAC = $mac.split(':') | %{ [byte]('0x' + $_) }
|
||
$UDPclient = new-Object System.Net.Sockets.UdpClient
|
||
$UDPclient.Connect(([System.Net.IPAddress]::Broadcast),4000)
|
||
$Packet = [byte[]](,0xFF * 6)
|
||
$Packet += $MAC * 16
|
||
Write-Verbose ([bitconverter]::tostring($Packet))
|
||
[void] $UDPclient.Send($Packet, $Packet.Length)
|
||
Write-Output "WOL command sent to $MAC"
|
||
} catch [system.exception] {
|
||
Write-Output "ERROR: Unable to send WOL command to $MAC"
|
||
}
|
||
}
|
||
} |