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