Active Directory

【Active Directory】PowerShellでユーザーアカウントを管理する

2018年7月22日

こんにちは!そーまんです。

今回は、PowerShell を使い、ユーザーアカウントを管理(作成・移動・無効・グループに追加など)をする方法について書きました。


ユーザーを作成する

まず、AD のユーザーアカウントを作成するコマンドレットは New-ADUser になります。コマンドの詳細については以下のリンク先が参考になりました。

New-ADUserコマンド | POWERSHELL FROM JAPAN!! BLOG

アカウント名と OU の指定

ユーザーアカウントを作成する OU を指定する場合は、-Path オプションを付けて、OU を指定します。

ここでは単純にユーザーアカウント名と OU を指定してアカウントを作成します。

パスワードの指定とアカウントの有効化

上記コマンドでアカウントを作成した後には、ユーザーアカウントが無効の状態になっています。これを有効化にするには以下のようにパスワードの指定とアカウントを有効化するオプションを使います。

パスワードの指定は、-AccountPassword オプションを使います。またアカウント有効化は、-Enabled オプションを使います。また、パスワードは平文では保存できないので、ConvertTo-SecureString を使って文字列を暗号化します。

一度で多くの属性を登録する

一度に多くの属性を登録したいという場合は、以下のように必要な分をオプションとして付けて値を入れてあげれば登録ができます。

エラーチェックも含めたほうが良いかと思います。ユーザーが存在しない場合はユーザーを作成し、存在しない場合は作成せずに警告メッセージを返すようにしました。


ユーザーを移動する

ユーザーアカウントを別の OU に移動するには、Move-ADObject コマンドレットを使います。

ユーザーアカウントをまとめて移動したい場合は、以下のようなスクリプトを使えば移動ができます。

  1. $Name にユーザーアカウント名の途中まで入力し、Like 検索するのでワイルドカードの部分は * にしておきます。
    • ここでは、luser01,02,03 が対象なので、luser* と指定しました。
  2. Get-ADUser コマンドレットで $Name を Like 検索するので、複数のユーザーがヒットします。それを $Users に代入します。
  3. foreach で 1 個ずつ Move-ADObject で別の OU に移動します。


ユーザーを無効にする

ユーザーアカウントを無効にするコマンドレットは、Set-ADUser コマンドレットで -Enable オプションを $false にすれば無効にできます。


ユーザーを削除する

ユーザーアカウントを削除します。ただし、いきなりユーザーアカウントを削除してしまうのは問題があると思いますので、削除用の OU に一時退避しておくと良いでしょう。あと個人的にユーザーの削除をスクリプトで実行するのはやりたくない為に、ここでは一時退避したユーザーアカウントを無効にしています。

ユーザーアカウントを別の OU に一時退避し、無効化する場合は以下のようなスクリプトを使えばできます。

  1. $Name にユーザーアカウント名の途中まで入力し、Like 検索するのでワイルドカードの部分は * にしておきます。
    • ここでは、luser01,02,03 が対象なので、luser* と指定しました。
  2. Get-ADUser コマンドレットで $Name を Like 検索するので、複数のユーザーがヒットします。それを $Users に代入します。
  3. foreach で 1 個ずつ 処理します。
    • ユーザーアカウントを無効にします。既に無効になっていれば警告メッセージを返します。
    • ユーザーアカウントを Delete OU に移動します。既に当該 OU にあれば警告メッセージを返します。
  4. 3 を繰り返し処理します。


ユーザーをグループに追加する

ユーザーをグループに追加するには、Add-ADGroupMember コマンドレットを使います。まずはシンプルな方法で追加してみます。

上の処理ですと、グループに追加できるユーザーは 1 ユーザーのみです。(同じ処理を複数行追加してユーザー名を変更すれば複数ユーザーをグループに追加する事はできます。)

ユーザー名が全く異なるのであればこの方法が一番シンプルで分かり易いと思います。

一方で、特定のユーザー名があり(例:user01, user02, user03)、名前の規則がある程度一致している場合はもう少し効率的な方法で追加する事ができます。

上の処理を一行で書くとこう書けます。

これでユーザーをグループに追加する事ができましたので、グループにユーザーが追加されたか確認してみましょう。


グループに追加されているユーザーの一覧を取得する

グループにユーザーが追加されているか確認します。Get-ADGroupMember コマンドレットを使います。

上の取得結果ですと、ユーザー名だけではなく、他の情報も取ってきてしまいます。そこで、ユーザー名の一覧を取得するには以下の方法を使います。


ユーザーアカウントの属性を表示する

ユーザーアカウントのオブジェクトには、多くの属性(プロパティ)を持っています。PowerShell を使えば、特定の属性を簡単に取得する事ができます。とりあえず、サンプルとして属性を見てみましょう。(属性の一部は省略しております。)

一部は省略していますが、これだけでもかなりの量になります。この属性から最終ログオン日時を取得したい場合はどうしたら良いでしょうか。

Get-ADUser で取得したオブジェクトをパイプラインでつなぎ、Select-Object コマンドレットで指定してあげれば良いだけです。


最後に

いかがでしょうか。管理する対象のユーザーアカウントが多いと、GUI でいちいち管理するのは面倒なので、バッチや PowerShell を使うと良いと思います。

では最後までお読みいただきありがとうございました!

  • この記事を書いた人

そーまん

セキュリティエンジニアやってます。
ブログ歴3年。PVは月15万PV程度。
趣味はボクシング、筋トレ、登山です。
穏やかで人見知りな性格です。

人気記事

1

こんにちは!そーまんです。 今回は、PC に適用されている GPO を確認する方法について書きました。 本題に入る前に、一応参考までにGPOの適用タイミングについての記事をここに貼りましたので、必要に ...

2

こんにちは!そーまんです。 今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは前置きからです。 まずはじめに 組織では PC のラ ...

3

こんにちは!そーまんです。 今回は、グループポリシー (GPO) を使って、特定のコンピューターに対して、ドメインユーザーに ローカル管理者権限 (以下は特権と記載) を付与する方法について書きました ...

4

こんにちは!そーまんです。 今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 Windows 10 の検証環境をいじってたらサイン ...

5

こんにちは!そーまんです。 今回は、ユーザープロファイルを削除する方法について書いてみました。 企業の場合よくあることですが、1 台の PC を共有 PC として複数人で使ったり、また余り無いかもしれ ...

6

こんにちは!SE ブログの相馬です。       今回は、繰り返し文について書いてみました。PowerShell では他のプログラミング言語同様、繰り返し処理を行うことが ...

7

コマンドを使って CPU とメモリの使用率をデータで取得してみましたので、例えば PC のトラブルシューティングで問題を再現させる際にデータを取得しておくと、原因の特定に役立つ場合があるかと思います。

8

既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

9

企業で多くの GPO が適用されている環境では、PC に GPO が適用されなかったりする問題が発生する場合があるかと思います。その中でも、コンピューターの構成またはユーザーの構成のどちらかで、...

10

こんにちは!そーまんです。 今回は、Windows Server 2019 で NTP サーバーと同期する方法について書きました。 NTP サーバーの必要性や時刻同期の重要性を理解することは社内のシス ...

-Active Directory
-,