本サイトはサイト運営費捻出のため、アフィリエイト広告を利用しています。*詳細

Active Directoryの特定セキュリティグループに複数ユーザーをPowerShellで追加/削除する

2022年2月8日
スポンサーリンク

Active Directoryを管理、運用していると特定のセキュリティグループに複数ユーザーをPowerShellで追加したり、削除したいというケースによく遭遇します。

さすがに「Active Directoryユーザーとコンピューター」スナップインからポチポチやるのは現実的ではないので、さくっとPowerShellスクリプトで解決してしまいましょう。

PowerShellのバージョンは5.1
ActiveDirectoryモジュールのバージョンはWindows 10 and Windows Server 2019 PowerShellを想定しています。

追加用スクリプト

Param(
    [Parameter(Mandatory,
    Position=0
    )]
    [String]
    $GroupName
)
$ListPath = ".\user.txt"
$FSMOAddress = "10.0.10.1"
Get-Content -Path $ListPath |
    ForEach-Object -Process {
        Add-ADGroupMember -Identity $GroupName -Server $FSMOAddress -Members $_
    }

インプットデータ

test
test2

利用例

PS C:\work> .\add-adgroupmeber.ps1 test-group

追加したいセキュリティグループ名を引数として渡して実行します。

説明

まずParam()で引数を利用できるようにしています。

さらにParameterで必須引数と指定する「Mandatory」と位置指定パラメーターとして「Position=0」をそれぞれ指定します。

最後に引数をString型と定義するために「[String]」を追記し、最後に引数を代入する変数「$GroupName」を指定します。

続いて、「$ListPath」でインプットデータの場所を指定し、「$FSMOAddress」でFSMOのアドレスを指定します。

これらを元にして、「Get-Content」でインプットデータを読み込み、ForEach-Objectでインプットデータの中身を1行ずつ読み取ります。

ループの中で「Add-ADGroupMember」を利用して、セキュリティグループにユーザーを追加しています。

削除用スクリプト

Param(
    [Parameter(Mandatory,
    Position=0
    )]
    [String]
    $GroupName
)
$ListPath = ".\user.txt"
$FSMOAddress = "10.0.10.1"
Get-Content -Path $ListPath |
    ForEach-Object -Process {
        Remove-ADGroupMember -Confirm:$false -Identity $GroupName -Server $FSMOAddress -Members $_
    }

利用例

PS C:\work> .\remove-adgroupmeber.ps1 test-group

※インプットデータは追加用スクリプトと同じなので省略します。

説明

追加用スクリプトとほぼ変わらないので、追加用スクリプトとの差分について説明します。

今回は特定のセキュリティグループからユーザーを削除するので「Remove-ADGroupMember」を利用します。

削除を行うことから、「Add-ADGroupMember」を「Remove-ADGroupMember」に変えただけでは、ユーザーアカウント毎に確認メッセージが表示されてしまいます。

なので、「-Confirm:$false」オプションで確認せずに実行させるようにしています。

まとめ

まずは不定期連載第1回目、ということで基礎中の基礎でありながらも頻繁に利用するようなスクリプトを紹介してみました。

こんな感じでちょっとした「ちょっとそこかいてくれ~」レベルのスクリプトを紹介していきますので、どうぞよろしくおねがいします。

今回の参考リファレンスマニュアル

高度な関数にパラメーターを追加する方法について説明します。
docs.microsoft.com
The Get-Content cmdlet gets the content of the item at the location specified by…
docs.microsoft.com
The ForEach-Object cmdlet performs an operation on each item in a collection of …
docs.microsoft.com
Use this topic to help manage Windows and Windows Server technologies with Windo…
docs.microsoft.com
Use this topic to help manage Windows and Windows Server technologies with Windo…
docs.microsoft.com