是否可以使用 PowerShell 更改 Windows XP(没有 Active Directory)上的本地用户设置,特别是用户属性选项卡上的设置 - 例如“密码永不过期”和用户所属的组?
样本很棒,但指向相关文档的指针也很棒——我甚至不确定要寻找什么。
答案1
最简单的方法是将 ADSI 查询定向到本地 WinNT 提供程序 - 这将返回您感兴趣的系统上的本地对象。这些可以是本地或远程系统,但这将附加到本地帐户和安全对象而不是 AD。
$user = [ADSI]"WinNT://joe-pc/joe"
这样您就可以查询和修改 $user 对象的属性。
要设置“密码未过期”标志,您需要在 UserFlags 属性中设置相关标志。您可以在以下位置找到这些标志的有用表格:Motobit 在这里。
强制将上面例子中的 Joe 的帐户密码设置为永不过期:
$Never_Expire=0x10000
$user.UserFlags.value=$user.UserFlags.value -bor $Never_Expire
修改组成员身份有点复杂,但微软的 PowerShell Guy 有一步一步的了解如何将域用户帐户添加到本地组我认为这个系统正是您所需要的。
答案2
这里有一种方法可以通过连接到每台机器来关闭密码永不过期。
http://powershellcommunity.org/Forums/tabid/54/aff/1/aft/3836/afv/topic/Default.aspx
答案3
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
答案4
这些对我来说不起作用,所以经过大量搜索和反复试验后,我想出了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