2017-05-31 76 views
0

我正在用PowerShell編寫一個用於創建用戶的腳本。此腳本將用戶添加到基於具有部門名稱的模板用戶的組中。當在我的腳本中使用像這樣:根據模板用戶的奇怪行爲加入用戶組

Get-ADUser -Filter {name -eq "Temp$($Department.LookupValue)"} -Properties memberof | 
    Select-Object -ExpandProperty memberof | 
    Add-ADGroupMember -Members $sAMAccountName 

這不幸的是不工作,也沒有給出任何錯誤。

然而,當我運行的代碼只是行只是正常

Get-ADUser -Filter {name -eq "TempICT"} -Properties memberof | 
    Select-Object -ExpandProperty memberof | 
    Add-ADGroupMember -Members usern 
+2

嘗試'| | foreach {add-adgroupmember ...}'而不是普通管道到'add-adgroupmember'。據我瞭解,你只收到一個以上的團體身份,你需要給所有的人添加'$ samaccountname'。 – Vesper

+0

@Vesper您應該添加您的評論作爲答案。 – BenH

回答

0

正如在評論中指出,可以通過組名循環使用Add-ADGroupMemberforeach-object,但是這將導致針對用戶需要添加到的每個組的AD調用。它可能是更有效地使用Add-ADPrincipalGroupMemebership cmdlet,後者將在一個操作的用戶添加到多個組:

$Groups = Get-ADUser -Filter {name -eq "TempICT"} -Properties memberof | 
    Select-Object -ExpandProperty memberof 
Add-ADPrincipalGroupMembership -Identity $sAMAccountname -MemberOf $Groups 
0

下面的代碼行做的工作,我想這個問題是有沒有能夠過濾器處理點符號。 Get-ADUser "Temp$departmentsn" -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members $gebruiker

這不是100%我想要它,因爲我現在搜索netbiosname而不是名稱屬性,但它的工作原理。由於netbiosname的20個字符限制,我必須創建一個子字符串才能使其適用於我的所有部門。