Ich versuche, eine Liste von Benutzernamen und deren pwdlastset-Attribut auf einem Windows Server 2008 DC abzurufen. Ich verwende Verzeichnisdienste, da keine Adutils installiert sind. Das Skript funktioniert, aber ich habe keine Erfahrung mit Powershell und würde gerne wissen, wie ich die Ausgabeformatierung verbessern kann. Derzeit werden Benutzernamen und Daten jeweils in einer neuen Zeile gedruckt. Ich erhalte so etwas:
Benutzer1
pwdlastsetdate
Benutzer2
pwdlastsetdate
Wie bekomme ich so etwas wie
Benutzer1;pwdlastsetdate
Benutzer2;pwdlastsetdate
Danke schön!
Dies ist das Skript, das ich verwende:
$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")
}
Antwort1
Sie können ein benutzerdefiniertes Array erstellen, indem Sie etwa Folgendes tun:
$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
}
Jetzt haben Sie ein Array mit den Informationen, das Sie einfach ausdrucken oder mit „format-table“ formatieren können.
$allinfo
$allinfo | format-table
$allinfo | export-csv -NoTypeInformation c:\allinfo.csv