Listado de atributos de AD con powershell usando DirectoryServices en Windows Server 2008

Listado de atributos de AD con powershell usando DirectoryServices en Windows Server 2008

Estoy intentando obtener una lista de nombres de usuarios y su atributo pwdlastset en un DC de Windows Server 2008. Estoy usando servicios de directorio porque no hay adutils instalados. El script funciona, pero no tengo experiencia con PowerShell y me gustaría saber cómo mejorar el formato de salida. Actualmente, los nombres de usuario y las fechas se imprimen cada uno en una nueva línea. Me sale algo como esto:

usuario1

pwdlastsetdate

usuario2

pwdlastsetdate

¿Cómo puedo conseguir algo como

usuario1;pwdlastsetdate

usuario2;pwdlastsetdate

¡Gracias!

Este es el script que estoy usando:

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

Respuesta1

Podrías crear una matriz personalizada haciendo algo como esto:

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

Ahora tienes una matriz con la información que puedes simplemente imprimir o formatear usando format-table

$allinfo

$allinfo | format-table

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

información relacionada