PowerShellのGet-ADUserコマンドレットを頭を悩ませることなく理解する方法
PowerShellを使ってADから情報を取得するのは非常に便利ですが、特に初めて使う場合は難しいかもしれません。Get-ADUserコマンドレットは、有効化されているユーザー、パスワードの最終変更日、グループメンバーシップなどのユーザー詳細情報を取得する際によく利用されます。しかし、このモジュールがプリインストールされていなかったり、コマンドが実行できなかったりして、始める前から行き詰まってしまうことがあります。このガイドは、こうしたハードルを乗り越えるのに役立つだけでなく、必要な情報を取得、保存、カスタムルールでフィルタリングする方法も示します。つまり、頭を悩ませることなく、役立つAD情報を取得する方法です。—
PowerShell で Get-ADUser が認識されない場合の修正方法
Active Directory モジュールがインストールされ、インポートされていることを確認する
まず、典型的な例です。実行時にGet-ADUser「Get-ADUser という用語が認識されません」のようなエラーが発生する場合、PowerShell セッションで Active Directory モジュールが読み込まれていない可能性があります。DC 以外のマシンには、RSAT (リモート サーバー管理ツール) 経由でインストールする必要があります。Windows 11 または 10 をお使いの場合は、管理者の PowerShell ウィンドウで次のコマンドを実行するのが最も手軽な解決策です。 Get-WindowsCapability -Name RSAT. ActiveDirectory* -Online | Add-WindowsCapability -Online インストールが完了したら、次のコマンドで読み込みます。 Import-Module ActiveDirectory それでも問題が解決しない場合は、DLL を手動で直接「インポート」する必要があることがあります。特に RSAT パッケージ全体のインストールを避けたい場合は、次のようにします。
Import-Module "C:\Path\to\Microsoft. ActiveDirectory. Management.dll"
しかし、正直に言えば、可能であれば RSAT をインストールする方が簡単です。
モジュールがインストールされているかどうかを確認する
実行してください: Get-Module -ListAvailable ActiveDirectory 表示されたら問題ありません。表示されない場合は、上記のようにRSATをインストールしてください。RSATのインストール後に再起動すると、PowerShellがモジュールを認識しやすくなる場合があります。—
ADユーザーを見つけてそのプロパティを効果的にリストする方法
すべてのユーザーを一覧表示する — 注意してください!
実行するの Get-ADUser -filter * は魅力的ですが…大規模なドメインでは無理です。このコマンドはすべてのユーザーアカウントを取得するため、DCに過負荷をかけたり、タイムアウトを引き起こしたりする可能性があります。できればフィルターを使用するなど、慎重に使用してください。
個々のユーザーの情報を取得する
特定のユーザーの情報が必要ですか? : Get-ADUser –Identity "b.smith" または : を使用してください。これで基本的な情報が表示されますが、 -Properties *Get-ADUser –Identity "CN=Brian Smith, OU=Users, OU=Berlin, DC=woshub, DC=loc"フラグを 追加すると、ほぼすべてが表示されます。そのため、 : を使用する方が適切です。 : は、パスワードの有効期限や最終ログインなど、すべての属性を表示します。設定によっては、必要以上に多くの情報が表示される場合がありますが、深く掘り下げるには便利です。 Get-ADUser -identity "b.smith" -properties *
ユーザーのフィルタリングと並べ替え
アクティブな*ユーザーのみを表示したいですか? Get-ADUser -Filter 'Enabled -eq $true' または、特定のOUに属するユーザーをフィルタリングします。 Get-ADUser -SearchBase "OU=NY, DC=woshub, DC=com" -Filter * カスタム属性フィルタリングには、LDAPフィルタが非常に便利です。 Get-ADUser -LDAPFilter '(&(department=IT)(title=SysOps))' メールアドレスを持たないユーザーのリストを素早く取得したいですか? 次のようにします。 Get-ADUser -Filter * -Properties mail | Where-Object { -not $_.mail } このような処理により、入力の手間が省け、出力が整理されます。 —
広告データをファイル(CSV/TXT)にエクスポートして簡単に利用する方法
Get-ADUser -Filter * -Properties Name, LastLogonTimestamp, pwdLastSet | Export-Csv "C:\temp\ADusers.csv" -NoTypeInformation シンプルなプレーンテキストレポートが必要な場合: Get-ADUser -Filter * -Properties Name, Enabled | Format-Table Name, Enabled > C:\temp\ADusers.txt CSV形式の利点は、Excelで開いたり、オートフィルターを適用したり、さらに詳細な分析を行ったりできることです。Outlook用にアドレスを抽出する場合は、次の方法をお試しください Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq $true)} -Properties mail | Select-Object Name, mail | Export-Csv -Path "C:\temp\email_list.csv" -NoTypeInformation 。
例 – 便利なコマンド
現実世界でよく発生するクエリは次のとおりです: – 名前が「Joe」で始まるユーザーをリストする: Get-ADUser -Filter "Name -like 'Joe*'" – アカウントの合計数をカウントする: Get-ADUser -Filter * | Measure-Object – 無効なユーザーを取得する: Get-ADUser -Filter {Enabled -eq $False} | Select-Object SamAccountName, Name – 電子メールを持たないユーザーを検索する: Get-ADUser -Filter * -Properties mail | Where-Object { -not $_.mail } – 過去 1 日間に作成されたアカウントを検索する: $yesterday = (Get-Date).AddDays(-1) Get-ADUser -Filter "WhenCreated -ge '$($yesterday. ToString('yyyy-MM-dd'))'" – 非アクティブなユーザーをふるいにかける: (180 日間ログオンしていない) $threshold = (Get-Date).AddDays(-180) Get-ADUser -Properties LastLogonTimestamp -Filter * | Where-Object { $_. LastLogonTimestamp -lt $threshold } | Select-Object Name —
まとめと最後のヒント
PowerShell で AD 情報にアクセスするのは、難しいことではありません。モジュールを動作させ、フィルタリング、エクスポート、特定の属性の一覧表示の方法さえ理解すれば、かなり便利です。モジュールがすぐにインストールされなかったり、権限が不足していたりすると、少し扱いにくいと感じることもありますが、根気強く待つことで解決できます。設定によってはコマンドを少し調整したり、出力のフォーマットを調整したりする必要がある場合もありますが、全体的には、ADUC を常に使用することなく AD データを操作できる非常に強力な方法です。
- RSATツールがインストールされていることを確認する
- 詳細情報については -properties * を使用してください
- 速度低下を避けるためにインテリジェントにフィルタリングする
- 結果をCSVにエクスポートして簡単に共有および確認
これで少しでも時間やストレスが軽減されることを願っています。PowerShell で AD を操作するのは、新しい言語を学ぶようなものですが、一度理解してしまえば、本当に時間の節約になります。ウィンク