Вопрос или проблема
Я пытаюсь избавиться от всех вручную сопоставленных сетевых дисков на всех рабочих станциях в моем домене. Я хочу, чтобы сетевые диски наших конечных пользователей сопоставлялись исключительно через GPO (GPO уже настроены).
Я пытаюсь написать скрипт, который будет:
- Отсоединять все сетевые диски при входе пользователя
- Запускать
gpupdate /f
для повторного сопоставления дисков на основе примененных GPO
Я планирую применить эту политику сценария входа только на несколько недель, до тех пор, пока не смогу убедиться, что все вручную сопоставленные диски исчезли.
Вот содержимое моего пакетного скрипта:
REM Удалить все сопоставленные диски
net use * /del /y
REM принудительно обновить групповые политики для сопоставления всех дисков согласно GPO.
gpupdate /force
REM создать директорию, чтобы убедиться, что скрипт действительно выполняется.
mkdir %USERPROFILE%\test
Я разместил этот скрипт в своем каталоге NETLOGON на контроллере домена. Скрипт выполняется, как задумано, если запустить его вручную из этого каталога. Однако, когда применяется как сценарий входа, команда net use /delete /yes
, похоже, не работает. Я проверил, что скрипт действительно выполняется во время входа с помощью mkdir %USERPROFILE%\test
.
Я даже попытался перенаправить вывод первой команды net use * /del /y > result.txt
, и вывод был таким:
“Список отсутствует”
Есть ли какая-либо причина, по которой мой скрипт работает, когда я запускаю его вручную, но не работает как сценарий входа?
Сервер: Windows 2012R2
Хост: Windows 10
У меня только что возникла проблема с использованием net use g: /delete /yes на Windows 2012R2, это вызывало конфликты при сопоставлении. Мое сопоставление на диск G приводило к тому, что оно сопоставлялось с другими серверами, и иногда появлялся дополнительный диск z, который был призрачным. Его не было в пакетном сценарии.
Если необходимо удалить сетевые диски перед реальным сопоставлением, используя общие папки на сервере 2012R2, используйте net use g: /del (ТОЛЬКО)… это будет работать на сервере 2012R2
MJ
Если пользователь является администратором, скрипты (рас)сопоставления дисков работать не будут.
С UAC у вас есть два токена и сеанса входа: один с полными правами («повышенный») и один только с ограниченными правами. Скрипты, запущенные GPO, работают с полными правами.
Сопоставленные диски отслеживаются по сеансам. Когда вы пытаетесь сопоставить или разорвать сопоставление дисков из скриптов входа/выхода, они будут доступны только программам, работающим с повышенными правами. Проводник по умолчанию никогда не работает с повышенными правами.
Вот больше информации непосредственно от Microsoft.
Чтобы обойти это, используйте следующий скрипт .reg
. После этого изменения в сопоставляемых дисках будут влиять как на полный, так и на ограниченный токен.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"EnableLinkedConnections"=dword:00000001
Это также исправляет ошибки при попытке запустить установки (или другие программы, работающие с повышенными правами) с сопоставленных дисков.
Ответ или решение
Подробное руководство по использованию скрипта входа для удаления сетевых дисков
Если вы стремитесь упорядочить управление сетевыми дисками в своей доменной среде и создать единый способ мапирования дисков через политики групп (GPO), ваш подход с использованием скрипта входа является бизнес-рациональным решением. Однако иногда выполнение сценариев может происходить не так, как ожидалось, особенно в условиях сложной инфраструктуры, включающей различия в правах доступа и управления учетными данными. Обратимся к вашей задаче и выясним, почему скрипт не работает так, как планируется.
1. Проблемы с правами и UAC
Когда вы запускаете команды, такие как net use * /delete /yes
, в контексте администратора, необходимо учитывать влияние контрольной учетной записи пользователя (UAC). Скрипты входа в Windows обычно запускаются с полными правами, но мапирование сетевых дисков отслеживается в каждом сеансе отдельно. Таким образом, даже если скрипт успешно удаляет диски в одном сеансе, они могут оставаться видимыми в других.
Чтобы учесть влияние UAC, можно изменить реестр для использования "EnableLinkedConnections". Это позволит изменениям, сделанным в одном сеансе, также отражаться на всех других сеансах:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
"EnableLinkedConnections"=dword:00000001
2. Исполнение скриптов и их журналы
Выясните, работает ли ваш скрипт корректно, добавив журналирование. Это можно сделать путём перенаправления вывода команды в файл для проведения диагностики. Например:
net use * /delete /yes > %USERPROFILE%\delete_log.txt 2>&1
Проверьте файл delete_log.txt
, чтобы убедиться, что команды выполняются без ошибок.
3. Расположение скрипта и проверка его выполнения
Убедитесь, что скрипт размещен в правильной директории (обычно это NETLOGON
) и что объекты GPO, обеспечивающие его выполнение, применяются правильно по отношению к нужным пользователям или компьютерам.
Кроме того, включите создание контрольного файла или каталога:
mkdir %USERPROFILE%\test
Это поможет убедиться в том, что скрипт действительно запускается.
4. Проблемы с синхронизацией
После удаления всех сетевых дисков, запуск gpupdate /force
для обновления политик может занимать некоторое время. Убедитесь, что ваши GPO действительно конфигурированы для правильного мапирования дисков.
SEO Оптимизация и завершение
В заключение, удаление вручную мапированных сетевых дисков с помощью сценария входа может потребовать некоторых настроек, чтобы учесть все особенности вашей среды. Убедитесь, что вы учли все факторы, включая права доступа и поведение UAC.
Для оптимального поиска решения проблем и поддержки пользователей, прилагайте логи выполнения и документируйте каждый шаг в вашем административном процессе. Это поможет быстрее масштабировать ваши решения и обеспечивать бесперебойную работу всей системы.