Powershell更改多个用户的AD属性



仍在学习Powershell for AD,我有一个问题困扰着我。必须在特定位置更改AD中多个用户的AD属性,例如,我们在同一OU中有来自柏林和华盛顿的人,每个配置文件中都设置了城市,但我想知道在更改像这样的位置的地址之前,我是否也需要获取属性

Get-ADUser -filter 'City -like "Berlin"' -SearchBase 'OU=Users,OU=Staff,DC=Contoso,DC=com' -Properties StreetAddress, PostalCode | % {Set-ADUser $_ -Replace @{StreetAddress="New street 11";PostalCode="221202XX"}}

或者它是否也可以在不做任何操作的情况下工作-属性和仅管道过滤城市结果以设置ADUser

谢谢。

您不需要指定-Properties,除非您想在输出中看到它们。您也不需要foreach,只需管道连接到Set-ADUser就足够了。

Get-ADUser -filter 'City -like "Berlin"' -SearchBase 'OU=Users,OU=Staff,DC=Contoso,DC=com' |
Set-ADUser $_ -Replace @{StreetAddress="New street 11";PostalCode="221202XX"}

这将很好地更新这些值。过滤也是如此。以下命令将在postalcode上进行过滤,但除非添加-Properties postalcode,否则它不会包含在输出中

Get-ADUser -Filter "PostalCode -eq '221202XX'"

谢谢你的回答,我遗漏了-属性,这似乎很好,也尝试过,但如果没有foreach,这将不起作用,因为我想Set ADUser不知道哪些用户需要更新。所以我不得不使用

Get-ADUser -filter 'City -like "Berlin"' -SearchBase 'OU=Users,OU=Staff,DC=Contoso,DC=com' | % {Set-ADUser $_ -Replace @{StreetAddress="New street 11";PostalCode="221202XX"}}

而如果我在没有foreach 的情况下使用

Get-ADUser -filter 'City -like "Berlin"' -SearchBase 'OU=Users,OU=Staff,DC=Contoso,DC=com' | Set-ADUser $_ -Replace @{StreetAddress="New street 11";PostalCode="221202XX"}

我得到错误

Set ADUser:无法验证参数"Identity"的参数。参数为null。为提供有效值参数,然后尝试再次运行该命令。

但无论如何,似乎没有-属性也可以,这是我主要关心的

最新更新