4

2 つの列を持つ csv があります。1 つの列は AD グループ名で、もう 1 つはユーザー アカウント名です。csv を読み取って、ユーザーを対応するグループにインポートしようとしています。

これが私がこれまでにしなければならないことです。ヘッダーが正しく指定されているため、両方の引数(identity、member)がnullであると言っていますが、これは意味がありません。

import-module activedirectory
$list = import-csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups3.csv"

Foreach($user in $list){       
    add-adgroupmember -identity $_.Group -member $_.Accountname
}

csvファイルの中身はこちら

Group             Accountname 
group1            user1 
group1            user2 
group1            user3 
group2            user4 
group2            user5 
group3            user6 
group3            user7 
group3            user8 
group4            user9 
group5            user10 

EDITコマンドとエラー

これが私のスクリプト、受け取ったエラー、およびcsvです。

Import-Csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups.csv" | 
ForEach { get-aduser $_.Accountname | add-adgroupmember $_.Group}

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

4

2 に答える 2

7

これを変える:

add-adgroupmember -identity $_.Group -member $_.Accountname

これに:

add-adgroupmember -identity $user.Group -member (Get-ADUser $user.Accountname)
于 2013-05-20T14:27:17.060 に答える
2

@EBGreen は、コードの問題点に答えました。ここで代替案を考え出すだけです。メンバーごとに 1 回コマンドを実行する代わりに、グループのすべてのメンバーを同時に追加することを試みることができます。パラメータはMember配列をサポートしているので、これを試してください:

Import-Csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups3.csv" | Group-Object Group | % {
    #Foreach Group, get ADUser object for users and add members
    $users = $_.Group | % { Get-ADUser $_.Accountname }
    Add-ADGroupMember -Identity $_.Name -Member $users
}

EDIT 2012 DC で、test.csv の次の内容でこれを正常にテストしました (値は既存のグループ名と既存の samaccountname/username を表します)。

Group,Accountname
"Mytestgroup","kim_akers"
"Mytestgroup","user1"

EDIT2より深いレベルの OU で問題が発生することはありません。7 レベルの深さの OU でテストしましたが、問題はありませんでした。1 つの OU 内にすべてのユーザーがいる場合 (またはすべてのサブ OU を含む最も近い OU を見つけた場合)、このスクリプトが役立つかどうかを確認してください。パラメータの「ベース OU」の DN を置き換えることを忘れないで-Searchbaseください。

Import-Csv "C:\Scripts\Import Bulk Users into bulk groups\bulkgroups3.csv" | Group-Object Group | % {
    #Foreach Group, get ADUser object for users and add members
    $users = $_.Group | % { Get-ADUser -Searchbase "OU=mybaseou,OU=test,OU=users,OU=contoso,DC=Contoso,DC=com" -Filter { samaccountname -eq $_.Accountname } }
    Add-ADGroupMember -Identity $_.Name -Member $users
}
于 2013-05-20T14:48:37.403 に答える