Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Управление настройками пользователя через CMD (тонкие настрйоки) (http://forum.oszone.net/showthread.php?t=303414)

Skylear 04-08-2015 19:03 2536892

Управление настройками пользователя через CMD (тонкие настрйоки)
 
Вложений: 1
Всем привет. Сейчас попробую обрисовать некую проблемку. Прошу отвечать по существу.
Есть ЗАДАЧА: создать пользователя через батник на любом языке стандартной серверной ОС к примеру Windows SRV2012R2 с некоторыми настройками, а именно - установить время завершения отключенного сеанса (терминального).
Эту галочку можно поставить руками, открыв пользователя через GUI, но нужно внести эту настройку в батник. Найти нигде не могу. Подскажите плиз. Имеем такой скрипт, он рабочий.
Код:

set name=userpc
set pass=password
set comm="new user"

net user %name% %pass% /add /comment:%comm% /countrycode:0 /expires:never /fullname:"%name%" /passwordchg:no
net localgroup "Пользователи удаленного рабочего стола" %name% /add
wmic path Win32_UserAccount where Name=%name% set PasswordExpires=false

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


кодировка DOS конечно же - это я к тому что в этот же батник не получится вставить любой срипт для powershell типа
Код:

$Users = Import-CSV “c:\temp\users.csv”
если через ps делать, то нужно через другой батник с другой кодировкой, но это конечно не такая уж проблема)

Kazun 04-08-2015 20:07 2536924

PowerShell:

Код:

$u = [ADSI]"WinNT://$env:computer/$name"
$u.InvokeSet("MaxDisconnectionTime",1)
$u.SetInfo()

vbscript:

Код:

strAccount = "Пользователь"

Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName

Set objUser = GetObject("WinNT://" & strComputer & "/" & strAccount & ",User")
objUser.MaxDisconnectionTime = 1
objUser.SetInfo


Skylear 04-08-2015 20:52 2536957

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

Skylear 04-08-2015 20:56 2536962

Вложений: 1
Ошибка в ps
хочется чтобы все было в одном батнике, сверху ввел имя и пароль - остальное переменными

Kazun 04-08-2015 20:59 2536966

Сохранить скрипт C:\Scripts\ms.ps1:

Код:

param($name)
$u = [ADSI]"WinNT://$env:computername/$name"
$u.InvokeSet("MaxDisconnectionTime",1)
$u.SetInfo()

В батник добавить:
Код:

powershell -NoLogo -ExecutionPolicy ByPass -NoProfile -File C:\Scripts\ms.ps1 %name%

Skylear 04-08-2015 21:05 2536972

Вложений: 1
о да! синтаксис для меня не особо знакомый)) но работает!
еще тогда просьба - дабы доработать это все. как снять галочку "Запрашивать разрешение пользователя"

Kazun 04-08-2015 21:13 2536977

$u.InvokeSet("EnableRemoteControl",2)

Skylear 04-08-2015 21:21 2536983

Вложений: 1
ОК!!!
В итоге имеем такую картину:
скрипт батника
Код:

set name=User
set pass=Password
set comm="Пользователь"

net user %name% %pass% /add /comment:%comm% /countrycode:0 /expires:never /fullname:"%name%" /passwordchg:no
net localgroup "Пользователи удаленного рабочего стола" %name% /add
wmic path Win32_UserAccount where Name=%name% set PasswordExpires=false


powershell -NoLogo -ExecutionPolicy ByPass -NoProfile -File %SystemDrive%\Users\Администратор\Desktop\ADD\ms.ps1 %name%


cd %SystemDrive%\Users\Администратор\Desktop\ADD
runasusr.exe %name% %pass% "%windir%\system32\explorer.exe"

xcopy "%SystemDrive%\Users\Администратор\Desktop\ADD\1C" "%SystemDrive%\Users\%name%\AppData\Roaming\1C\" /H /Y /C /R /S

утилита runasusr.exe позволяет запустить от имени созданного пользователя эксплорер для создания системой пользовательского каталога и передает пароль, чего не умеет делать runas
далее копируем готовый конфиг 1С с прописанными путями
И в итоге имеем полностью чистого юзера, готового к работе в RemoteAPP с 1С

конфиг скрипта ms.ps1
Код:

param($name)
$u = [ADSI]"WinNT://$env:computername/$name"
$u.InvokeSet("MaxDisconnectionTime",5)
$u.InvokeSet("EnableRemoteControl",2)
$u.SetInfo()


Skylear 04-08-2015 21:24 2536988

Kazun, еще вопрос пока не закрыли тему)))
как автоматизировать этот процесс, чтобы создавать несколько пользователей за раз, как указывать? где? через запятую или из файла?
подскажи!


В этом батнике получается нужно указывать переменную с паролем и логином для одного - и все ОК!
вопрос такой в связи с ситуацией:
есть сервер рабочий и нужно создать пользователей с такими параметрами как написано выше в количестве 100 человек и занести их куда нибудь, в csv например и потом из этого же csv их пересоздать на зеркальном сервере (без домена, без всего, просто запасная терминалка). получается держать пользователей в таблице очень удобно и создавать "клонов" на другом сервере. скорее всего же достаточно будет иметь в таблице только указанные в батнике переменные, так как остальные параметры идентичны

Skylear 04-08-2015 21:45 2537004

добавил переменную на путь, теперь где бы ни лежали файлы и скрипты - в любой папке (главное чтобы в пути не было кириллицы, иначе ps1 не работает) - запускается создание нового пользователя
Код:

set name=60
set pass=passwords
set comm="Пользователь"

set road=%cd%

net user %name% %pass% /add /comment:%comm% /countrycode:0 /expires:never /fullname:"%name%" /passwordchg:no
net localgroup "Пользователи удаленного рабочего стола" %name% /add
wmic path Win32_UserAccount where Name=%name% set PasswordExpires=false


powershell -NoLogo -ExecutionPolicy ByPass -NoProfile -File %road%\ms.ps1 %name%


cd %road%
runasusr.exe %name% %pass% "%windir%\system32\explorer.exe"

xcopy "%road%\1C" "%SystemDrive%\Users\%name%\AppData\Roaming\1C\" /H /Y /C /R /S

разобрался с путями, надо заключить в кавычки путь до ps1 и тогда что на кириллице что на латинице с пробелами и без путь считывается корректно
Код:

set name=67
set pass=psswords
set comm="Пользователь"

set road=%cd%


net user %name% %pass% /add /comment:%comm% /countrycode:0 /expires:never /fullname:"%name%" /passwordchg:no
net localgroup "Пользователи удаленного рабочего стола" %name% /add
wmic path Win32_UserAccount where Name=%name% set PasswordExpires=false


powershell -NoLogo -ExecutionPolicy ByPass -NoProfile -File "%road%\ms.ps1" %name%


cd %road%
runasusr.exe %name% %pass% "%windir%\system32\explorer.exe"

xcopy "%road%\1C" "%SystemDrive%\Users\%name%\AppData\Roaming\1C\" /H /Y /C /R /S

главное это кавычки "%road%\ms.ps1"

Iska 05-08-2015 02:03 2537097

Цитата:

Цитата Skylear
хочется чтобы все было в одном батнике, сверху ввел имя и пароль - остальное переменными »

Делайте всё на PowerShell: создание пользователя, настройки параметров учётной записи, добавление в группу безопасности и т.п.

Skylear 05-08-2015 09:47 2537177

на PS не очень силен в синтаксисе, особенно что касается "тонких" настроек, да и в интернете статей то не особо.

Iska 05-08-2015 11:35 2537232

Skylear, можно просто взять скрипт на WSH и попробовать перевести его на PoSH. Сравните, скажем, коды PoSH и WSH во втором сообщении.

Skylear 05-08-2015 12:13 2537252

насколько я знаю выгрузка пользователей из csv-файла возможна в powershell, но это актуально для AD. в моем случае это терминальный сервер и еще один терминальный запасной. и при создании нового пользователя, хотелось бы заносить его в таблицу и запускать скрипт (в котором в свою очередь кроме создания самого пользователя есть еще настройки, запуск explorer.exe и копирование конфига 1С). Может подскажете как сделать параметр в этом батнике? а через другой батник вводить просто пользователей через запятую с ссылкой на сам скрипт?? такое возможно?


Время: 02:37.

Время: 02:37.
© OSzone.net 2001-