LoginSignup
18
28

More than 5 years have passed since last update.

PowershellでActiveDirectoryを管理する(1)

Posted at

はじめに

Active Directoryの管理作業をPowershellから実施してみる。
定常的な作業を自動化するために調査。

今回はユーザ作成とロック解除(とユーザ属性の変更)にまつわるコマンドについて記載する。

環境

PS> [System.Environment]::OSVersion

Platform ServicePack Version      VersionString
-------- ----------- -------      -------------
 Win32NT             6.3.9600.0   Microsoft Windows NT 6.3.9600.0

PS> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      4.0
WSManStackVersion              3.0
SerializationVersion           1.1.0.1
CLRVersion                     4.0.30319.42000
BuildVersion                   6.3.9600.17400
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0}
PSRemotingProtocolVersion      2.2

※WindowsServer 2012R2

PowershellにActiveDirectoryモジュールを導入する。

Windowsの機能追加を実施し、PowershellのActiveDirectory モジュールを導入する。

機能名を確認する。

RSAT-AD-PowerShell がActiveDirectroy のPowershell版管理ツール。

PS> Get-WindowsFeature

Display Name                                            Name                       Install State
------------                                            ----                       -------------
[X] Remote Server Administration Tools                  RSAT                           Installed
# ~ 中略 ~    
    [X] Role Administration Tools                       RSAT-Role-Tools                Installed
        [X] AD DS and AD LDS Tools                      RSAT-AD-Tools                  Installed
            [ ] Active Directory module for Windows ... RSAT-AD-PowerShell             Available

機能の導入

PS> Install-WindowsFeature -Name RSAT-AD-PowerShell

Success Restart Needed Exit Code      Feature Result
------- -------------- ---------      --------------
True    No             Success        {Active Directory module for Windows Power...

使ってみる

ユーザ作成

New-ADUser コマンドレットを使用する。
このコマンドレットは AccountPassword オプションを利用してユーザの初期パスワードを設定することができる。
しかし、パスワードポリシーに定める複雑性要件を満たせなかった時に「パスワード未設定且つ無効」のユーザが作成される。

このエラーハンドリングを行おうとすると、無効ユーザの削除が必要になる等煩雑だったので、
ユーザ作成処理とパスワード設定処理を分ける手順も記載する。

ユーザ作成と同時にパスワード設定

パスワードポリシーに抵触しないことが確実ならば、こちらのほうがスマート。

PS> New-ADUser ztest01 -Surname Test `
                       -GivenName User1 `
                       -Path "OU=TEST,OU=UNIT,OU=EXAMPLE,DC=example,DC=co,DC=jp" `
                       -UserPrincipalName "ztest01@example.co.jp" `
                       -AccountPassword (ConvertTo-SecureString -AsPlainText "password" -Force)

ユーザ作成とパスワード設定を分ける

シェルスクリプトでエラーハンドリング、リランしやすいのはこちら。

# ユーザ作成
PS> New-ADUser ztest01 -Surname Test `
                       -GivenName User1 `
                       -Path "OU=TEST,OU=UNIT,OU=EXAMPLE,DC=example,DC=co,DC=jp" `
                       -UserPrincipalName "ztest01@example.co.jp"
# ユーザ取得
PS> $user = Get-ADUser -Filter {SamAccountName -eq "ztest01"}

# パスワード設定
PS> $user | Set-ADAccountPassword -NewPassword (ConvertTo-SecureString -AsPlainText "password" -Force)

# 有効化
PS> $user | Set-ADUser -Enabled $true

New-ADUser のよく使うオプション

オプション 説明
AccountPassword 初期パスワードを指定(SecureStting)
CannotChangePassword アカウントパスワードの変更を可能にするかどうかを指定
ChangePasswordAtLogon 次回ログオン時にパスワードを変更させるかどうかを指定
DisplayName 表示名を指定
EmailAddress メールアドレスを指定
GivenName 名を指定
PasswordNeverExpires アカウントパスワードの期限切れを無効にするかどうかを指定
Path オブジェクトを作成する組織単位(OU)またはコンテナのX.500パスを指定
Surname 姓を指定
UserPrincipalName ユーザープリンシパル名を指定

ユーザロック解除とよくある後処理

パスワード失念によるユーザロック解除を想定して記載。

# ユーザ取得
PS> $user = Get-ADUser -Filter {SamAccountName -eq "ztest01"}

# ユーザロック解除
PS> $user | Unlock-ADAccount

# 新規パスワード設定
PS> $user | Set-ADAccountPassword -NewPassword (ConvertTo-SecureString -AsPlainText "password" -Force)

# 次回ログオン時にパスワード変更を強制
PS> $user | Set-ADUser -ChangePasswordAtLogon $true

おわりに

次回はPowershellでGroup管理を予定。

18
28
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
18
28