ひっそりと生きるプログラマのブログ

日頃気になった事なりを書き留めるブログです。関心ごとは多くもう少し更新頻度を上げたいところです。

PowerShellでユーザーアカウントの一覧を取得する

最近、必要な機会があったので、調べながら書いてみました。

前提として、
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
}