Можно ли использовать PowerShell для изменения настроек локального пользователя в Windows XP (без Active Directory), в частности настроек на вкладке свойств пользователя, таких как «Срок действия пароля никогда не истекает» и групп, членом которых является пользователь?
Образцы были бы замечательными, но указатель на соответствующую документацию тоже был бы отличным - я даже не уверен, что искать.
Самый простой способ - направить запросы ADSI к локальному провайдеру WinNT, который вернет локальные объекты в интересующей вас системе. Это могут быть локальные или удаленные системы, но они будут прикреплены к локальной учетной записи и объектам безопасности, а не к AD.
$user = [ADSI]"WinNT://joe-pc/joe"
После этого вы можете запрашивать и изменять свойства объекта $ user.
Для установки флага «Срок действия пароля не истекает» необходимо установить соответствующий флаг в атрибуте UserFlags. Вы можете найти полезную таблицу по адресу Мотобит здесь.
Чтобы принудительно установить пароль учетной записи Джо из приведенного выше примера, чтобы он никогда не истекал:
$Never_Expire=0x10000
$user.UserFlags.value=$user.UserFlags.value -bor $Never_Expire
Изменение членства в группах немного сложнее, но у Microsoft PowerShell Guy есть пошаговые инструкции. пройтись по добавлению учетных записей пользователей домена в локальную группу в системе, которая, я думаю, именно то, что вам нужно.
PS версия 2.0
$user = [ADSI]"WinNT://ComputerName/User"
$user.UserFlags = 65536 // Flag value used to set password to not expire
$user.SetInfo()
Отличная ссылка - http://learningpcs.blogspot.com/2011/01/powershell-winnt-provider.html
вот способ отключить пароль никогда не истекает при подключении к каждой машине ..
http://powershellcommunity.org/Forums/tabid/54/aff/1/aft/3836/afv/topic/Default.aspx
Я не уверен, как сделать именно то, что вы просили, но документация по началу работы с MS находится здесь: http://www.microsoft.com/technet/scriptcenter/topics/winpsh/manual/start.mspx
Это не сработало для меня, поэтому после долгих поисков и многих проб и ошибок я придумал это, чтобы удалить password never expires
из учетной записи локального администратора на основе SID и локальной гостевой учетной записи на основе SID.
#Set local administrator's password to expire
$admin = (gwmi -query "Select * From Win32_UserAccount Where LocalAccount = TRUE
AND SID LIKE 'S-1-5%-500'").Name
wmic useraccount where "name='$admin'" set passwordexpires=true
#Set local guest's password to machine expire
$guest = (gwmi -query "Select * From Win32_UserAccount Where LocalAccount = TRUE
AND SID LIKE 'S-1-5%-501'").Name
wmic useraccount where "name='$guest'" set passwordexpires=true