2016-12-16 2 views
0

Je suis aller chercher des autorisations de dossier, cependant, je ne veux permissiosn qui ne sont pas "NT AUTHORITY \ SYSTEM" ou "BUILTIN \ Administrateurs"Filtre Permission par IdentityReference

Mon code est:

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

Mais il montre toujours l'autorisation "NT AUTHORITY \ SYSTEM", comment puis-je filtrer les enregistrements que je ne veux pas?

Répondre

2

TL; DR: -notmatch utilise des expressions régulières et votre chaîne contient \S qui correspond à tout caractère non-espace (ce qui n'est pas ce que vous voulez).

utilisation -notlike au lieu de -notmatch:

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

Pour filtrer les entrées multiples, j'utiliser -notin:

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

@ 4c74356b41 Merci pour l'édition, je devais jeûner ... –

+2

son okay;) vous avez édité beaucoup de mien;) le temps de retourner la faveur :) – 4c74356b41

+0

ok comment puis-je le modifier afin qu'il corresponde à plusieurs critères, donc-pas comme "BUILTIN \ Administrators" ou "BUILTIN \ Administrators" –