По злой иронии и в лучших традициях жанра, посреди трудовых будней где-то «на той стороне» сменили условия доступа к важному веб-ресурсу, порекомендовав внести соответствующую запись в файл hosts на стороне клиентских машин. Разумеется, можно пойти и путём создания узла на локальном dns-сервере, но этот метод достаточно долгий и для компьютеров одного подразделения намного проще спроектировать объект групповой политики и перезагрузить машины. В этом случае, нужно иметь только тот самый файл hosts с прописанными параметрами.
Итак, сегодня на повестке пятничного вечера — подмена hosts эталонным файлом с помощью скрипта PS1 и групповых политик. Кстати, скрипт в нашем случае будет до безобразия прост:
copy-item -Path "\\share\files\hosts" -Destination "$env:SystemRoot\system32\drivers\etc\hosts" -Force
С помощью командлета copy-item эталонный файл hosts из общей папки копируется на целевой хост, а чтобы операционка нас не отфутболила, запретив замену файла, добавляем force. Обратите внимание, что путь до папки system32 я унифицировал с помощью переменной $env:SystemRoot.
Можете проверить работу скрипта на своей машине (если вы перед этим озаботились бэкапом своего файла hosts, конечно) и убедиться, что нигде не ошиблись. Если файл успешно подменился эталоном, приступаем к созданию объекта групповой политики. В моём случае, он так называется — Файл hosts.
Данная политика должна выполняться в контексте конфигурации компьютера, поэтому отправляемся по пути, указанном на скриншоте:

Выбираем сценарий автозагрузки, переходим на вкладку «Сценарии PowerShell» и добавляем файл скрипта:

Окействуем и связываем объект групповой политики с нужным подразделением. Теперь всё, что нужно — это обновить политику на хостах и перезагрузить их, а об этом я уже рассказывал где-то здесь.