IdentityReference过滤权限

时间:2016-12-16 18:10:23

标签: powershell powershell-v5.0

我正在获取一些文件夹权限,但是,我只希望权限不是" NT AUTHORITY \ SYSTEM"或" BUILTIN \ Administrators"

我的代码是:

$acl = Get-Acl $path
$perm = $acl.Access | where{$_.IdentityReference -notmatch  "NT AUTHORITY\SYSTEM"}
Write-Output $perm

但它仍然显示" NT AUTHORITY \ SYSTEM"许可,如何过滤掉我不想要的记录?

1 个答案:

答案 0 :(得分:3)

TL; DR: -notmatch正在使用正则表达式,并且您的字符串包含\S,它将匹配任何非空白字符(这不是您想要的)。

使用-notlike代替-notmatch

$acl = Get-Acl $path
$perm = $acl.Access | where{$_.IdentityReference -notlike "NT AUTHORITY\SYSTEM"}
Write-Output $perm

要过滤多个条目,我会使用-notin

$acl = Get-Acl $path
$perm = $acl.Access | where{$_.IdentityReference -notin @("BUILTIN\Administrators", "NT AUTHORITY\SYSTEM")}
Write-Output $perm