2016-02-12 93 views
0

我們正在創建一個Powershell腳本,該腳本將按國家代碼自動將我們的用戶羣分爲兩個AD組,一個用於英語用戶,另一個用於法語用戶。我們在推動這項工作方面面臨挑戰。基於國家代碼的動態AD組

根據每個帳戶的國家,每個帳戶只應在一個列表中。我們列表中的成員的原始源列表是Staff All,我們正在調查兩個組,一個名爲Staff All EN,另一個名爲Staff All FR。它也應該能夠排除那些不再有效的帳戶的已禁用OU。 (見下文)

這是我們到目前爲止有:

$frenchCC = Get-Content .\CCFrench.txt 
$staffAll = "CN=Staff-ALL,OU=Internal,OU=DistributionLists,OU=SFCG,DC=sfcg,DC=org" 
$staffAllEn = "CN=Staff ALL EN,OU=Internal,OU=DistributionLists,OU=SFCG,DC=sfcg,DC=org" 
$staffAllFr = "CN=Staff ALL FR,OU=Internal,OU=DistributionLists,OU=SFCG,DC=sfcg,DC=org" 

$Target = Get-ADGroupMember -Identity $staffAll 

我們已經嘗試了幾種不同的方法。這個想法是根據國家代碼列表從AD填充法國名單。通過複製Staff-ALL列表來填充Staff-EN,然後刪除法語列表中的所有人。 並且在此過程中的某個地方,刪除處於HR禁用狀態的所有人。

foreach ($Person in $Target) { 
    Add-ADGroupMember -Identity $staffAllEn -Members $Person.distinguishedname -confirm:$false 
} 

foreach ($Country in $frenchCC) { 
    Add-ADGroupMember -Identity $staffAllFr -Members (Get-ADUser -Filter '"$country"' -eq '") -confirm:$false 
} 

foreach ($Country in $frenchCC) { 
    Remove-ADGroupMember "Staff-ALL-EN" -Members (Get-ADUser -Filter $Country) -confirm:$false 
} 

$searchOU = Specify the OU where your groups are here (OU=Groups,DC=domain,DC=local) 
Get-ADGroupMember Staff-ALL-EN -Properties Disabled | Remove-ADGroupMember Staff-ALL-EN 
Get-ADGroupMember Staff-ALL-FR -Properties Disabled | Remove-ADGroupMember Staff-ALL-FR 

在國家代碼的源文件中,我們將國家代碼放在單引號,雙引號和無引號中。沒有區別。

這真的讓我們陷入了泡菜。任何建議,將不勝感激。

+0

'CCFrench.txt'的內容是什麼? –

+0

CCFrench.txt是法語國家代碼列表。 –

+1

您的AD用戶是否擁有國家/地區代碼屬性? –

回答

0

我能夠爲Brad工作以下內容,但我無法使其在文本文件中的每行(例如:多個國家代碼)上運行。任何人都知道要改變什麼?

$frenchCC = Get-Content .\Countries.txt 
$OUs = Get-Content .\OUs.txt 
$userListFR = Get-ADUser -Filter {country -eq $frenchCC} -SearchBase $OUs -SearchScope OneLevel 
$userListEN = Get-ADUser -Filter {country -ne $frenchCC} -SearchBase $OUs -SearchScope OneLevel 
foreach($user in $userListFR) {add-adgroupmember "Staff-ALL-FR" -Members $user} 
foreach($user in $userListEN) {add-adgroupmember "Staff-ALL-EN" -Members $user}