はじめに
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管理を予定。