无法从某些 powershell 命令中获取我想要的输出。我正在创建一个 powershell 脚本来帮助清理主目录。我需要获取目录的权限并确保目录的名称和具有访问权限的用户匹配。
我正在使用 Get-Acl 函数,它有很多额外的数据。理论上,这些目录上的文件权限应该以管理员为所有者,用户应该是访问权限下列出的唯一人。
PS C:\> Get-Acl "\\fs1\home\e55555"
Directory: \\fs1\home
Path Owner Access
---- ----- ------
e55555 BUILTIN\Administrators DOM\e55555 Allow ...
我想过滤掉除正在访问的内容之外的所有内容。我试过管道 | 选择访问,但它没有给我相同的输出。
我知道除了 UserID 之外我还会有额外的信息,所以我想我可以写入一个文件并尝试“grep”我需要的东西。通过一些谷歌搜索和实验,我得到了一些我觉得很容易解析的输出,这里是命令和输出:
PS C:\> $test = Get-Acl \\fs1\home\\e55555 | Select-Object -ExpandProperty Access
| select IdentityReference
IdentityReference
-----------------
DOM\e55555
NT AUTHORITY\SYSTEM
BUILTIN\Administrators
NT AUTHORITY\Authenticated Users
尝试使用正则表达式找到我想要的行,我尝试过的所有东西都没有给我任何输出。我尝试了以下命令的不同变体,还尝试解析文件而不是变量:
echo $test | Select-String -pattern "^DOM"
[regex]::matches($test,"^DOM")
那么如何减少我的 get-acl 命令的输出呢?以及如何在没有额外数据的情况下对以 DOM 开头的任何行“grep”?