1 windows powershell active-directory
尝试用他们自己的 samaccountname 替换所有用户的 mailNickname:
Import-Module activedirectory
$SAM = (Get-ADUser -SearchBase "OU=Staged,OU=corp,DC=mycompany,DC=com" -Filter * | select samaccountname)
foreach ($User in $SAM.samaccountname)
{
Set-ADUser $User -Replace @{mailNickName = "$SAM"}
}
Run Code Online (Sandbox Code Playgroud)
此脚本将 mailNickName 设置为空白。任何的想法?谢谢
要以最少的代码更改来解决您的问题,您应该在调用中更改对 的$SAM引用。您当前将 mailNickName 设置为由返回的用户对象,而不是您正在迭代的 sAMAccountName。$UserSet-ADUserGet-ADUser
您的变量名称有点令人困惑,因为它们的名称与名称实际代表的名称有些相反。在您的代码$SAM中实际上是一个 ADUser 对象列表,这些对象的所有属性都被过滤掉了,但 samaccountname 除外。您$User在foreach循环变量实际上是从每个用户对象的SAM帐户字符串。
这是您的代码的一个小变化,其中更改了变量名称并删除了无关的 select 语句。
$users = Get-ADUser -SearchBase "OU=Staged,OU=cor,DC=mycompany,DC=com" -Filter *
foreach ($user in $users) {
Set-ADUser $user -Replace @{ mailNickName = "$($user.samaccountname)" }
}
Run Code Online (Sandbox Code Playgroud)
这是另一种变体,它直接针对调用结果使用ForEach-Object的%别名Get-ADUser。
Get-ADUser -SearchBase "OU=Staged,OU=cor,DC=mycompany,DC=com" -Filter * | %{
Set-ADUser $_.DistinguishedName -Replace @{ mailNickName = $_.samaccountname }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3376 次 |
| 最近记录: |