Сценарий входа в систему с net use * /delete /yes

Вопрос или проблема

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

Я пытаюсь написать скрипт, который будет:

  1. Отсоединять все сетевые диски при входе пользователя
  2. Запускать 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.

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

Оцените материал
Добавить комментарий

Капча загружается...