2016-11-10 83 views
0

我正在構建一個腳本來爲客戶自動部署AD。我們準備了CSV文件中的用戶和組列表。這些組按以下格式組織在一個文件中。請記住,我正在使用相同的CSV文件來創建AD組(這發生在上一步)。將用戶添加到來自CSV的AD組的Powershell功能

Name,Description,Members 
GroupName,GroupDescription,"user1,user2,user3" 

我使用將用戶添加到組中的代碼如下:

$groups = Import-CSV -Path $groupCSVPath 
$groups | % { Add-ADGroupMember -Identity $_.Name -Members $_.Members } 

這將導致一個錯誤:獲取-ADUser便有:找不到身份的對象:「USER1 ,user2,user3'

如果我嘗試以下,它的工作原理:

Add-ADGroupMember -Identity "GroupName" -Members user1,user2,user3 

該錯誤在引用獲取-ADUser便有命令,它不接受數組作爲輸入。但是,Add-ADGroupMember命令可以。爲什麼在使用Add-ADGroupMember命令時得到Get-ADUser錯誤,以及如何讓它接受AD用戶名的值數組?

+0

它看起來像你的CSV文件確實是列表的列表。 CSV文件中的每個條目都包含一個GroupName,一個GroupDescription和一個用戶列表。對?有一種方法可以「正常化」這些數據,以便每個條目都包含一個GroupName,GroupDescription和一個用戶。更多的條目,每個條目中的數據更少。不過,我不會將此作爲答案發布,因爲它有一個嚴重的缺點。 –

回答

1

棘手的一個。問題原因在於$_.members參數作爲單個字符串傳遞給Add-ADGroupMember cmdlet,而不是單獨值的數組,因爲Import-CSV的工作方式。 Get-Help Add-ADGroupMember顯示members參數需要一個數組,而不是一個字符串。

這應該工作,我測試過它:

$groups | % { Add-ADGroupMember -Identity $_.Name -Members $_.members.split(',') }

+0

是的,這很棘手,但是這裏的人們又來救援了。謝謝! – McKenning