如何在 Powershell 中更改自定义属性的子字符串?

如何在 Powershell 中更改自定义属性的子字符串?

我确信这相当基础,但我似乎无法理解它,此时对我来说手动完成几乎更为谨慎,但这似乎是一个很好的学习机会。

我在 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 
}

相关内容