Я пытаюсь получить список имен пользователей и их атрибут pwdlastset на контроллере домена Windows Server 2008. Я использую directoryservices, поскольку не установлены adutils. Скрипт работает, но у меня нет опыта работы с powershell, и я хотел бы узнать, как улучшить форматирование вывода. В настоящее время имена пользователей и даты печатаются каждое в новой строке. Я получаю что-то вроде этого:
пользователь1
pwdlastsetdate
пользователь2
pwdlastsetdate
Как я могу получить что-то вроде
пользователь1;парольпоследняя_установка_дата
пользователь2;парольпоследнейдаты
Спасибо!
Вот скрипт, который я использую:
$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")
}
решение1
Вы можете создать собственный массив, выполнив следующие действия:
$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