Powershell 向用户帐户添加多个属性

Powershell 向用户帐户添加多个属性,powershell,attributes,cmdlets,Powershell,Attributes,Cmdlets,下午好, 我已经搜罗了一些常见的地方,在这里,小姐,抄写员,午餐月等等,试图回答我的问题。我有一个由电子邮件地址标识的用户列表,我想用下面的信息更改他们当前的空白属性。 因此: 33=全球 34=4 35=SMTP:User@NewDomain.com Get-ADUser -filter {(Mail -like 'User@OldDomain.com')} -Properties * | Set-ADUser -Replace @{$_.MSExchExtensionAttribute33

下午好, 我已经搜罗了一些常见的地方,在这里,小姐,抄写员,午餐月等等,试图回答我的问题。我有一个由电子邮件地址标识的用户列表,我想用下面的信息更改他们当前的空白属性。
因此:

  • 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
我以前使用过此代码的变体来替换已经有值的属性,所以我想知道这是否是错误的一部分

任何帮助都将不胜感激。

更改(自定义)属性的语法如下

Set ADUser$userName-add@{'MSExchExtensionAttribute33'=“Global”}

我希望这能解决您面临的问题。

更改(自定义)属性的语法是

Set ADUser$userName-add@{'MSExchExtensionAttribute33'=“Global”}


我希望这能解决您面临的问题。

像@theo建议的那样:省去$变量,另外:设置属性时根本不需要请求属性。试试这个,它在我的机器上工作:

Get-ADUser -filter {(Mail -like 'User@OldDomain.com')} | 
    Set-ADUser -Replace @{MSExchExtensionAttribute33="GLOBAL"; MSExchExtensionAttribute34="4"; msExchExtensionAttribute35="SMTP:User@NewDomain.com"}

像@theo建议的那样:省略$变量,另外:设置属性时根本不需要请求属性。试试这个,它在我的机器上工作:

Get-ADUser -filter {(Mail -like 'User@OldDomain.com')} | 
    Set-ADUser -Replace @{MSExchExtensionAttribute33="GLOBAL"; MSExchExtensionAttribute34="4"; msExchExtensionAttribute35="SMTP:User@NewDomain.com"}

你在同一个广告中使用了这个代码的变量吗?如果没有,您可能需要首先在AD模式中创建属性:相同的用户、相同的AD、不同的属性。未测试,但我认为您应该省去
$\ucode>。此外,使用星号查询所有属性也不是一个好主意。试试这个:
Get ADUser-Filter'mail-like“User@OldDomain.com“'-Properties msExchExtensionAttribute33,msExchExtensionAttribute34,msExchExtensionAttribute35 | Set ADUser-Replace@{msExchExtensionAttribute33=“GLOBAL”;msExchExtensionAttribute34=“4”;msExchExtensionAttribute35=“SMTP:User@NewDomain.com"}
您是否在同一广告中使用了此代码的变量?如果没有,您可能需要首先在AD模式中创建属性:相同的用户、相同的AD、不同的属性。未测试,但我认为您应该省去
$\ucode>。此外,使用星号查询所有属性也不是一个好主意。试试这个:
Get ADUser-Filter'mail-like“User@OldDomain.com“'-Properties msExchExtensionAttribute33,msExchExtensionAttribute34,msExchExtensionAttribute35 | Set ADUser-Replace@{msExchExtensionAttribute33=“GLOBAL”;msExchExtensionAttribute34=“4”;msExchExtensionAttribute35=“SMTP:User@NewDomain.com“}