通过UPN更新多个用户ExtensionAttributes

时间:2019-05-18 12:33:27

标签: azure-active-directory azure-powershell

希望导入UserPrincipalName并更新ExtensionAttributes 1-15

我目前有一个脚本,可以用来更新单个UserPrincipalName ExtensionAttributes,并且效果很好。

 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute1 -ExtensionValue "stuff"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute2 -ExtensionValue "things"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute3 -ExtensionValue "stuff"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute4 -ExtensionValue "things"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute5 -ExtensionValue "test"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute6 -ExtensionValue "test"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute7 -ExtensionValue "test"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute8 -ExtensionValue "florida"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute9 -ExtensionValue "12444"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute10 -ExtensionValue "stuff"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute11 -ExtensionValue "things"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute12 -ExtensionValue "test"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute13 -ExtensionValue "test"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute14 -ExtensionValue "test"
 Set-AzureADUserExtension -ObjectId test@test.com -ExtensionName extensionattribute15 -ExtensionValue "test"

但是,如您所见,如果我有多个用户要更新,那将很耗时。

所以我尝试创建以下内容

$users = import-csv "C:\temp\womp.csv"

$users | ForEach-Object{

Set-AzureADUserExtension -ObjectId $_.extensionattribute1 (Get-AzureADUser -ObjectID $_.UserPrincipalName).objectID
Set-AzureADUserExtension -ObjectId $_.extensionattribute2 (Get-AzureADUser -ObjectID $_.UserPrincipalName).objectID
Set-AzureADUserExtension -ObjectId $_.extensionattribute3 (Get-AzureADUser -ObjectID $_.UserPrincipalName).objectID
Set-AzureADUserExtension -ObjectId $_.extensionattribute4 (Get-AzureADUser -ObjectID $_.UserPrincipalName).objectID
Set-AzureADUserExtension -ObjectId $_.extensionattribute5 (Get-AzureADUser -ObjectID $_.UserPrincipalName).objectID

}

但是有很多错误。

Set-AzureADUserExtension : A positional parameter cannot be found that accepts argument

Get-AzureADUser : Error occurred while executing GetUser Code: Request_ResourceNotFound

随附的截图是我的CSV设置: CSV Setup

谢谢

1 个答案:

答案 0 :(得分:0)

我不明白Set-AzureADUserExtension -ObjectId $_.extensionattribute1 (Get-AzureADUser -ObjectID $_.UserPrincipalName).objectID在脚本中的含义,我想您想为.csv文件中的所有用户设置几个扩展名。

此外,如果我们create a new extension property,名称应该像extension_0380f0f700c040b5aa577c9268940b53_MyNewProperty,为什么您的名字是extensionattribute1extensionattribute2

尝试使用该脚本,我的示例只有两个用户和两个扩展,逻辑是相同的,您可以尝试一下。

$users = import-csv "C:\Users\joyw\Desktop\testfile.csv"

$users | ForEach-Object{

Set-AzureADUserExtension -ObjectId $_.UserPrinciaplName -ExtensionName extension_242365dc795xxxxxfb73236a3_testex1 -ExtensionValue $_.extension_242365dc795xxxxxfb73236a3_testex1
Set-AzureADUserExtension -ObjectId $_.UserPrinciaplName -ExtensionName extension_242365dc795xxxxxfb73236a3_MyProp -ExtensionValue $_.extension_242365dc795xxxxxfb73236a3_MyProp


}

我的testfile.csv文件:

UserPrinciaplName,extension_242365dc795xxxxxfb73236a3_testex1,extension_242365dc795xxxxxfb73236a3_MyProp
leeliu@xxx.onmicrosoft.com,testvalue1,testvaule2
test@xxx.onmicrosoft.com,testv1,testv2

enter image description here

检查两个用户的结果:

enter image description here