繁体   English   中英

获取共享文件夹权限

[英]Get shared folder permissions

我对powershell相当陌生,我需要做一个共享文件夹权限报告。 我有以下代码:

 $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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM