PC/Software

[소개] Powershell Script를 이용 WOL 사용하기

천경지위 2024. 5. 10. 21:21

 

Wake On Lan  요즘 거의 필수로 설치되어 있는 랜카드를 통해 컴퓨터를 원격으로 켜는 방법 입니다. 

윈도우 11 기준 설명을 대략적으로 하겠습니다. 

 

#1.  제어판 - 하드웨어및 소리 - 전원 옵션 - 시스템 설정에서 빠른 시작 켜기 를 꺼주셔야 (Disabled) 합니다. 

#2.  Bios 에서 WOL 관련 옵션을 활성화 설정 해주셔야 합니다.  메인보드마다 위치도 방법도 달라지므로 메인 보드 메뉴얼을 참고 하세요... 

#3.  장치 관리자 - 네트워크 어댑터 - 사용중인 랜카드 (속성) 화면에서  고급탭에 있는 WOL 관련 옵션 을 활성화 해주셔야 합니다.  사용중인 랜카드에 따라 매직패킷 , PME 등의 파워 관리 관련 옵션을 같이 활성화 해주셔야 할수도 있습니다. 

 

WOL 사용할 원격으로 켜지는 컴퓨터의 랜카드 하드웨어 주소 (Mac Adress)를 확인 합니다. 

실제 물리적 주소가 아닌 임시할당된 MAC을 사용하는경우 실제 하드웨어 물리적 주소를 확인해주셔야 합니다. 

 

wol.bat

@echo off
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& './wol.ps1' 'Mac 주소' "

 

 

wol.ps1

[cmdletBinding()]
param(
	[Parameter()]
	[ValidatePattern('(^([0-9a-fA-F]{2}[\.:-]{0,1}){5}[0-9a-fA-F]{2}$)|(^([0-9a-fA-F]{4}\.[0-9a-fA-F]{4}\.[0-9a-fA-F]{4})$)')]
	[string]$mac,
	[string]$ip="255.255.255.255",
	[int]$port=9
)
	$broadcast = [Net.IPAddress]::Parse($ip)

	$mac=$mac.ToUpper()
	$mac=(($mac.replace(":","")).replace("-","")).replace(".","")
	$target=0,2,4,6,8,10 | % {[convert]::ToByte($mac.substring($_,2),16)}
	$packet = (,[byte]255 * 6) + ($target * 16)

	$UDPclient = new-Object System.Net.Sockets.UdpClient
	$UDPclient.Connect($broadcast,$port)
	[void]$UDPclient.Send($packet, 102)
	
	#User Output
	0,2,4,6,8 | % {$OutMac+="$($mac.substring($_,2))`:"}
	$OutMac+=$Mac.substring(10,2)
	Write-HOST "A Magic-Packet was send to $ip`:$port to wake up '$OutMac'"

 

255.255.255.255 로 입력된 IP주소는  같은 네트워크 일때는 그대로 사용하셔도 문제가 없으며 , 다른 네트워크일경우 고정된 IP주소를 찾아 입력해주셔야만 합니다.  동적 네트워크를 이용하는경우 공유기의 DDNS 기능등을 활용하여 컴퓨터가 꺼져있더라도 해당 네트워크를 접근할수 있는 방법을 강구해야만 가능합니다. 

또한 외부 네트워크를 이용하는경우 방화벽이나 여러가지 상황에 따라 추가 작업을 해주셔야만 합니다. 

 

위 wol.bat 파일과 wol.ps1 파일을 위의 내용대로 만들어 저장해 적당한곳에 저장해두시고 사용하실수 있습니다. 

 

이는 기존 WOL 사용을 하고 있으나 별도의 소프트웨어등을 설치하는게 싫으신 분들을 위한 

윈도우 파워쉘 스크립트 기능을 활용한 WOL 스크립트 입니다. 

 

스크립트 원본은 링크를 참고하시면 됩니다. 

https://gist.github.com/KhoraLee/8d978cf815d452f7bf33e839d0c1a9f3