LoginSignup
3
7

More than 5 years have passed since last update.

Powershellで ローカルグループ名と所属するユーザー名を、カンマ区切りで出力する

Last updated at Posted at 2018-04-19

前提: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"}

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7