我想修改本地用户的 description 属性。我可以通过两种方式检索所有本地用户名和描述。
一种使用WMI Win32_UserAccount 类:
Get-CimInstance -ClassName Win32_UserAccount -Filter "LocalAccount='True'" | Select-Object -Property name, description | FL
还有一个使用ADSI:
$Computername = $env:COMPUTERNAME
$adsi = [ADSI]"WinNT://$Computername"
$Users = $adsi.Children | Where-Object {$_.SchemaClassName -eq 'user'}
ForEach ($u in $Users) {
$u | Select-Object -Property Name, Description
}
但是,我无法弄清楚如何使用与上述类似的命令来修改本地用户属性描述。我做了研究,只发现了如何做GETS而不是SETS。我的最终目标是将此代码放入 Ansible playbook 并在多个远程服务器上运行。如果您知道如何解决这个问题或如何帮助我,我将不胜感激。
使用 ADSI 可能非常棘手,但是它非常有用,因为它通常不依赖于 3rd 方模块。
无需深入研究ADSI
,这是您可以更改或向属性添加值的最简单方法,在本例中为 description 属性:
$adsi = [ADSI]"WinNT://$env:Computername"
$User = $adsi.Children.Find('Abraham')
$User.Description = "Hi, this is a description"
$User.SetInfo()
使用$User.SetInfo
方法,我们可以将更改写入数据库。这也不是您通过管道传输到Get-Member
. 不幸的是,这是您需要知道的。使用点表示法,我们可以引用您想要更改的属性,然后为它分配一个值,就像我们为变量分配值时一样:$var = value
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句