无法从某些PowerShell命令获取我想要的输出。我正在创建一个PowerShell脚本来帮助清理主目录。我需要获得目录的权限,并确保directoy的名称和有权访问的用户匹配。Powershell输出
我使用Get-Acl函数,它有很多额外的数据。理论上这些目录上的文件权限应该以管理员作为所有者,用户应该是Access下列出的唯一人员。
PS C:\> Get-Acl "\\fs1\home\e55555"
Directory: \\fs1\home
Path Owner Access
---- ----- ------
e55555 BUILTIN\Administrators DOM\e55555 Allow ...
我想筛选出除访问权限以外的所有内容。我尝试了管道|选择Access但它不会给我相同的输出。
我知道除了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命令?我怎么能“grep”的任何行开始与DOM没有额外的数据?
非常感谢您!能够得到你需要的代码。当我在PowerShell中看到你的代码是面向对象的,而且我只需引用该属性时,是一个很大的帮助。 – zjherner