【问题标题】:Modify local users property description in Powershell 4.0修改 Powershell 4.0 中的本地用户属性描述
【发布时间】:2021-05-04 22:52:53
【问题描述】:

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

一个使用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 并在多个远程服务器上运行。如果您知道如何解决这个问题或如何帮助我,我将不胜感激。

【问题讨论】:

  • 升级到 PowerShell 5.1 版并使用Set-LocalUser ;-)
  • 您要更改什么属性?
  • @AbrahamZinala Description ;-)
  • 可能有助于阅读哈哈谢谢@olaf
  • 如果您切换回使用Get-WmiObject,则.Description 属性会同时列出{get;set;} 的定义。 [咧嘴]

标签: powershell user-interface winapi ansible adsi


【解决方案1】:

使用 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

【讨论】:

    猜你喜欢
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多