尝试获取活动用户的审核报告。我们有一个我不想报告的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列中。
非常感谢 以斯帖
答案 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"}}