Windows-Server-2008

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

  • January 24, 2020

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

使用者1

pwdlastsetdate

使用者2

pwdlastsetdate

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

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")
}

您可以通過執行以下操作來創建自定義數組:

$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

引用自:https://serverfault.com/questions/1000232