我运行了单独的Powershell命令,一个获取特定级别的所有文件夹列表,另一个列出所有文件夹和关联的ACL。我想把它组合起来只列出" 3级"文件夹及其关联的ACL。 3级文件夹的命令是:
Get-ChildItem "I:" -Recurse -Directory | Where-Object {$_.FullName.split("\").count -le 4} | ForEach-Object FullName
文件夹ACL的命令是:
Get-ChildItem j:\ -Recurse | where-object {($_.PsIsContainer)} | Get-ACL | Format-List
我试过了:
Get-ChildItem I:\ -Recurse | where-object {($_.PsIsContainer)} | Where-Object {$_.FullName.split("\").count -le 4} Get-ACL | Format-List
但是得到了错误Where-Object:找不到接受参数的位置参数' Get-ACL'。
提前感谢您的帮助!使用PS 5.1,顺便说一句。
答案 0 :(得分:1)
您可以使用管道完成此操作。只需将第一组命令的输出直接传递到Get-ACL
cmdlet,就像这样。
$path = "I:\"
Get-ChildItem -Path $path -Recurse -Directory | `
Where-Object {$_.FullName.split('\').count -le 4} | `
Select-Object -ExpandProperty FullName | `
Get-ACL | `
Format-List
答案 1 :(得分:0)
我认为你在|
之后错过了一个竖线字符(Where-Object
)。
答案 2 :(得分:0)
这有效:
dir "I:" -Recurse -ea silentlycontinue | where { $_.PsIsContainer -and $_.FullName.split("\").count -le 5} | % { $path1 = $_.fullname; Get-Acl $_.Fullname | % { $_.access | where { !$_.IsInherited } | Add-Member -MemberType NoteProperty -name "Path" -Value $path1 -passthru }}
感谢您的回复!