1

AD に OU を照会し、それらをファイルに出力し、新しいグループ名を少し変更してファイルからグループを作成するスクリプトを作成しました。その部分はここで動作しますコードは次のとおりです。

## Load Quest ActiveRoles ADManagement PSSnapin if not already loaded
if ((Get-PSSnapin -Name "Quest.ActiveRoles.ADManagement" -ErrorAction SilentlyContinue) -eq $null) { 
  Add-PsSnapin "Quest.ActiveRoles.ADManagement" } 

cd \
cls

$Type = "Security"
$Scope = "Global"
$Domain = "abc.org"


## Get Organizational Units

Get-QADObject -Type OrganizationalUnit `
| Select-Object Name, Path, DN, CanonicalName ` | Export-Csv -Path "c:\scripts\test\ou.csv" -NoTypeInformation

## Create Security Groups from Organizational Units
$Pre = "123abc"
$ou  = "ou=123abc,ou=Groups,ou=User Accounts,dc=abc,dc=org"
Import-Csv -Path "c:\scripts\test\ou.csv" | foreach {New-QADGroup -name ($Pre+$_.name) -parent $ou -sam ($Pre+$_.name)}

私が問題を抱えている問題はこれにあります。各 OU からユーザー オブジェクトを取得し、それらを個別の csv ファイルに配置するにはどうすればよいですか。単一の OU で機能するこの小さなコードがあります。

$OuDomain = "OU=123abc,OU=Users,OU=User Accounts,DC=abc,DC=org"
Get-QADUser -SizeLimit 0 -searchRoot $OuDomain `
| Select-Object name, SamAccountName, UserPrincipalName `
| Export-Csv -Path "c:\scripts\test\123abc.csv" -NoTypeInformation

その後、ユーザーを新しいグループに追加できるはずです。

4

1 に答える 1

0

まず、PowerShell V2.0 を使用している場合は、W2K8R2 で Microsoft ActiveDirectory モジュールを使用できます。

Add-ADGroupMember -Identity MonGroupe -Member massin

2 番目に、OU からユーザーを取得したら、そのdistinguishedName属性に関心を持つことになります。member各ユーザーの識別名を新しいグループの属性に割り当てるだけです。

Quest ADManagement PSSnapin をインストールしていないので、簡単な ADSI の例を次に示します。

# Starting OU
$MonOU = New-Object System.DirectoryServices.DirectoryEntry ("LDAP://192.168.234.200:389/ou=Monou,dc=dom,dc=fr","administrateur@dom.fr","admin")

# Group creation
$MonGroupe = $Monou.Create("Group", "cn=MonGroupe")
$ADS_GROUP_TYPE_GLOBAL_GROUP = 0x00000002
$ADS_GROUP_TYPE_SECURITY_ENABLED = 0x80000000
$groupeType = $ADS_GROUP_TYPE_SECURITY_ENABLED -bor $ADS_GROUP_TYPE_GLOBAL_GROUP

$MonGroupe.put("groupType",$groupeType) 
$MonGroupe.setinfo()

# Add a user to the group
$MonGroupe.add('LDAP://cn=Marc Assin,ou=Monou,dc=dom,dc=fr')
$MonGroupe.setinfo()

# List members of a group
$UnGroupe = New-Object System.DirectoryServices.DirectoryEntry ("LDAP://192.168.234.200:389/cn=Mongroupe,ou=Monou,dc=dom,dc=fr","administrateur@dom.fr","admin")
$Membres = $UnGroupe.Member
$Membres
于 2012-04-24T04:06:05.403 に答える