在 Windows Server 2008 上使用 DirectoryServices 透過 powershell 列出 AD 屬性

在 Windows Server 2008 上使用 DirectoryServices 透過 powershell 列出 AD 屬性

我正在嘗試取得 Windows Server 2008 DC 上的使用者名稱及其 pwdlastset 屬性的清單。我正在使用目錄服務,因為沒有安裝 adutils。該腳本正在運行,但我對 powershell 缺乏經驗,想知道如何改進輸出格式。目前,用戶名和日期均列印在新行中。我得到這樣的東西:

用戶1

密碼上次設定日期

用戶2

密碼上次設定日期

我怎麼才能得到類似的東西

user1;pwdlastsetdate

user2;pwdlastsetdate

謝謝你!

這是我正在使用的腳本:

$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
}

現在您有了一個包含資訊的數組,您可以使用格式表簡單地列印或格式化該資訊

$allinfo

$allinfo | format-table

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

相關內容