Единый логон-скрипт для AD
Моя попытка навести порядок и унификацию при подключении сетевых дисков в AD.
Возможна работа как через индивидуальные групповые политики, так и через политику AD по-умолчанию.
Идея состоит в следующем: храним описание вариантов подключений в текстовых файлах, с указанием группы для которой это работает, и анализируем при запуске грeппы конкретного пользователя с использованием dsget и dsquery.
Структура хранимых описаний такова: групповые и общедоменные назначачения хранятся в едином файле расположенном в корне NETLOGON(возможны варианты), а пользовательские назначения располагаются в папках с пользовательским именем входа в систему.
Также в отдельных файлах храним описание запускаемых скриптов для групп и пользователей.
Цель - получить прозрачный и универсальный алгоритм входа в систему единый как для обычного входа, так и для терминального, без черезмерного усложнения групповых политик.
Структура решения:
\dsget.exe - файл из RK для получения списка групп пользователя
\dsquery.dll- файл из RK для получения списка групп пользователя
\dsquery.exe- файл из RK для получения списка групп пользователя
\logon.cmd - собственно тело скрипта
\logon.vbs - костыль для запуска без отображения окна консоли - именно он должен быть назначен в качестве логон скрипта
\rs_list.txt - список групповых и общедоменных назначений подключаемых дисков с указанием группы
\sc_list.txt - список групповых и общедоменных назначений выполняемых скриптов с указанием группы
\_SCRIPT\ - папка с групповыми и общедоменными скриптами
\_SCRIPT\1C.cmd - пример скрипта
\USER1\rs_list.txt- список назначений подключаемых дисков для конкретного пользователя(без указания группы)
\USER1\sc_list.txt- список назначений выполняемых скриптов для конкретного пользователя(без указания группы)
\USER2\rs_list.txtсписок назначений подключаемых дисков для конкретного пользователя(без указания группы)
\USER2\sc_list.txt- список назначений выполняемых скриптов для конкретного пользователя(без указания группы)
Прикрепляю файл с телом скрипта и тестовой структурой.
Приветствуются пожелания по доработке ;)
Добавил ключ рекурсивного анализа вхождения в группы.
И на всякий случай тело скрипта в текстовом виде:
@ECHO OFF :: Буквы дисков зарезервированные под пользовательские сетевые подключения SET "EXLUDE_LETTER=D: E: F: J: H: I: J:" "%~dp0dsquery.exe" user -d "%USERDOMAIN%" -samid "%USERNAME%"|^ %~dp0dsget.exe user -memberof |findstr /I /C:"CN=Domain Users,"&&( :: Удаление текущих сетевых подключений FOR /F "usebackq tokens=2 delims= " %%a IN (`net use^|find ":"^|find "\\"^|FINDSTR /V /I "%EXLUDE_LETTER%"`) DO ( 1>NUL 2>&1 NET USE /DELETE %%a) :: Добавление групповых сетевых подключений IF EXIST "%~dp0rs_list.txt" ( FOR /F "usebackq tokens=1,2,3 eol=; delims=|" %%a IN (`TYPE "%~dp0rs_list.txt"^|FIND "\\"`) DO ( "%~dp0dsquery.exe" user -d "%USERDOMAIN%" -samid "%USERNAME%"|^ %~dp0dsget.exe user -memberof -expand |1>NUL 2>&1 findstr /I /C:"CN=%%~c,"&&( 1>NUL 2>&1 NET USE %%a: %%b /PERSISTENT:NO))) :: Выполнение групповых скриптов IF EXIST "%~dp0sc_list.txt" ( FOR /F "usebackq tokens=1,2 eol=; delims=|" %%a IN (`TYPE "%~dp0sc_list.txt"^|FINDSTR /I ".cmd .bat"`) DO ( "%~dp0dsquery.exe" user -d "%USERDOMAIN%" -samid "%USERNAME%"|^ %~dp0dsget.exe user -memberof -expand |1>NUL 2>&1 findstr /I /C:"CN=%%~b,"&&( IF EXIST "%~dp0%%~a" CALL "%~dp0%%~a"))) :: Добавление пользовательских сетевых подключений IF EXIST "%~dp0%USERNAME%\rs_list.txt" ( FOR /F "usebackq tokens=1,2 eol=; delims=|" %%a IN (`TYPE "%~dp0%USERNAME%\rs_list.txt"^|FIND "\\"`) DO ( 1>NUL 2>&1 NET USE %%a: %%b /PERSISTENT:NO)) :: Выполнение пользовательских скриптов IF EXIST "%~dp0%USERNAME%\sc_list.txt" ( FOR /F "usebackq tokens=1 eol=; delims=|" %%a IN (`TYPE "%~dp0%USERNAME%\sc_list.txt"^|FIND /I ".cmd"`) DO ( IF EXIST "%~dp0%%~a" CALL "%~dp0%%~a")) ) EXIT 0
Вложение | Размер |
---|---|
logon_script.7z | 143.77 КБ |
- Блог пользователя yurkesha
- Версия для печати
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Похожие материалы по этой теме на сайте
Содержимое | |
---|---|
Интерпретатор CMD - вывод переменных со спецсимволами на экран и в файл |
Известная, но слабоосвещенная тема - обработка в коммандном интерпретаторе CMD данных со спецсимволами. |
Скрипты для CMD |
Скрипты выполняемые интерпретатором CMD.EXE - стандартной консольной оболочкой для Win2000/WinXP/Vista/Seven/Win8/Win2000 Server/Win2003/Win2008. |
Страховое копирование по списку |
Относительно простой вариант резервного копирования по списку файлов/папок с учетом типа резервной копии и количества хранимых копий по типам. Классические типы: дневная-недельная-месячная-годовая копии. Кодировка скрипта CP866.... |
Преобразование файлов 1CClientBankExchange в табличную форму |
Лично мне периодически приходилось сталкиваться с обработкой данных не в табличной форме, а в "именованном формате" то есть когда каждый параметр пишется на отдельной строке в виде Параметр=Значение параметра причем файл... |
Чтение данных из реестра в переменную окружения |
Продвинутый кросплатформенный модуль для встраивания в скрипты, позволяющий в удобной форме получать данные из реестра для дальнейшего использования(как всегда - кодировка скрипта CP866): |
Перевод столбца в строку |
Преобразование столбца в строку с заданными разделителями и обрамлением. Кодировка скрипта CP866. |
Новости российского отделения корпорации Майкрософт |
Федеральная служба по техническому и экспортному контролю (ФСТЭК) вручила сертификаты для операционных систем Windows 8 и Windows Server 2012. Вот полный список сертифицированных ОС на сегодняшний день: |
Настройка TS Easy Print на сервере терминалов Windows Server 2012 R2 |
Технология TS Easy Print является альтернативой стандартной службе печати, появилась впервые в Windows Server 2008R2. |
Сейчас на сайте
Пользователей онлайн: 0.
Пользователи
- neal83
- Platokom
- hpv
- AvazBeK1
- Gleb Skrobot
- sdfsdfsdfsdfsf
- Amofr
- famitator
- rhamzes
- ihtiander
Комментарии
Класс. Большое спасибо.
Класс. Большое спасибо.
Страницы