如果您只想过滤当前用户的AccessToString属性的结果,那么假设每一行都以DOMAIN\username格式的用户开头,那么您需要做的就是:
(Get-Acl $File).AccessToString | findstr "$env:USERDOMAIN\$env:USERNAME"
如果您想获取FileSystemAccessRule对象以便您可以使用它做一些事情,请这样做:
(Get-Acl $File).Access | ?{$_.IdentityReference -eq "$env:USERDOMAIN\$env:USERNAME"}
如果您想检查用户是否具有某些权限,这可能更有用:
if (((Get-Acl $File).Access | ?{$_.IdentityReference -eq "$env:USERDOMAIN\$env:USERNAME"}).FileSystemRights -match 'Modify') {
# Do whatever it is you want to do if the user has Modify permissions
}
(当然,您可以应用-match 'Modify'
到第一个命令的结果,这通常不会有问题,但如果域或用户名包含“修改”,它会中断。不太可能,但最好只匹配属性你有兴趣。)
注意:我将$Files更改为$File是因为您只为单个文件分配了路径。如果$Files旨在成为多个文件的路径数组,请将其通过管道传递到Foreach-Object块,如下所示:
$Files | %{(Get-Acl $_).Access | ?{$_.IdentityReference -eq "$env:USERDOMAIN\$env:USERNAME"}