2017-09-19 7 views
0

次のタスクを実行できるスクリプトを作成するように指示されています。例:私たちはドメインABCを持っています。powershell - 複数のユーザーをチェックし、重複したユーザーを除外してカウントを追加します。

ピーターはAのメンバーとBグループである

A、B、C、Dの

という名前の4つのセキュリティグループがあります。 DavidはBグループとCグループのメンバーです。 JohnはAグループのメンバーです。 BグループもメンバーAグループです。

A、Bグループの合計ユーザー数を検索します。すでにグループに入っているユーザーは、カウントで除外されます。これは、重複ユーザーカウントを除外することを意味します。上記に基づいて、スクリプトにはAの合計数が表示されます& B = 3ユーザー代わりに5ユーザー。私は、AとBグループのユーザ数をカウントするスクリプトを作成しようとしました。また、AグループとBグループのいずれのグループも存在しています。 JohnがAとBに存在する場合、スクリプトはちょうど1カウントを追加します。また、DavidがBグループにいるがAグループにいない場合は、1カウントが加算されます。

編集:あなたの助けを借りてコードを修正した後、エラーはありません。ただし、表示される結果は空です。

$groups = $A_group, $B_Group 
$gm  = @() 
foreach ($group in $groups) { 
    $gm += Get-ADGroupMember $group | 
      where {$_.objectclass -eq 'user'} | 
      select SamAccountName 
} 
($gm.samaccountname | Select -Unique).Count 
Write-Output $total = ($gm.samaccountname | Select -Unique).Count 
+1

あなたは$ total変数をどこで定義しますか? – guiwhatsthat

+0

*正確に*コードが「うまくいかない」のですか?期待された結果は何でしたか?実際の結果はどうでしたか?間違いはありましたか?彼らは何を言いましたか? –

+0

'$合計=($ gm.samaccountname |選択 - ユニーク).Count; Write-Output $ total' –

答えて

0

ネストされたグループは、[グループ内のグループ]があるので、あなたが不足している唯一のことは、Get-ADGroupMemberため-recursiveパラメータです。これにより、ADGroup B Nameを返すのではなく、ネストされたADGroup B内のユーザーが取得されます。

変更し、以下のようにこの行:

$gm += Get-ADGroupMember $group -Recursive | where objectclass -eq 'user' | select SamAccountName 

私は最後の行が何をしているのか分からない[間違って不要なようです]の下の行は、あなたの合計数を取得するのに十分です。

$total = ($gm.samaccountname | Select -Unique).count 
+0

コード実行時にエラーが発生しました。 char:17 + <<<< objectclass -eq 'user' | + CategoryInfo:InvalidArgument:(:) [どこ-オブジェクト]、ParameterBindingException + FullyQualifiedErrorId:CannotConvertArgumentNoMessage、Microsoft.PowerShell.Commands.WhereObjectCommand どこ-オブジェクト:パラメーター 'FilterScript' をバインドできません。タイプ "System.String" の "objectclass"値を "System.Management.Automation.ScriptBlock"と入力することはできません。 – Power988

+0

ps1:28 char:17 + <<<< objectclass -eq 'user' | + CategoryInfo:InvalidArgument :(:) [Where-Object]、ParameterBindingException + FullyQualifiedErrorId:CannotConvertArgumentNoMessage、Microsoft.PowerShell.Commands.WhereObjectCommand – Power988

+0

なぜコメントが返されないのですか? – Power988

関連する問題