PowerShell を使用して Active Directory を検索

11月 05, 2019 セキュリティとコンプライアンス, MOVEit

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.

Read next PowerShellを使用したActive Directoryのパスワードポリシー管理