前提:Powershell ver5.1以上であること。(Get-LocalGroupはver5.1以降のコマンドレット)
Powershell ver2.0以上でも使えるように、一番下に追記しています!!!!
ローカルグループ名と所属するユーザー名を、カンマ区切りで出力する(ver5.1以上)
#### ローカルグループ名と所属するユーザー名を、カンマ区切りで出力するコード[#ここから#]
# ローカルグループ名を配列に格納
$group_name_list=(Get-LocalGroup).name
# 配列に格納したローカルグループ名を、1つ1つ取り出して処理するループ
foreach ($group_name in $group_name_list) {
# 取り出したローカルグループ名に所属するユーザー名を、配列に格納
$group_member_list=(Get-LocalGroupMember $group_name).name
# 配列に格納したユーザー名を、1つ1つ取り出して処理するループ
foreach ($group_member in $group_member_list) {
# ローカルグループ名とユーザー名をカンマ区切りにして標準出力する
echo "$group_name,$group_member"
# 配列に格納したユーザー名を、1つ1つ取り出して処理するループ[終了]
}
# 配列に格納したローカルグループ名を、1つ1つ取り出して処理するループ[終了]
}
#### ローカルグループ名と所属するユーザー名を、カンマ区切りで出力するコード [#ここまで#]
<# 結果出力の例 (EC2)
Administrators,EC2AMAZ-HELH38R\Administrator
Guests,EC2AMAZ-HELH38R\Guest
Guests,EC2AMAZ-HELH38R\Gutest
System Managed Accounts Group,EC2AMAZ-HELH38R\DefaultAccount
Users,EC2AMAZ-HELH38R\Gutest
Users,NT AUTHORITY\Authenticated Users
Users,NT AUTHORITY\INTERACTIVE
# >
参考:ワンライナー
(Get-LocalGroup).name |%{$group_name=$_;(Get-LocalGroupMember $group_name).name|%{echo "$group_name,$_"}}
Powershell ver2.0以上であれば使えるコード
# WMIオブジェクトのWin32_GroupUserクラスを呼び出す。その中からグループ名と所属ユーザー名を取り出して表にする(Select-Object)
$groupuser = Get-WmiObject Win32_GroupUser |Select-Object GroupComponent,PartComponent
# 取り出したグループ名と所属ユーザー名の表を1行ずつ処理するループ
foreach ($record in $groupuser) {
# グループ名以外の情報を削る。(GroupComponent列の値をカンマ区切りにして、2つ目がグループ名になる。「Name=」を置換して消す。)
$group=($record.GroupComponent.split(",")[1].replace("Name=",""))
# ユーザー名以外の情報を削る。(PartComponent列の値をカンマ区切りにして、2つ目がユーザー名になる。「Name=」を置換して消す。)
$member=($record.PartComponent.split(",")[1].replace("Name=",""))
# CSV形式にして出力
echo "$group,$member"
# 取り出したグループ名と所属ユーザー名の表を1行ずつ処理するループ[終了]
}
<# 結果
"Administrators","Administrator"
"Guests","Guest"
"Guests","Gutest"
"System Managed Accounts Group","DefaultAccount"
"Users","INTERACTIVE"
"Users","Authenticated Users"
"Users","Gutest"
# >
参考:ワンライナー
Get-WmiObject Win32_GroupUser |
Select-Object GroupComponent,PartComponent |
%{$group=($_.GroupComponent.split(",")[1].replace("Name=",""));$member=($_.PartComponent.split(",")[1].replace("Name=",""));echo "$group,$member"}