2017-12-11 6 views
0

数百人のユーザーのSamAccountNameとそのユーザーを削除するグループの一覧を含むADクリーンアップ作業用のCSVを作成しようとしています。各ユーザーには、グループを削除するための異なるグループのリストがあります。長いリストのユーザーから別のリストのADグループを削除する

CSVは、次のようになります。

 
SamAccountName,ADgroupName1,ADgroupName2,ADgroupName3,ADgroupName4,etc... 
user1,Group1,Group2,Group3,Group4 
user2,Group2,Group3,,, 
user3,Group5,,,, 

スクリプトを私がこれまで持っている:

# Get the list of SAMAccountNames 
$user = Import-Csv .\GroupsToRemove.csv | Select-Object -ExpandProperty SAMAccountName 

foreach ($user in $users) { 
    # Loop through the user list and select the list of groups to remove for each user 
    # from the CSV and set to the $Groups array 
    $Group = @() 
    $Group = %{(Import-Csv .\GroupsToRemove.csv | Where-Object {$_.SamAccountName -eq $user})} | select "GroupName*" 

    foreach ($group in $Groups) { 
     # Remove the AD groups from each User 
     Remove-ADPrincipalGroupMembership $user -Member $Group -Confirm:$false 
    } 
} 

私は問題の一部であると思う私は、CSVからグループ名をインポートしていたときにそれはまた列名を$Group配列に追加しますか?だからRemove-ADPrincipalGroupMembershipコマンドが失敗していますか?

$groups出力は以下のようなものです:

 
GroupName1 : Group1 
GroupName2 : Group2 
GroupName3 : Group3 
GroupName4 : Group4 
+0

あなたは '' $ユーザ=を行っています'$ users'を繰り返し実行します。 '$ user ='を '$ users ='に変更してください。あなたは '$ Group ='でも同じ誤りを犯しています。 –

答えて

1

はCSVで別々の列としてADグループを定義しないでください。グループコンマ(またはその他の区切り文字)と1列に文字列を区切ってください:

 
SamAccountName,Groups 
user1,"Group1,Group2,Group3,Group4" 
user2,"Group2,Group3" 
user3,"Group5" 

あなたは、このようなCSVからグループを扱うことができますこの方法を:

$csv = Import-Csv .\GroupsToRemove.csv 

foreach ($user in $csv) { 
    $groups = $user.Groups -split ',' | 
       Get-ADGroup | 
       Select-Object -Expand DistinguishedName 
    Remove-ADPrincipalGroupMembership $user.SamAccountName -Member $groups -Confirm:$false 
} 
+0

ありがとう! 1つのコラムのすべてのグループが素晴らしい仕事をしたことはありませんでした! –

関連する問題