Назад | Перейти на главную страницу

Как я могу запустить сценарий при изменении сетевого подключения?

Я хотел бы создать сценарий, который будет выполнять различные действия при изменении сетевого подключения. Например, если машина подключается к моей офисной сети, я могу пожелать, чтобы она:

Затем, когда машина отключена от офисной сети, она может восстановить некоторые из них.

Предположительно «активная сеть» будет основана на диапазоне IP-адресов / шлюзов, имени сети WIFI и т. Д.

Есть ли у вас какие-либо рекомендуемые инструменты для этого? Я вижу, что что-то подобное применимо ко многим ИТ-специалистам, поэтому я уверен, что есть несколько хороших советов.

Обратите внимание, что это желательно, чтобы работать при изменении сети, а не только при входе / выходе пользователя.

Вы можете сделать это, используя Диспетчер задач:

  1. Щелкните правой кнопкой мыши «Библиотеку планировщика заданий».
  2. Нажмите «Создать задачу».
  3. В поле «Имя:» напишите название Вашей новой задачи.
  4. Убедитесь, что в области «Параметры безопасности» есть флажки там, где они должны быть.
  5. На вкладке «Триггеры» нажмите «Создать ...»
  6. Выберите «Начать задание:» => «По событию».
  7. Выберите «Журнал:» => «Microsoft-Windows-NetworkProfile / Operational».
  8. Выберите «Источник:» => «NetworkProfile».
  9. Напишите «ID события:» => 10000
  10. ОК этот диалог.
  11. На вкладке «Действия» нажмите «Создать ...»
  12. Выберите «Действие:» => «Запустить программу».
  13. Для «Программа / сценарий:» перейдите к Вашему любимому файлу сценария.
  14. ОК этот диалог.
  15. Настройте вкладку «Условия», относящуюся к «холостому», «переменному току» и т. Д. По своему вкусу.
  16. Также выполните настройку на вкладке «Настройки».
  17. ОК, здесь все готово.
  18. Протестируйте новое событие.

На всякий случай там же доступны события для компьютера «Приостановить» и «Возобновить». Я, например, использую их, чтобы останавливать и перезапускать Hamachi при этих событиях, поскольку в противном случае на моем компьютере возникают проблемы.
Для компьютера «Suspend» вы можете использовать журнал «Microsoft-Windows-Kernel-Power / Thermal-Operational», источник «Kernel-Power» и идентификатор события 42.
Для компьютера «Возобновить» можно использовать журнал «Система», источник «Средство устранения неполадок с питанием» и идентификатор события 1.

Для входа / выхода пользователя я не знаю событий в Планировщике заданий (но я считаю, что они также доступны там), но вы можете настроить его здесь:

  1. Запуск gpedit.msc
  2. Откройте «Конфигурация пользователя»
  3. Откройте "Настройки Windows"
  4. Нажмите "Сценарии (вход / выход)"
  5. На правой панели вы можете назначить сценарии для событий «Вход» и «Выход». Обратите внимание: если вы назначаете несколько сценариев, не предполагайте, что они выполняются синхронно. Они не могут. В этом случае используйте вместо этого один сценарий, который последовательно вызывает другие сценарии. Я не проверил, под какой учетной записью запускаются эти скрипты - пользовательская или системная?

Вы можете сделать аналогичные действия для событий компьютера «Запуск» и «Завершение работы» в папке «Конфигурация компьютера» в том же окне. Сценарий запуска запускается под системной учетной записью до того, как пользователь войдет в систему.

Услуга "Распознавание сетевого местоположения" (http://msdn.microsoft.com/en-us/library/ms739931(VS.85).aspx) в Windows XP (и 2000? Я не помню ...) и выше включат эту функцию, но я не нашел, где кто-нибудь написал приложение, чтобы воспользоваться этим. Я бы сам хотел что-то написать, но у меня нет свободных циклов, чтобы даже подумать об этом.

Это не была бы простая мелочь на VBScript, но и кодирования было бы не так уж и много. Может быть, кто-нибудь подхватит идею и воплотит ее в жизнь. Есть даже образец кода на http://www.microsoft.com/downloads/details.aspx?familyid=ef8a6228-f11d-4ba0-b73e-dd8dc7dd11e8&displaylang=en.

Я много раз хотел эту функциональность, и я думаю, что многие люди хотели бы ее увидеть.

У меня был некоторый успех с Сетевые профили перед.

Используя платформу .net версии 2, можно использовать пространство имен System.Net.NetworkInformation. Отсюда можно определить:

доступность сети: NetworkAvailabilityChangedEventHandler () изменения сетевого адреса: NetworkAddressChangedEventHandler () ipaddress: IPAddressInformation

и так далее.

Я не знаю, насколько это доступно через PowerShell, потому что я им не пользуюсь. Но я написал очень простое приложение на панели задач vb.net, которое просто отслеживает доступность сети и подключается к общему сетевому ресурсу, когда сеть доступна. Если вас интересуют простые элементы кода, дайте мне знать.

Это своего рода косой и частичный ответ (и даже не задокументированный, потому что я не могу найти исходную статью), но я почти уверен, что в Windows 7 есть лист свойств объекта принтера, позволяющий изменять значения по умолчанию в зависимости от подсеть.

Я также хотел бы увидеть функции, относящиеся к остальной части вашего списка.

Вы можете создать командный файл, который считывает результаты команды ipconfig и запускать его каждые 5 секунд или около того ...