在 Windows Server 2008 上使用 DirectoryServices 通过 powershell 列出 AD 属性

在 Windows Server 2008 上使用 DirectoryServices 通过 powershell 列出 AD 属性

我正在尝试获取 Windows Server 2008 DC 上的用户名及其 pwdlastset 属性的列表。我正在使用目录服务,因为没有安装 adutils。该脚本正在运行,但我对 powershell 不熟悉,想知道如何改进输出格式。目前,用户名和日期分别打印在新行中。我得到如下结果:

用户1

上次设置密码日期

用户2

上次设置密码日期

我怎样才能得到类似的东西

用户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

相关内容