2012-07-17 46 views
1

我正在嘗試編寫一個腳本,它將根據OU的成員更新AD中的組成員資格。PowerShell:將工作AD比較代碼轉換爲函數 - 錯誤

$Group = "GroupA" 
$OU = "OU=ContainerA,DC=DC1,DC=ccompany,DC=com" 

$users = $(get-aduser -filter "*" -SearchBase $OU) 
$groupmembers = Get-ADGroupMember -Identity $Group 
switch (Compare-Object -ReferenceObject $groupmembers -DifferenceObject $users -property samaccountname){ 
{$_.SideIndicator -eq "=>"} {add-adgroupmember -identity $group -member $_.samaccountname} 
{$_.SideIndicator -eq "<="} {remove-adgroupmember -identity $group -member $_.samaccountname -confirm:$false} } 
} 

當然,這是罰款單組和OU,不過,我需要爲做到這一點:當我指定的組名和OU的名稱,然後做的比較小腳本工作正常大約10個組和OU,所以不是把整個東西粘貼10次,我認爲聰明的做法是創建一個函數,然後調用它10次。我改變了代碼爲函數:

Function Build ([String]$Group, [String]$OU){ 
$users = $(get-aduser -filter "*" -SearchBase $OU) 
$groupmembers = Get-ADGroupMember -Identity $Group 
switch (Compare-Object -ReferenceObject $groupmembers -DifferenceObject $users -property samaccountname){ 
{$_.SideIndicator -eq "=>"} {add-adgroupmember -identity $group -member $_.samaccountname} 
{$_.SideIndicator -eq "<="} {remove-adgroupmember -identity $group -member $_.samaccountname -confirm:$false} } 
} 

Build ("GroupA", "OU=ContainerA,DC=DC1,DC=ccompany,DC=com") 
Build ('GroupB", "OU=ContainerB,DC=DC1,DC=ccompany,DC=com") 

然而,當我運行上面的腳本,我不斷收到以下錯誤:

Get-ADUser : An empty SearchBase is only supported while connected to a GlobalCatalog. 

能否請你請指出我所試圖做的錯將第一個代碼轉換爲函數?

感謝

回答

1

你的麻煩是你調用的函數Build只是嘗試的方式:

Build "GroupA" "OU=ContainerA,DC=DC1,DC=ccompany,DC=com" 
Build 'GroupB" "OU=ContainerB,DC=DC1,DC=ccompany,DC=com" 

Build -Group "GroupA" -ou "OU=ContainerA,DC=DC1,DC=ccompany,DC=com" 

當你調用一個函數,你不需要()既不,。注意,是數組分隔符

+0

謝謝。就是這樣! – IntroToLogic 2012-07-18 15:00:18