[英]Get shared folder permissions
$path = \\\\server\\shared_folder dir $path | where { $_.PsIsContainer } | % { $path1 = $_.fullname; Get-Acl $_.Fullname | % { $_.access | Add-Member -MemberType NoteProperty '.\\Application Data' -Value $path1 -passthru }} | Export-Csv $reportpath
但是输出是:
\\\\服务器\\ shared_folder \\文件夹1; FileSystemRights; AccessControlType; IsInherited; InheritanceFlags; PropagationFlags
\\\\服务器\\ shared_folder \\文件夹2; FileSystemRights; AccessControlType; IsInherited; InheritanceFlags; PropagationFlags
我需要以下输出:
\\\\服务器\\ shared_folder; FileSystemRights; AccessControlType; IsInherited; InheritanceFlags; PropagationFlags
如果未指定,为什么要执行“ dir”递归? 如果我指定要在哪里告诉我呢?
要获得确切的答案,您需要:
$path = "\\server\shared_folder"
dir $path | where { $_.PsIsContainer } | % { $path1 = $_.Root; Get-Acl $_.Fullname | % { $_.access | Add-Member -MemberType NoteProperty '.\Application Data' -Value $path1 -passthru }} | Export-Csv $reportpath
注意ForEach-Object(%)之后的“ $ _。Root”。 但是我认为以下方法更好,因为这样可以在“。\\ Application Data”下看到文件夹名称:
$path = "\\server\shared_folder"
dir $path | where { $_.PsIsContainer } | % { $path1 = $_.Name; Get-Acl $_.Fullname | % { $_.access | Add-Member -MemberType NoteProperty '.\Application Data' -Value $path1 -passthru }} | Export-Csv $reportpath
希望这会有所帮助,因为您的问题不是很清楚imo。
另外,请帮自己一个忙,在PowerShell ISE中编写代码,并使用PowerShell StyleGuide指南:
$path = "\\server\shared_folder"
$shares = Get-ChildItem $path | Where-Object { $_.PsIsContainer }
$data = foreach($share in $shares){
$path = $share.Name
$acls = Get-Acl $share.Fullname
foreach($acl in $acls){
$acl.access | Add-Member -MemberType NoteProperty '.\Application Data' -Value $path -passthru
}
}
$data | Export-Csv $reportpath
这使代码更具可读性,并且以后更容易进行故障排除或修改代码。 此版本不输出共享文件夹内的文件夹的ChildItems。 仅将文件夹放置在“ \\ server \\ shared_folder”中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.