Powershell: Script para arrancar máquina vía Wake On Lan
Entrada rápida…
Os dejo un script para poder lanzar vía comando de Powershell un arranque de máquina vía Wake On Lan. Lo hago desde mi MacOS con Powershell instalado, por si las barras no coinciden del todo, pero no tenía un Windows a mano.
Parto de que yo ya tengo Wake On Lan, y mi test es sobre una máquina que ya se que funciona y que la estoy arrancando vía WoL a través de router.
Lo haré sobre la máquina PVE1 de la imagen con la siguiente MAC:
Lo intento hacer todo con comandos. Creo un fichero vacío:
1 2 3 4 5 6 7 |
PS /Users/elblogdenegu> New-Item script-wol.ps1 -ItemType File Directory: /Users/raulunzue Mode LastWriteTime Length Name ---- ------------- ------ ---- ----- 10/12/2023 20:02 0 script-wol.ps1 |
Agrego los datos de un fichero que he estado preparando y compruebo:
1 2 |
PS /Users/elblogdenegu> $From = Get-Content pruebas.txt PS /Users/elblogdenegu> Add-Content -Path ./script-wol.ps1 -Value $From |
Ahora lanzamos el script, que tiene el siguiente contenido:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
PS /Users/elblogdenegu> Get-Content ./script-wol.ps1 # EL BLOG DE NEGU # MAC DEL EQUIPO CON WoL ACTIVADO $MacPCWoL = "60:BE:B4:0A:83:92" # CONVERTIMOS MAC A MATRIZ BYTES $MacByteArray = $MacPCWoL -split "[:-]" | ForEach-Object { [Byte] "0x$_"} [Byte[]] # LANZAMOS EL PAQUETE MAGICO $MagicPacket = (,0xFF * 6) + ($MacByteArray * 16) $UdpClient = New-Object System.Net.Sockets.UdpClient $UdpClient.Connect(([System.Net.IPAddress]::Broadcast),7) $UdpClient.Send($MagicPacket,$MagicPacket.Length) $UdpClient.Close() |
Nos devuelve lo siguiente, y nos responderá la máquina cuando arranque:
1 2 3 4 5 6 |
PS /Users/elblogdenegu> ./script-wol.ps1 IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Byte[] System.Array 102 |
Espero os parezca útil…
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?