Powershellで ローカルグループ名と所属するユーザー名を、カンマ区切りで出力する
前提: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"}