私はかなり新しいPSユーザーです。ユーザーがメンバーになっているセキュリティグループのリストを取得するために、PowerShellスクリプトに関するサポートを探しています。
必要なものを説明するには:
これは私が持っているスクリプトです:
$users = Get-Content C:\users.txt
ForEach ($User in $users) {
$getmembership = Get-ADUser $User.Users -Properties MemberOf | Select -ExpandProperty memberof
$getmembership | Out-File -Append c:\membership.txt
}
しかし、それは私にエラーをスローします:
Get-ADUser : Cannot validate argument on parameter 'Identity'. The argument is null. Supply a non-null argument and try the command again.
At line:4 char:28
+ $getmembership = Get-ADUser <<<< $User.Users -Properties MemberOf | Select -ExpandProperty memberof
+ CategoryInfo : InvalidData: (:) [Get-ADUser], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser
とにかく、このスクリプトはフォレスト全体を検索しません。
サンプル入力リスト:
username1
username2
username3
username4... etc
サンプル出力リスト
username1;group1;group2;group3
username2;group1;group2;group3;group4... etc or something similar
どんな助けも大歓迎です。
最初:現在のところ、$User
変数には.Users
プロパティがありません。コードでは、$User
はテキストファイルの1行(foreachループの「現在の」行)を単に表します。
$getmembership = Get-ADUser $User -Properties MemberOf | Select -ExpandProperty memberof
第二に、1つのコマンドでフォレスト全体をクエリできるとは思わない。それを小さなチャンクに分割する必要があります。
Get-ADUser
を呼び出します(-Credential
パラメーターで代替資格情報を指定する必要がある場合があります)番目、ユーザーがメンバーになっているグループのリストを取得するには:
$User = Get-ADUser -Identity trevor -Properties *;
$GroupMembership = ($user.memberof | % { (Get-ADGroup $_).Name; }) -join ';';
# Result:
Orchestrator Users Group;ConfigMgr Administrators;Service Manager Admins;Domain Admins;Schema Admins
4番目:目的の最終的な文字列形式を取得するには、$User.Name
、セミコロン、$GroupMembership
文字列を一緒に追加します。
$User.SamAccountName + ';' + $GroupMembership;
Get-ADPrincipalGroupMembership username | select name
別の答えからそれを得たが、スクリプトは魔法のように動作します。 :)
以下のコードは、samaccountnameを使用してユーザー名グループメンバーシップを返します。ファイルから入力を取得するように変更したり、有効期限のないパスワードなどのアカウントを取得するようにクエリを変更したりできます。
$location = "c:\temp\Peace2.txt"
$users = (get-aduser -filter *).samaccountname
$le = $users.length
for($i = 0; $i -lt $le; $i++){
$output = (get-aduser $users[$i] | Get-ADPrincipalGroupMembership).name
$users[$i] + " " + $output
$z = $users[$i] + " " + $output
add-content $location $z
}
サンプル出力:
管理者ドメインユーザー管理者スキーマ管理者エンタープライズ管理者ドメイン管理者グループポリシー作成者所有者 ゲストドメインゲストゲスト krbtgtドメインユーザーはRODCパスワードレプリケーショングループを拒否しました本番 編集済みドメインユーザーCompanyUsers本番 編集済みドメインユーザーCompanyUsers本番
または、「ソート名」を追加してアルファベット順にリストします
Get-ADPrincipalGroupMembership username | select name | sort name