如何选择[Active Directory]对象的扩展属性?

时间:2014-02-07 18:41:19

标签: powershell

我想要提取所有Active Directory帐户的报告,在每个帐户中包含某些属性/属性,并将其传输到.csv文件中,这样我就可以添加格式和过滤器(等等)管理。

我有一个他们想要包含的属性列表(DisplayName,SamAccountName,Enabled,Created,AccountExpirationDate,LastLogonDate,PasswordLastSet,EmailAddress),其中大部分都是extended properties of the Get-ADUser cmdlet。我首先尝试像默认属性一样抓住它们,如下所示:

Get-ADUser -Filter * -SearchBase "dc=somedomain,dc=tld" `
| select DisplayName, SamAccountName, Enabled, Created, AccountExpirationDate, LastLogonDate, PasswordLastSet, EmailAddress `
| export-csv c:\DominAccountsPasswordInfoDump.csv -NoTypeInformation

...但是这不起作用,作为扩展属性"are only retrieved if they are specified in the -Properties parameter of the cmdlet",所以我得到了一个带有一堆空白列的.csv。

现在我的问题是我不知道如何在-Properties语句中指定select参数,(我似乎每次尝试都会收到以下错误消息)

  

Select-Object:找不到与参数名称'Parameters'匹配的参数。

在考虑select-object部分时,我开始怀疑是否需要定义我读入的每个用户对象(将其分配给$user变量或其他东西),在这一点上,我认为我应该寻求帮助,然后再进一步解决问题。由于搜索Google和StackExchange没有帮助,我在这里问。

如何选择AD用户的扩展属性? (理想情况下,使用我上面提到的单行脚本/ PowerShell命令。)

1 个答案:

答案 0 :(得分:7)

您可以在Get-ADUser cmdlet中执行此操作。

示例:

$Properties =
 @( 
 'DisplayName',
 'SamAccountName',
 'Enabled',
 'Created',
 'AccountExpirationDate',
 'LastLogonDate',
 'PasswordLastSet',
' EmailAddress'
 )

Get-ADUser -Filter * -SearchBase "dc=somedomain,dc=tld" -Properties $Properties | 
 select $Properties |
 export-csv c:\DominAccountsPasswordInfoDump.csv -NoTypeInformation

然后,select将排除您不想导出的默认属性。