Тема: VBS или JS: wake on lan - как включить удаленный комп?
Хотелось бы написать скрипт включения удаленного компа.
Компы в локальной сети.
Функция Wake on LAN в BIOS есть - во всяком случае заявлена.
Спасибо за идеи.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Windows Script Host, HTA (VBScript, JScript) → VBS или JS: wake on lan - как включить удаленный комп?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Хотелось бы написать скрипт включения удаленного компа.
Компы в локальной сети.
Функция Wake on LAN в BIOS есть - во всяком случае заявлена.
Спасибо за идеи.
Полно утилит командной строки, которые это реализуют. Вызывайте их из скрипта.
Например вот прога: http://bolshe.shacknet.nu/woncli.html
Уважаемые, как думаете - реально ли вообще скриптами определить наличие настройки wake up on lan на удаленных машинах (домен)?
Какие именно настройки?
К примеру, что в BIOSе "Remote Wake Up" переключен из Off в On. Драйвера сетевой карты по идее про это должны "знать", т.е. каким-то макаром может можно удаленную систему как-то опросить по этому поводу?..
К примеру, что в BIOSе "Remote Wake Up" переключен из Off в On. Драйвера сетевой карты по идее про это должны "знать", т.е. каким-то макаром может можно удаленную систему как-то опросить по этому поводу?..
Rom5,
поделюсь своим опытом в этом вопросе.
Скажу сразу - пока от этой идеи отказался в силу того, что вопрос в конечном итоге упирается не в программные решения, а в железо.
Т.е. можно написать работающий скрипт, но вероятность его работоспособности на другой машине под большим вопросом.
1. BIOS должен поддерживать возможность Wake on LAN (WoL). Но определять, а уж тем более самому устанавливать параметры BIOS универсально невозможно. К материнским платам могут прикладываться утилиты работы с данной платой и данным BIOS - но универсального способа нет.
Я считаю, что это не самая большая проблема. Более того - установка BIOS, на мой взгляд, принципиально ручная операция. "Программно" такого наворотить можно - комп умрет.
2. Хуже всего, что WoL должна поддерживать еще и сетевая плата. Я проводил эксперименты на не самой, казалось бы, ацтойной сетевухе - 3COM EtherLink. Но у неё как раз этого свойства и не оказалось.
В этом вопросе я наткнулся на такие грабли. Если войти в свойства сетевой платы, то на закладке Управление электропитанием можно выставить галочку Разрешить устройству вывод компьютера из ждущего режима. Сделать это можно в том числе и программно - соответствующий скрипт в конце моего поста.
Но! Если на вкладке Дополнительно вашего сетевого девайса нет что-то типа WakeOnLan from PowerOff - Enable - то ваш комп по "магическому пакету" никогда не проснется. Будь этот пакет хоть трижды "магическим".
Понятно, что моно сменить сетевую плату - если она не на матери, кстати. Но это не комильфо.
Скрипт разрешения всем сетевым устройствам локального компа Wake On Lan:
Option Explicit
Dim colNetworkAdapters
Dim objNetworkAdapter
Dim strDevInstanceName
Dim strNetworkAdapterID
'Query for all of the Win32_NetworkAdapters that are wired Ethernet (AdapterTypeId=0 corresponds to Ethernet 802.3)
Set colNetworkAdapters = GetObject("WinMgmts:{impersonationLevel=impersonate}//./root/Cimv2")_
.ExecQuery("SELECT * FROM Win32_NetworkAdapter WHERE AdapterTypeId=0")
WScript.Echo "Enabling WoL for the following adapters:"
For Each objNetworkAdapter In colNetworkAdapters
WScript.Echo " " & objNetworkAdapter.Name & " [" & objNetworkAdapter.MACAddress & "]"
strNetworkAdapterID = UCase(objNetworkAdapter.PNPDeviceID)
'Query for all of the MSPower_DeviceWakeEnable classes
Dim colPowerWakeEnables
Dim objPowerWakeEnable
Set colPowerWakeEnables = GetObject("WinMgmts:{impersonationLevel=impersonate}//./root/wmi")_
.ExecQuery("SELECT * FROM MSPower_DeviceWakeEnable")
'Compare the PNP Device ID from the network adapter against the MSPower_DeviceEnabled instances
For Each objPowerWakeEnable In colPowerWakeEnables
'We have to compare the leftmost part as MSPower_DeviceEnabled.InstanceName contains an instance suffix
strDevInstanceName = UCase(Left(objPowerWakeEnable.InstanceName, Len(strNetworkAdapterID)))
'Match found, enable WOL
If StrComp(strDevInstanceName, strNetworkAdapterID)=0 Then
objPowerWakeEnable.Enable = True
objPowerWakeEnable.Put_ 'Required to write the value back to the object
End If
Next
'Query for all of the MSNdis_DeviceWakeOnMagicPacketOnly classes
Dim colMagicPacketOnlys
Dim objMagicPacketOnly
Set colMagicPacketOnlys = GetObject("WinMgmts:{impersonationLevel=impersonate}//./root/wmi")_
.ExecQuery("SELECT * FROM MSNdis_DeviceWakeOnMagicPacketOnly")
'Compare the PNP Device ID from the network adapter against the MSNdis_DeviceWakeOnMagicPacketOnly instances
For Each objMagicPacketOnly In colMagicPacketOnlys
'We have to compare the leftmost part as MSNdis_DeviceWakeOnMagicPacketOnly.InstanceName contains an instance suffix
strDevInstanceName = UCase(Left(objMagicPacketOnly.InstanceName, Len(strNetworkAdapterID)))
'Match found, enable WOL for Magic Packets only
If StrComp(strDevInstanceName, strNetworkAdapterID)=0 Then
objMagicPacketOnly.EnableWakeOnMagicPacketOnly = True 'Set to false if you wish to wake on magic packets AND wake patterns
objMagicPacketOnly.Put_ 'Required to write the value back to the object
End If
Next
Next
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться