我确信这相当基础,但我似乎无法理解它,此时对我来说手动完成几乎更为谨慎,但这似乎是一个很好的学习机会。
我在 AD 中创建了一个自定义属性。所有用户都将其设置为电子邮件,通过第三方应用程序进行同步,与 Active Directory 无关。我需要通过 Powershell 更改所有用户的域名[电子邮件保护]到[电子邮件保护]。这似乎很容易,但出于某种原因,我无法让 Set-ADUser 更改每个用户的属性并根据原始用户名进行替换。我需要删除旧域名的最后 27 个字符,将当前登录名与新域名连接起来,然后进行设置。这看起来很简单,但无论我在 Powershell 中如何尝试,我都会不断收到无效参数。
到目前为止我有类似的东西:
$Users = Get-ADUser -Filter "*" -SearchBase 'OU=test,DC=adDomain,DC=org' -Properties customattribute
ForEach-Object {
$fullAttribute = Get-ADUser $_{customattribute}
$logon -replace "fullAttribute.{27}$"
$newLogon = $logon + "newdomainname.com"
Set-ADUser $_ -replace @{customattribute=$newLogon}
}
我不断尝试分阶段进行但总是遇到语法错误。
答案1
这应该可以让你开始。如果没有 @Zordache 要求的详细信息,很难进行测试。
$olddomain ="billybob.com"
$newdomain = "newdomainname.com"
$Users = Get-ADUser -Filter "*" -SearchBase 'OU=test,DC=adDomain,DC=org' -Properties customattribute
ForEach-Object {
$user = $_
$fullAttribute = ($user.customattribute).tostring()
$newattr = $fullAttribute.replace $olddomain $newdomain
$user.customattribute=$newattr
Set-ADUser -instance $user
}