|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Скрипт для копирования пользователей. |
|
CMD/BAT - Скрипт для копирования пользователей.
|
Старожил Сообщения: 440 |
Профиль | Отправить PM | Цитировать Вот кстати то что получилось в результате. Может кому пригодится.
users_copy.bat @echo off SetLocal EnableDelayedExpansion set home=%cd% set pspath=%home%\PsTools rd /s /q users md users cd /d users for /f "tokens=1,2,3 delims= " %%A in ('net user') do ( Set /A count +=1 call :copy_user %%A Set /A count +=1 call :copy_user %%B Set /A count +=1 call :copy_user %%C ) echo Exit pause exit :copy_user chcp 1251 find /i "%1" %home%\exclusions.txt if %errorlevel%==1 ( echo errorlevel=%errorlevel% md %1 call :copy_profile %1 ) goto :eof :copy_profile For /F "Tokens=1" %%i In ('2^>Nul %pspath%\PsGetSid "%1"^|FindStr /BIC:"S-"') Do Set $UserSID=%%i For /F "Tokens=1,2*" %%i In ('REG Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%$UserSID%"^|FindStr /BIRC:" *ProfileImagePath "') Do Set $UserProfile=%%k echo user=%1 echo $UserSID=%$UserSID% echo $UserProfile=%$UserProfile% for /f "tokens=1,*" %%A in (%home%\settings.txt) do ( echo %%A | xcopy /E "%$UserProfile%\%%B" "%1\%%B" ) goto :eof exclusions.txt ------------------------------------------------------------------------------- Команда Учетные выполнена записи пользователей успешно успешно. ASPNET IUSR_SERVER IWAM_SERVER SUPPORT_388945a0 test Гость f перед строкой если надо скопировать только конкретный файл d если всю директорию settings.txt для примера Цитата amel27:
|
||
Отправлено: 21:21, 26-04-2009 |
Старожил Сообщения: 440
|
Профиль | Отправить PM | Цитировать Думаю как бы скопировать ключи реестра (меня оптьже волнуют пути к базам 1с7) из HKCU копируемых пользователей.
Не могу найти где они лежат. |
Отправлено: 04:02, 27-04-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата mitiya:
- сохраняются ключи целиком, а не отдельные параметры; - в REG-файлах нужно еще как-то заменить "HKEY_USERS\TEMP" на "HKEY_CURRENT_USER" @Echo Off Set $Home=%~dp0 Set $Root=. Set FileIncl=%$Home%FileIncl.txt Set UserExcl=%$Home%UserExcl.txt Set HKCUIncl=%$Home%HKCUIncl.txt PushD %$Root% If Exist users RD /S /Q users MD Users CD Users For /F "Tokens=1,2" %%i In ('WMIC UserAccount Where LocalAccount^=True Get Name^,SID^,Status^|FindStr /IERC:"OK *"') Do Call :CopyUserProfile %%i %%j PopD Exit :CopyUserProfile :: Сверка имени пользователя со списком исключения FindStr /IXC:"%1" %UserExcl% If Not ErrorLevel 1 GoTo :EOF CHCP 1251 >Nul :: Получение пути к профилю пользователя For /F "Tokens=1,2*" %%i In ('2^>Nul REG Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%2"^|FindStr /BIRC:" *ProfileImagePath"') Do Call Set $UserProfile=%%k If "%$UserProfile%"=="" GoTo :EOF :: Копирование файлов/каталогов по списку For /F "UseBackQ Tokens=* Delims=" %%A In ("%FileIncl%") Do If Exist "%$UserProfile%\%%A" XCopy /E/H/Q "%$UserProfile%\%%A" "%1\Files\%%A\" :: Копирование веток реестра по списку REG Load HKU\TEMP "%$UserProfile%\NTUSER.DAT" >Nul If ErrorLevel 1 GoTo :EOF For /F "UseBackQ Delims=" %%i In ("%HKCUIncl%") Do ( @Echo F|XCopy /Q/R/V "%~dpnx0" "%1\Regis\%%i.reg" >Nul If Exist "%1\Regis\%%i.reg" DEL /Q/F "%1\Regis\%%i.reg" REG Export "HKU\TEMP\%%i" "%1\Regis\%%i.reg" /Y ) REG Unload HKU\TEMP >Nul CHCP 866 >Nul GoTo :EOF |
|
Отправлено: 08:55, 27-04-2009 | #3 |
Старожил Сообщения: 440
|
Профиль | Отправить PM | Цитировать Цитата:
Так же не удается загрузить файл NTUSER.DAT когда пользователь вошел в систему, ну это логично конечно, но мне кажется должен быть способ подключится к его реестру если он вошел все равно. Можно наверно конечно было бы исполнить команду по экспорту ключей от его имени, но тогда нужно где-то хранить пароли для всех пользователей. |
|
Отправлено: 11:20, 27-04-2009 | #4 |
Старожил Сообщения: 440
|
Профиль | Отправить PM | Цитировать Цитата amel27:
Кстати я так понял что подключенные-то пользователи как раз появляются в user со своим сидом , так что нужно как-то только проверить подключен ли он сейчас , наверно можно с помощью errorlevel после Цитата amel27:
|
|||
Отправлено: 11:57, 27-04-2009 | #5 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата mitiya:
Цитата mitiya:
@Echo Off Set $Home=%cd% Set $Root=. Set FileIncl=%$Home%FileIncl.txt Set UserExcl=%$Home%UserExcl.txt Set HKCUIncl=%$Home%HKCUIncl.txt PushD %$Root% If Exist users RD /S /Q users MD Users CD Users For /F "Tokens=1,2" %%i In ('WMIC UserAccount Where LocalAccount^=True Get Name^,SID^,Status^|FindStr /IERC:"OK *"') Do Call :CopyUserProfile %%i %%j PopD Exit :CopyUserProfile :: ------------- :: %1 - User Name :: %2 - User SID :: ------------- CHCP 1251 >Nul :: Сверка имени со списком исключения FindStr /IXC:"%~1" %UserExcl% If Not ErrorLevel 1 GoTo :EOF :: Получение пути к профилю пользователя Set $UserProfile= For /F "Tokens=1,2*" %%i In ('2^>Nul REG Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\%~2"^|FindStr /BIRC:" *ProfileImagePath"') Do Call Set $UserProfile=%%k If "%$UserProfile%"=="" GoTo :EOF :: Копирование файлов/каталогов по списку For /F "UseBackQ Tokens=* Delims=" %%A In ("%FileIncl%") Do Call :CopyUserFile "%$UserProfile%\%%A" "%~1\Files\%%A" :: Копирование веток реестра по списку REG Load HKU\TEMP "%$UserProfile%\NTUSER.DAT" >Nul 2>&1 If Not ErrorLevel 1 ( Call :CopyUserRegKeys "%~1" "HKU\TEMP" REG Unload HKU\TEMP >Nul ) REG Query "HKU\%~2" >Nul 2>&1 If Not ErrorLevel 1 Call :CopyUserRegKeys "%~1" "HKU\%~2" CHCP 866 >Nul GoTo :EOF :CopyUserFile :: ---------------------------- :: %1 - Source File/Directory :: %2 - Destination File/Folder :: ---------------------------- If Exist "%~1\" XCopy /E/H/Q "%~1" "%~2\" >Nul If Not Exist "%~1" GoTo :EOF @Echo F|XCopy /H/Q "%~1" "%~2" >Nul GoTo :EOF :CopyUserRegKeys :: ------------------ :: %1 - User Name :: %2 - Registry Hive :: ------------------ For /F "UseBackQ Delims=" %%i In ("%HKCUIncl%") Do ( @Echo F|XCopy /R/V/Q "%~dpnx0" "%~1\Regis\%%i.reg" >Nul If Exist "%~1\Regis\%%i.reg" DEL /Q/F "%~1\Regis\%%i.reg" REG Export "%~2\%%i" "%~1\Regis\%%i.reg" >Nul 2>&1 ) GoTo :EOF |
||
Отправлено: 13:30, 27-04-2009 | #6 |
Старожил Сообщения: 440
|
Профиль | Отправить PM | Цитировать если вношу в список исключения пользователя Администратор , то он все равно копируется. Подозреваю что это из-за того что он пишется по русски, но CHCP 1251 вроде как есть , не понятно.
|
Отправлено: 16:13, 30-04-2009 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD | alex_frog | Скриптовые языки администрирования Windows | 6 | 22-07-2009 18:41 | |
Скрипт для проверки списка пользователей и их удаление из AD | alex_frog | Microsoft Windows NT/2000/2003 | 0 | 22-07-2009 13:16 | |
Скрипт для копирования файлов с 1 сервера на несколько | andro_id | Программирование в *nix | 2 | 04-09-2008 11:48 | |
FreeBSD - Помогите написать скрипт для резервного копирования на основе команды CP | NickNick | Общий по FreeBSD | 3 | 02-06-2008 13:30 | |
Скрипт для создания пользователей | Ven | Microsoft Windows NT/2000/2003 | 6 | 24-02-2008 23:57 |
|