修改Powershell 4.0中本地用户属性的描述

Modify local users property description in Powershell 4.0

我想修改本地用户的描述属性。 我可以通过两种方式检索所有本地用户的名称和描述。

一个使用 WMI Win32_UserAccount class:

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。 我最后的 objective 是将这段代码放在 Ansible 剧本中,然后 运行 将它放在几个远程服务器中。如果您知道如何解决这个问题或如何帮助我,我将不胜感激。

使用 ADSI 可能非常棘手,但它非常有用,因为它通常不依赖于第 3 方模块。

无需深入探讨 ADSI,这是您可以更改或向 属性 添加值的最简单方法,在这种情况下,描述 属性:

$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.