作为Powershell的新手,我制作了以下脚本:
Get-ADUser -SearchBase "OU=BEL,OU=EU,DC=domain,DC=net" -Filter * -Properties * |
where {$_.cn -NotLike ***$_.l***} |
Select whenCreated, Name,displayName, sn, givenName, sAMAccountName, title,
description, employeeType, info, department, company, homeDirectory,
scriptPath, physicalDeliveryOfficeName,
@{Label='Manager';Expression={
(Get-ADUser $_.Manager -Properties displayName).displayName}} |
Export-Csv "Output.csv" -NoTypeInformation -Delimiter ";" -Encoding utf8
start "Output.csv"
因此,我希望看到所有用户都没有CN(名称)字段中提到的City(l)。示例结果将是:
CN:John Do(丹佛)美国 l:俄克拉荷马州出于这样或那样的原因,这个sript工作得很好,但是它并没有与'l'中提到的城市进行比较。它只是给了我AD中的所有用户,当通过通配符时,Powershell似乎没有使用它们。任何建议都会非常棒。谢谢你。
答案 0 :(得分:1)
我不知道你为什么围绕$_.l
有三个星号。它应该看起来像下列之一:
where {$_.cn -NotLike "*$($_.l)*"}
where {$_.cn -NotLike "*" + $_.l + "*"}
where {$_.cn -NotLike ("*{0}*" -f $_.l)}
或者你可以使用-notmatch
:
where {$_.cn -NotMatch $_.l}