Skip to content
> ๐Ÿ’ป ๐Ÿง  ืงื•ื“ 1001 > โšก ื”ืคื™ืœื•ืกื•ืคื™ื” ืฉืœ PowerShell > > ๐ŸŒ๐Ÿ’ปโšก ื ื™ื”ื•ืœ ื”ืกืคืง ืฉืœ ืžืชืื ืจืฉืช Wake-on-LAN ื‘ืืžืฆืขื•ืช PowerShell

๐ŸŒ๐Ÿ’ปโšก ื ื™ื”ื•ืœ ื”ืกืคืง ืฉืœ ืžืชืื ืจืฉืช Wake-on-LAN ื‘ืืžืฆืขื•ืช PowerShell

ืžื“ืจื™ืš ืžืคื•ืจื˜ ืœื”ื’ื“ืจืช Wake-on-LAN ื‘ืืžืฆืขื•ืช PowerShell, ื”ื›ื•ืœืœ ืคืงื•ื“ื•ืช ื‘ืกื™ืกื™ื•ืช ื•ืคืชืจื•ืŸ ื‘ืขื™ื•ืช ื ืคื•ืฆื•ืช ื”ื ื•ื‘ืขื•ืช ืžื”ื‘ื“ืœื™ื ื‘ืžื ื”ืœื™ ื”ืชืงื ื™ื ืฉืœ ืžืชืืžื™ ืจืฉืช.

ืฉืœื‘ 1: ื–ื™ื”ื•ื™ ื”ืชืงืŸ.

ืœืคื ื™ ื”ื’ื“ืจืช Wake-on-LAN (WOL) ืขื‘ื•ืจ ืžืชืื ืจืฉืช, ื™ืฉ ืœื–ื”ื•ืช ื‘ืžื“ื•ื™ืง ืขื ืื™ื–ื” ื”ืชืงืŸ ืื ื• ืขื•ื‘ื“ื™ื. ืœืฉื ื›ืš, ื ืฉืชืžืฉ ื‘ืคืงื•ื“ืช PowerShell ื”ืžื—ืคืฉืช ื”ืชืงื ื™ื ืœืคื™ ื—ืœืง ืžืฉืžื (ืœื“ื•ื’ืžื”, "Realtek" ืื• "Intel").

Get-PnpDevice | Where-Object { $_.FriendlyName -like "*Realtek*" } | Select-Object FriendlyName, Status, Class, InstanceId
1

ืคืงื•ื“ื” ื–ื• ืื•ืžืจืช ืœืžืขืจื›ืช:
> "ื”ืฆื’ ืœื™ ืืช ื›ืœ ื”ื”ืชืงื ื™ื ืฉืฉืžื ืžื›ื™ืœ ืืช ื”ืžื™ืœื” ยซRealtekยป, ื•ื”ืฆื’ ื˜ื‘ืœื” ืขื ืืจื‘ืข ืขืžื•ื“ื•ืช ืขื‘ื•ืจื: ืฉื ืžืœื, ืกื˜ื˜ื•ืก, ืžื—ืœืงื” ื•ืžื–ื”ื” ืžืขืจื›ืช."

  1. Get-PnpDevice: ืžืื—ื–ืจ ืจืฉื™ืžื” ืžืœืื” ืฉืœ ื›ืœ ื”ืชืงื ื™ Plug-and-Play.
  2. | (ืฆื™ื ื•ืจ): ืžืขื‘ื™ืจ ืืช ื”ืจืฉื™ืžื” ื”ืœืื”.
  3. Where-Object { ... }: ืžืกื ืŸ ืืช ื”ืจืฉื™ืžื”, ื•ืžืฉืื™ืจ ื”ืชืงื ื™ื ืฉืฉืžื (FriendlyName) ืžื›ื™ืœ "Realtek".
  4. | (ืฆื™ื ื•ืจ): ืžืขื‘ื™ืจ ืืช ื”ืจืฉื™ืžื” ื”ืžืกื•ื ื ืช.
  5. Select-Object ...: ืžืขืฆื‘ ืืช ื”ืคืœื˜, ื•ืžืฆื™ื’ ืจืง ืืช ื”ืžืืคื™ื™ื ื™ื ื”ื“ืจื•ืฉื™ื.

ืžื•ืฆืื™ื ืืช ื”ื”ืชืงืŸ ื”ืจืฆื•ื™ ื•ืœื•ืงื—ื™ื ืืช ื”ืจืืฉื•ืŸ ืžื”ืจืฉื™ืžื”

$device = Get-PnpDevice | Where-Object { $_.FriendlyName -like "*Realtek*" } | Select-Object -First 1

*ืจื•ืฉืžื™ื ืืช ืžืืคื™ื™ื ื™ื• ืœืžืฉืชื ื™ื*

$DeviceName = $device.FriendlyName
$InstanceId = $device.InstanceId
$pmKey = "HKLM:\SYSTEM\CurrentControlSet\Enum\$InstanceId\Device Parameters"

ืฉืœื‘ 2: ื”ืจืฉืื” ื’ืœื•ื‘ืœื™ืช ืœื”ืคืขืœื”

ื”ืคืงื•ื“ื” powercfg ื ื•ืชื ืช ืœื”ืชืงืŸ ื”ืจืฉืื” "ืจืฉืžื™ืช" ืž-Windows ืœื”ืขื™ืจ ืืช ื”ืžืขืจื›ืช.

powercfg -deviceenablewake $DeviceName

ืคืงื•ื“ื” ื–ื• ืฉืงื•ืœื” ืœืกื™ืžื•ืŸ ื”ืชื™ื‘ื” "ืืคืฉืจ ืœื”ืชืงืŸ ื–ื” ืœื”ืขื™ืจ ืืช ื”ืžื—ืฉื‘ ืžืžืฆื‘ ืฉื™ื ื”".

ืคืขื•ืœืชื” ื”ื”ืคื•ื›ื” โ€“ ื”ืฉื‘ืชื”:

powercfg -devicedisablewake $DeviceName

ืฉืœื‘ 3: ื”ื’ื“ืจืช ืžื ื”ืœ ื”ืชืงืŸ.

ื”ื’ื“ืจื•ืช WOL ื ืžืฆืื•ืช ื‘ืคืจืžื˜ืจื™ื ืฉืœ ืžื ื”ืœ ื”ื”ืชืงืŸ ืขืฆืžื•, ื”ืžืื•ื—ืกื ื™ื ื‘ืจื™ืฉื•ื.
ื›ื“ื™ ืœืกืžืŸ ืืช ื”ืชื™ื‘ื” **"ืืคืฉืจ ืจืง ืœื—ื‘ื™ืœืช ืงืกื ืœื”ืขื™ืจ ืืช ื”ืžื—ืฉื‘ ืžืžืฆื‘ ืฉื™ื ื”"**,
ื ืฉืชืžืฉ ื‘ืคืงื•ื“ื” Set-ItemProperty.

# ืžื’ื“ื™ืจื™ื ืืช ื”ืžืืคื™ื™ืŸ
Set-ItemProperty -Path $pmKey -Name "*WakeOnMagicPacket" -Value 1

ืคืขื•ืœื” ื”ืคื•ื›ื” โ€“ ื”ืฉื‘ืชืช WOL (Value 0):

Set-ItemProperty -Path $pmKey -Name "*WakeOnMagicPacket" -Value 0

ื‘ืขื™ื” ืฉื ืคืจืžื˜ืจ ื–ื” ืขืฉื•ื™ ืœื”ืฉืชื ื•ืช ื‘ื™ืŸ ื™ืฆืจื ื™ื ืฉื•ื ื™ื. ืœื“ื•ื’ืžื”, ืขื‘ื•ืจ **Intel** ื–ื” *WakeOnMagicPacket, ื•ืขื‘ื•ืจ **Realtek** โ€“ WakeOnMagicPacket (ืœืœื *). ืื ื”ื”ื’ื“ืจื” ืื™ื ื” ืžื™ื•ืฉืžืช, ื‘ื“ืงื• ืืช ื”ืฉื ื”ื ื›ื•ืŸ ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” Get-ItemProperty -Path $pmKey ื•ื”ืฉืชืžืฉื• ื‘ื•.

ืฉืœื‘ 4: ื”ื’ื“ืจื” ืกื•ืคื™ืช ื‘ืืžืฆืขื•ืช CIM

ื›ื“ื™ ืœื•ื•ื“ื ืฉื”ื’ื“ืจื•ืช ื ื™ื”ื•ืœ ืฆืจื™ื›ืช ื”ื—ืฉืžืœ ื™ื•ืฉืžื• ื›ื”ืœื›ื”, ื ืฉืชืžืฉ ื‘ืชืงืŸ ื”ืžื•ื“ืจื ื™ **CIM** (Common Information Model).

# ืžื•ืฆืื™ื ืืช ืื•ื‘ื™ื™ืงื˜ ื”-CIM ื”ืžืฉื•ื™ืš ืœื”ืชืงืŸ ืฉืœื ื•
$adapterCim = Get-CimInstance -Namespace root\wmi -ClassName MSPower_DeviceEnable | Where-Object { $_.InstanceName -like "*$($instanceId.Split('\')[-1])*" }

# ืžื™ื™ืฉืžื™ื ืขืœื™ื• ืฉื™ื ื•ื™ื™ื
if ($adapterCim) {
    Set-CimInstance -CimInstance $adapterCim -Property @{ Enable = $true }
}
1

ื›ืชื™ื‘ืช ืชื’ื•ื‘ื”

ื”ืื™ืžื™ื™ืœ ืœื ื™ื•ืฆื’ ื‘ืืชืจ. ืฉื“ื•ืช ื”ื—ื•ื‘ื” ืžืกื•ืžื ื™ื *