PowerShell/docs/wake-up.md

124 lines
3.9 KiB
Markdown
Raw Permalink Normal View History

2024-01-25 13:37:12 +01:00
Script: *wake-up.ps1*
========================
2023-05-26 12:20:18 +02:00
2023-07-29 09:45:37 +02:00
This PowerShell script sends a magic UDP packet to a computer to wake him up (requires the target computer to have Wake-on-LAN activated).
2023-05-26 12:20:18 +02:00
2023-07-29 10:04:38 +02:00
Parameters
----------
2023-05-26 12:20:18 +02:00
```powershell
2023-12-07 20:24:45 +01:00
PS> ./wake-up.ps1 [[-macAddr] <String>] [[-ipAddr] <String>] [[-udpPort] <Int32>] [[-numTimes] <Int32>] [<CommonParameters>]
2023-05-26 12:20:18 +02:00
2023-12-07 20:24:45 +01:00
-macAddr <String>
2023-05-26 12:20:18 +02:00
Specifies the host's MAC address (e.g. 11:22:33:44:55:66)
Required? false
Position? 1
Default value
Accept pipeline input? false
Accept wildcard characters? false
2023-12-07 20:24:45 +01:00
-ipAddr <String>
2023-05-26 12:20:18 +02:00
Specifies the host's IP address or subnet address (e.g. 192.168.0.255)
Required? false
Position? 2
Default value
Accept pipeline input? false
Accept wildcard characters? false
2023-12-07 20:24:45 +01:00
-udpPort <Int32>
2023-05-26 12:20:18 +02:00
Specifies the UDP port (9 by default)
Required? false
Position? 3
Default value 9
Accept pipeline input? false
Accept wildcard characters? false
2023-12-07 20:24:45 +01:00
-numTimes <Int32>
Specifies # of times to send the packet (3 by default)
2023-05-26 12:20:18 +02:00
Required? false
Position? 4
Default value 3
Accept pipeline input? false
Accept wildcard characters? false
[<CommonParameters>]
This script supports the common parameters: Verbose, Debug, ErrorAction, ErrorVariable, WarningAction,
WarningVariable, OutBuffer, PipelineVariable, and OutVariable.
```
2023-07-29 10:04:38 +02:00
Example
-------
2023-05-26 12:20:18 +02:00
```powershell
PS> ./wake-up.ps1 11:22:33:44:55:66 192.168.100.100
2024-05-19 10:25:56 +02:00
✔️ Magic packet sent 3x to IP 192.168.100.100, UDP port 9 - wait a minute until the computer fully boots up.
2023-05-26 12:20:18 +02:00
```
2023-07-29 10:04:38 +02:00
Notes
-----
2023-05-26 12:20:18 +02:00
Author: Markus Fleschutz | License: CC0
2023-07-29 10:04:38 +02:00
Related Links
-------------
2023-05-26 12:20:18 +02:00
https://github.com/fleschutz/PowerShell
2023-07-29 10:04:38 +02:00
Script Content
--------------
2023-05-26 12:20:18 +02:00
```powershell
<#
.SYNOPSIS
Wakes up a computer using Wake-on-LAN
.DESCRIPTION
2023-07-29 09:45:37 +02:00
This PowerShell script sends a magic UDP packet to a computer to wake him up (requires the target computer to have Wake-on-LAN activated).
2023-12-07 20:24:45 +01:00
.PARAMETER macAddr
2023-05-26 12:20:18 +02:00
Specifies the host's MAC address (e.g. 11:22:33:44:55:66)
2023-12-07 20:24:45 +01:00
.PARAMETER ipAddr
2023-05-26 12:20:18 +02:00
Specifies the host's IP address or subnet address (e.g. 192.168.0.255)
2023-12-07 20:24:45 +01:00
.PARAMETER udpPort
2023-05-26 12:20:18 +02:00
Specifies the UDP port (9 by default)
2023-12-07 20:24:45 +01:00
.PARAMETER numTimes
Specifies # of times to send the packet (3 by default)
2023-05-26 12:20:18 +02:00
.EXAMPLE
PS> ./wake-up.ps1 11:22:33:44:55:66 192.168.100.100
2024-05-19 10:25:56 +02:00
✔️ Magic packet sent 3x to IP 192.168.100.100, UDP port 9 - wait a minute until the computer fully boots up.
2023-05-26 12:20:18 +02:00
.LINK
https://github.com/fleschutz/PowerShell
.NOTES
Author: Markus Fleschutz | License: CC0
#>
2023-12-07 20:24:45 +01:00
param([string]$macAddr = "", [string]$ipAddr = "", [int]$udpPort = 9, [int]$numTimes = 3)
2023-05-26 12:20:18 +02:00
2023-12-07 20:24:45 +01:00
function Send-WOL { param([string]$macAddr, [string]$ipAddr, [int]$udpPort)
$broadcastAddr = [Net.IPAddress]::Parse($ipAddr)
2023-05-26 12:20:18 +02:00
2023-12-07 20:24:45 +01:00
$macAddr = (($macAddr.replace(":","")).replace("-","")).replace(".","")
$target = 0,2,4,6,8,10 | % {[convert]::ToByte($macAddr.substring($_,2),16)}
2023-05-26 12:20:18 +02:00
$packet = (,[byte]255 * 6) + ($target * 16)
2023-12-07 20:24:45 +01:00
$UDPclient = New-Object System.Net.Sockets.UdpClient
$UDPclient.Connect($broadcastAddr, $udpPort)
2023-05-26 12:20:18 +02:00
[void]$UDPclient.Send($packet, 102)
}
try {
2023-12-07 20:24:45 +01:00
if ($macAddr -eq "" ) { $macAddr = Read-Host "Enter the host's MAC address, e.g. 11:22:33:44:55:66" }
if ($ipAddr -eq "" ) { $ipAddr = Read-Host "Enter the host's IP or subnet address, e.g. 192.168.0.255" }
2023-05-26 12:20:18 +02:00
2023-12-07 20:24:45 +01:00
for ($i = 0; $i -lt $numTimes; $i++) {
2024-05-19 10:25:56 +02:00
Send-WOL $macAddr.Trim() $ipAddr.Trim() $udpPort
2023-12-07 20:24:45 +01:00
Start-Sleep -milliseconds 100
2023-05-26 12:20:18 +02:00
}
2024-05-19 10:25:56 +02:00
"✔️ Magic packet sent $($numTimes)x to IP $ipAddr, UDP port $udpPort - wait a minute until the computer fully boots up."
2023-05-26 12:20:18 +02:00
exit 0 # success
} catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber): $($Error[0])"
exit 1
}
```
2024-08-15 09:51:46 +02:00
*(generated by convert-ps2md.ps1 using the comment-based help of wake-up.ps1 as of 08/15/2024 09:50:55)*