Microsoft 環境の IT 管理者が PowerShell で最初に行うことの1つに、PowerShell を使用して Active Directory でタスクを実行することがあります。
PowerShell を使って、コンピュータを Active Directory に登録したり削除したり、パスワードをリセットしたり、といった様々なことが可能です。筆者が特によく実行するタスクは、Active Directory でユーザーとコンピュータの情報を検索することです。PowerShell が便利なのは、特定の部門のユーザーのみを検索するなど、情報をフィルター処理できる点にあります。このブログでは、PowerShell で Active Directory を検索する方法を説明します。
ユーザー情報の検索
AD でユーザー情報を検索するには、Get-ADUser コマンドレットを使用します。筆者が多用する -Identity パラメータには、以下のようなタイプの値を渡すことができます。
- 識別名 (DistinguishedName)
- GUID (ObjectGUID)
- セキュリティ識別子 (SID)
- SAM アカウント名 (SamAccountName)
たとえば、次のように samaccountname で情報を取得することができます。
C:\> Get-ADUser -Identity dfrancis
DistinguishedName : CN=Daniel Franciscus,OU=Test,DC=domain,DC=com
Enabled : True
GivenName : Dan
Name : Daniel Franciscus
ObjectClass : user
ObjectGUID : 68fbb9c6-bc5a-4892-8f93-5ba8ec523365
SamAccountName : dfrancis
SID : S-1-5-21-2099712884-232525161-946742744-8334
Surname : Franciscus
UserPrincipalName : dfrancis@domain.com
簡単ですね?もう少し進んで -Filter パラメータを使うと、出力をフィルタリングできます。次のようにすると、間違ったパスワードのカウントが7を超えるユーザーを表示できます。
C:\> Get-ADUser -Filter 'badpwdcount -ge 7' | Select-Object samaccountname
samaccountname
--------------
Guest
Test-1
TestUser2
TestUser3
TestUser4
また、特定の組織単位で、Active Directory の特定の情報を検索することもできます。下は、組織単位 (organizational unit、OU) =Desktop で、姓が「Davis」であるユーザーをチェックする例です。
C:\> Get-ADUser -Filter 'Surname -eq "Davis"' -SearchBase 'OU=Desktop,DC=domain,DC=com' -Properties * | Select Displayname,Surname
Displayname Surname
----------- -------
Dan Davis Davis
Brad Davis Davis
Active Directory では姓の属性は “Sirname” なので、–eq 演算子を使用して “Sirname” が “Davis” であることを正確に指定します。
コンピュータ情報の検索
コンピュータ情報の検索には、Get-ADComputer コマンドレットを使用します。パラメータは Get-ADUser とよく似ていて、同様に機能します。次の例は、特定の IPv4 アドレスに関連付けられたコンピュータ情報の検索です。
C:\> Get-ADComputer -Filter 'IPv4Address -eq "172.16.67.155"'
DistinguishedName : CN=Test-1,OU=Staff,OU=Test,DC=domain,DC=com
DNSHostName : Test-1.domain.com
Enabled : True
Name : Test-1
ObjectClass : computer
ObjectGUID : 68e597fe-631d-413d-9087-2cc806709c82
SamAccountName : Test-1$
SID : S-1-5-21-2099712884-232525161-946742744-11288
UserPrincipalName :
次は同じコマンドですが、検索されたマシンの SID だけを選んで表示しています。このような SID の検索など、Get-ADComputer で Active Directory の属性を簡単に検索できるのは非常に便利です。
C:\> Get-ADComputer -Filter 'IPv4Address -eq "172.16.48.155"' | Select-Object SID
SID
---
S-1-5-21-2099712884-232525161-946742744-11243
最後に
Active Director を頻繁に使用する場合は、Active Directory PowerShell モジュールを検討してください。AD の表示と変更を効率的に行うことができ、フィルタリングも簡単です。
Dan Franciscus
Dan Franciscus is a systems engineer and VMware Certified Professional (VCP) specializing in VMware, PowerShell, and other Microsoft-based technologies. You can reach Dan at his blog (http://www.winsysblog.com/) or Twitter at @dan_franciscus.