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