最近、必要な機会があったので、調べながら書いてみました。
前提として、
・PowerShellが実行可能な設定となっていること。
・実行ユーザーがアカウントの取得などが可能なこと。
書き方と仕組みさえ分かれば容易に記述出来るので素敵。
また、以下は取得している情報はNameのみだが、他にも取得できるので、
その辺の詳細は、各クラスを見ていただきたいです。
UserPrincipal クラス (System.DirectoryServices.AccountManagement)
GroupPrincipal クラス (System.DirectoryServices.AccountManagement)
[void][reflection.assembly]::LoadWithPartialName("System.DirectoryServices") [void][reflection.assembly]::LoadWithPartialName("System.DirectoryServices.AccountManagement") function Get-Accounts($context) { $searcher = New-Object System.DirectoryServices.AccountManagement.PrincipalSearcher(New-Object System.DirectoryServices.AccountManagement.UserPrincipal($context)) $result = @($searcher.FindAll()) $searcher.Dispose() return $result } $context = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Machine) $accounts = Get-Accounts $context foreach($account in $accounts){ Write-Host $account.Name }