Windows Server 2008 で DirectoryServices を使用して PowerShell で AD 属性を一覧表示する

Windows Server 2008 で DirectoryServices を使用して PowerShell で AD 属性を一覧表示する

Windows Server 2008 DC でユーザー名とその pwdlastset 属性のリストを取得しようとしています。adutils がインストールされていないため、directoryservices を使用しています。スクリプトは動作していますが、PowerShell の経験がないため、出力のフォーマットを改善する方法を知りたいです。現在、ユーザー名と日付はそれぞれ新しい行に印刷されています。次のような結果が表示されます。

ユーザー1

パスワード最終設定日

ユーザー2

パスワード最終設定日

どうすればこんなものが手に入るのか

ユーザー1;パスワード最終設定日

ユーザー2;pwd最終設定日

ありがとう!

私が使用しているスクリプトは次のとおりです:

$SR=New-Object DirectoryServices.DirectoryEntry("GC://OU=OrganisationName,OU=Users,DC=site,DC=orgname,DC=de")
$searcher=New-Object DirectoryServices.DirectorySearcher($SR)
$searcher.Filter="(&(objectCategory=User))"
$results=$searcher.findall()
foreach ($usr in $results)
{
    $usrdata = $usr.Properties
    $usrdata.name
    [DateTime]::FromFileTime($usrdata.pwdlastset[0]).ToString("d")
}

答え1

次のようにしてカスタム配列を作成できます。

$SR=New-Object DirectoryServices.DirectoryEntry("GC://OU=OrganisationName,OU=Users,DC=site,DC=orgname,DC=de")
$searcher=New-Object DirectoryServices.DirectorySearcher($SR)
$searcher.Filter="(&(objectCategory=User))"
$results=$searcher.findall()

$allinfo = @()

foreach ($usr in $results)
{
    $info = "" | Select Name,Date
    $usrdata = $usr.Properties

    #Without [0] you get curly brackets in username output

    $info.Name = $usrdata.name[0]
    $info.Date = [DateTime]::FromFileTime($usrdata.pwdlastset[0]).ToString("d")
    $allinfo += $info
}

これで、format-tableを使用して簡単に印刷またはフォーマットできる情報を含む配列ができました。

$allinfo

$allinfo | format-table

$allinfo | export-csv -NoTypeInformation c:\allinfo.csv

関連情報