Вкратце: мне нужен способ найти UUID сетевого подключения "xyz" из пакетного файла.
Я пытаюсь настроить скрипт, который будет помещать запланированное задание на текущего пользователя. Я намереваюсь отправить этот сценарий нескольким лицам, и поэтому он должен быть полностью автоматическим. Эта задача должна выполняться только при подключении к определенной сети.
Что я сделал:
- Создал задачу, в которой я хочу,
Task Scheduler
и экспортировал ее, чтобы использовать в качестве шаблона для задачи, которую я хочу импортировать со сценарием. - Установите сценарий для замены определенных значений в шаблоне конкретными данными пользователя.
У меня проблема с поиском UUID, который планировщик задач использует при настройке Start only if the following network connection is availiable
. Из того, что я обнаружил, это не тот же UUID, что и сетевой интерфейс UUID. Экспортированный XML-файл для этой опции выглядит так:
<NetworkSettings>
<Name>AndoidAP</Name>
<Id>{some-random-UUID-here}</Id>
</NetworkSettings>
В примере я использовал AndroidAP, который будет беспроводным устройством. Реальный случай будет проводным соединением. Не знаете, имеет ли это какое-то значение?
Любая помощь или предложения будут с благодарностью!
источник
wevtutil
перечисляет GUID, если не отформатирован как текст (т.е. отформатирован как XML). Работать со строками в пакетном режиме - такая боль, поэтому я работаю над сценарием .vbs для извлечения GUID из вывода wevtutil. Этот сценарий VBS я планирую создать из пакетного сценария и удалить после завершения. Я опубликую свое решение, как только у меня будет время закончить.UUID
вы перехватываете через некоторый CLI и пакетный скрипт или скрипт vbs? У меня есть простая идея, которая может помочь, но я хотел бы сначала получить от вас ответ, если это возможно.\\server\share
слишком правильный? Я протестирую некоторые идеи с помощью пакета, чтобы увидеть, можно ли выполнить пару проверок перед запуском скрипта.Ответы:
Ваши требования
По сути, у вас есть задача, которую вы хотите запустить, только если определенные условия ИСТИНА :
Потенциально
Вы можете использовать некоторую логику IF и просто проверить состояние условий и принять соответствующие меры, чтобы « выйти из обработки » или « продолжить обработку » остальной части определенной логики.
Предпосылки
Получите IPv4-адрес шлюза по умолчанию из
ipconfig
командыПолучить физический Mac-адрес с IP-адреса шлюза по умолчанию
ping
команду для IP-адреса шлюза по умолчаниюarp -a
команду и обратите внимание,Physical Address
что IP-адрес совпадает со значением шлюза по умолчаниюПакетный скрипт
Очевидно
GatewayIP=
, что значенияGWMacAddr=
, иFolderShr=
переменные должны быть установлены с точными значениями, чтобы это работало, как и ожидалось - я проверил и подтвердил, что это с моей стороны.Дополнительные ресурсы
источник
arp -a
даже после пинга.cmd.exe
от имени администратора. Вы можете запустить это скрытым несколькими способами, которые я знаю, как сделать, и ни один из них не сложен вообще. Посмотрите мой ответ здесь: superuser.com/questions/957267/... и посмотреть на#2
(создать скрипт VBS),#9
,#10
и#11
(выбор вариантов действий) для моей первоначальной идеи запустить скрытый , так как планировщик задач , я думаю , вы должны иметь ОпцияRun only when the user is logged on
Reply from 10.250.30.27: bytes=32 time=24ms TTL=121 Ping statistics for 10.250.30.27: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss)
но до сих пор ее не видноarp -a
. Те же результаты при запуске cmd от имени администратора.C:\scripts\process.cmd
пакетный скрипт, вызывайте его из\\server\share\scripts\process.cmd
. Я не думаю, что IP-адрес генерального директора должен меняться так часто, но сервер и ПК, как я понимаю, это отдельная история. Конечно, в другой сети с тем же IP-адресом, что и у DG, и даже если есть сервер с такими же настройками имен общих ресурсов, вероятно, не будет пакетного сценария с таким же именем, выполняющего логику. Я думаю, что простое решение, как это было бы хорошо.Получить GUID сетевого подключения
Это получит GUID для данного имени сети. Поскольку GUID уникален для каждого компьютера, этот GUID не является GUID для сети, а является уникальным идентификатором, который компьютер использует для идентификации сети. В настоящее время я не знаю критериев, которые Windows использует для идентификации сети, но на данный момент это удовлетворяет мои потребности. В моем случае подсказка не понадобится, поскольку имя сети является константой (меняется только тогда, когда компания меняет название ).
Что это делает:
Обновление: Lol. Забыл вставить скрипт. Вот так:
Автор сценария:
Сохраните это как "get GUID.cmd"
источник