【发布时间】:2019-07-07 08:59:00
【问题描述】:
下午好,
我已经搜索了通常的地方,在这里,MS,Scritping guy,Month of lunches 等,试图回答我的问题。我有一个通过电子邮件地址识别的用户列表,我想使用以下信息更改他们当前的空白属性。
所以:
- 33 = 全球
- 34 = 4
-
35 = SMTP:User@NewDomain.com
Get-ADUser -filter {(Mail -like 'User@OldDomain.com')} -Properties * | Set-ADUser -Replace @{$_.MSExchExtensionAttribute33="GLOBAL"; $_.MSExchExtensionAttribute34="4"; $_.msExchExtensionAttribute35="SMTP:User@NewDomain.com"};
但是,当我运行命令时,我收到此错误:
A null key is not allowed in a hash literal.
At line:1 char:98
+ ... roperties * | Set-ADUser -Add @{$_.MSExchExtensionAttribute34="4"; $_ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Collections.Hashtable:Hashtable) [], RuntimeException
+ FullyQualifiedErrorId : InvalidNullKey
我过去曾使用此代码的变体来替换已经存在值的属性,所以我想知道这是否是错误的一部分。
任何帮助将不胜感激。
【问题讨论】:
-
您是否在同一个广告中使用了此代码的变体?如果没有,您可能需要先在 AD 架构中创建属性:social.technet.microsoft.com/wiki/contents/articles/…
-
相同的用户,相同的广告,不同的属性。
-
未经测试,但我认为您应该忽略
$_。此外,使用星号询问所有属性也不是一个好主意。试试这个:Get-ADUser -Filter 'mail -like "User@OldDomain.com"' -Properties msExchExtensionAttribute33, msExchExtensionAttribute34, msExchExtensionAttribute35 | Set-ADUser -Replace @{msExchExtensionAttribute33="GLOBAL"; msExchExtensionAttribute34="4"; msExchExtensionAttribute35="SMTP:User@NewDomain.com"}
标签: powershell attributes cmdlets