Get-ADUser过滤掉特定的OU,自定义列

时间:2015-08-03 15:04:06

标签: powershell csv ou

尝试获取活动用户的审核报告。我们有一个我不想报告的OU。

为我提供所有有效(已启用)的AD帐户。除了特定的OU。

Get-ADUser -Filter{enabled -eq $true} | Select-object Samaccountname,surname,givenname `
        | Export-Csv -NoTypeInformation C:\scripts\ActiveUsers.csv

如何过滤掉OU=Service Accounts

我还需要在csv输出的A列中有一个自定义列。 示例:单词" ACME"在所有行的A列中。

非常感谢 以斯帖

2 个答案:

答案 0 :(得分:4)

过滤父容器

OU是对象的pack_task属性的一部分。

使用DistinguishedName过滤掉某个OU中的对象,方法是删除Where-Object的第一部分,然后将其余部分与OU的DistinguishedName进行比较:

DistinguishedName

如果您知道OU名称,而不是完整的$OUDN = "OU=Service Accounts,OU=Accounts,DC=domain,DC=tld" Get-ADUser -Filter {Enabled -eq $true} | Where-Object { $_.DistinguishedName -notlike "*,$OUDN" } ,则可以通过将可分辨名称拆分为隔离专区并比较第二个(直接父容器)来从结果中删除OU的直接子对象到要排除的名称:

DistinguishedName

或在其祖先路径中排除具有给定OU名称的任何对象:

$OUName = "Service Accounts"
Get-ADUser -Filter {Enabled -eq $true} | Where-Object {
    $ObjectCN,$ParentCN,$null = $_.DistinguishedName -split "(?<=[^\\]),"
    $ParentCN -ne "OU=$OUName"
}

自定义属性值

$OUName = "Service Accounts" Get-ADUser -Filter {Enabled -eq $true} | Where-Object { $ObjectCN,$ParentCNs = $_.DistinguishedName -split "(?<=[^\\])," $ParentCNs -notcontains "OU=$OUName" } 支持计算属性。您可以提供带有静态表达式的计算属性作为要选择的第一个属性,如下所示:

Select-Object

导出为CSV,上面的示例将分别在col A和B中具有colunm标题“MyCustomColumn”和“Name”,col A始终保持值“ACME”,而col B将保留单个名称用户

答案 1 :(得分:4)

这很有效 - 感谢帮派。

Get-ADUser -Filter {enabled -eq $true} | ? {$_.DistinguishedName -notlike "*,OU=Service Accounts,*"}

自定义列:

Select-Object -Property @{n="ColumnA"; e={"ACME"}}