Listando atributos do AD com PowerShell usando DirectoryServices no Windows Server 2008

Listando atributos do AD com PowerShell usando DirectoryServices no Windows Server 2008

Estou tentando obter uma lista de nomes de usuários e seus atributos pwdlastset em um DC do Windows Server 2008. Estou usando serviços de diretório porque não há adutils instalados. O script está funcionando, mas sou inexperiente com PowerShell e gostaria de saber como melhorar a formatação da saída. Atualmente, os nomes e as datas dos usuários são impressos em uma nova linha. Eu recebo algo assim:

usuário1

pwdlastsetdate

usuário2

pwdlastsetdate

Como posso conseguir algo como

usuário1;pwdúltimadata

usuário2;pwdúltimadata

Obrigado!

Este é o script que estou 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")
}

Responder1

Você poderia criar um array personalizado fazendo algo assim:

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

Agora você tem um array com as informações que você pode simplesmente imprimir ou formatar usando format-table

$allinfo

$allinfo | format-table

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

informação relacionada