在Active Directory中更新自定义属性

时间:2017-05-26 12:30:34

标签: powershell active-directory

我在Active Directory中更新自定义属性时遇到了一些问题,希望你们可以帮助我。

到目前为止,我正在更新属性,但它会将整行发送出我的csv文件,而不只是一个值。

好的......这就是我的csv的样子:

PERSONALNUMMER;GESCHLECHT;NACHNAME;VORNAME;EMAIL;MOBIL;TEL;BEZIRK;VORGESETZER;ZINR;ZINAME;SPESENHOEHE;KOSTENSTELLE;VBART;COLLECTION;
AA871;W;Mustermann;Max;max.mustermann@contoso.com;+49123456789;+492345678901;22559;A0C57;0000000031;Maxine Mustermann;01;0010076540;VB;0

这是导入我的AD属性的内容:

@{PERSONALNUMMER=AA871; GESCHLECHT=W; NACHNAME=Mustermann; VORNAME=Max; EMAIL=max.mustermann@contoso.com; MOBIL=+49123456789; TEL=++492345678901; BEZIRK=22559; VORGESETZER=A0C57; ZINR=0000000031; ZINAME=Maxine Mustermann; SPESENHOEHE=01; KOSTENSTELLE=0010076540; VBART=VB; COLLECTION=0}.Collection

好的......现在正在执行此操作的代码片段:

$users = Import-Csv $FullDestPath -Delimiter ';'
foreach ($user in $users) {
IF ($user.Collection -ne '') {Get-ADUser -Filter "SamAccountName -eq '$($user.PERSONALNUMMER)'" -Properties * -SearchBase "DC=intern,DC=berendsohn,DC=com" | Set-ADUser -replace @{bAGCollection="$user.Collection"}}
 Else {Get-ADUser -Filter "SamAccountName -eq '$($user.PERSONALNUMMER)'" -Properties * -SearchBase "DC=intern,DC=contoso,DC=com" |Set-ADUser -replace @{bAGCollection=""}} 
}

如果你们可以帮助我在这里导入Collection的值而不是导入整个变量$ user,那将是很棒的。

1 个答案:

答案 0 :(得分:1)

原因是你使用的字符串:

Set-ADUser -replace @{bAGCollection="$user.Collection"}

将导致解析器展开$user并将.Collection视为文字字符串。使用子表达式运算符$()包含属性引用:

Set-ADUser -replace @{bAGCollection="$($user.Collection)"}