PowerShell を使用して Active Directory を検索

投稿者: Dan Franciscus 投稿日: 2019年11月6

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.
著者が作成したブログ

関連タグ

関連記事

PowerShellを使用したActive Directoryのパスワードポリシー管理
Windows Server 2008 より前のバージョンでは、Active Directory パスワードポリシーはデフォルトのドメイングループ・ポリシーで行われており、Active Directoryドメイン全体に対して1つのポリシーしかありませんでした。このような制限があると、異なるユーザーには異なるポリシーを適用したいといった、ごく一般的な要求に応えることができません。
MOVEit 2018 の REST API で PowerShell を使う
MOVEit の利用形態として、MOVEit コンソールや Web インタフェースからログインして日々の管理業務を行ったり、1回限りのワークフローを設定して操作する作業は理にかなっており、首尾よくいきます。一方、MOVEit Automation の自動化を活用したいケースもあります。
Prefooter Dots
Subscribe Icon

Latest Stories in Your Inbox

Subscribe to get all the news, info and tutorials you need to build better business apps and sites

The specified form no longer exists or is currently unpublished.