枚举Windows网络共享以及内部或内部的所有自定义权限

时间:2008-09-22 15:44:34

标签: windows active-directory file-permissions shared-directory

我们有各种共享许多目录的服务器。很容易看到共享浏览器以查看“顶级”共享的内容,但下面是混乱的自定义权限,其中没有一个是记录的。

我想列举域中的所有共享(绝对是所有“服务器”,本地PC都很好)然后递减每一个并报告与父项的任何偏差。如果孩子具有相同的权限,则无需向后报告。

我更喜欢编写一个大型C#应用程序的简单脚本解决方案,但任何有效的方法都可以(甚至现有的软件)。

例如,我想得到:

SERVER1\
 \-- C: (EVERYONE: Total control, ADMINs, etc. etc.)
   \-- (skip anything that is not the same as above)
   \-- SuperSecretStuff (Everyone: NO access; Bob: Read access)
SERVER2\ 
 \-- Stuff (some people)

2 个答案:

答案 0 :(得分:1)

我知道它不是脚本,但您尝试过ShareEnum吗? http://technet.microsoft.com/en-us/sysinternals/bb897442.aspx然后将其导出?您还可以与较旧的运行进行比较。我不认为有一个cmd行接口(很糟糕),但它会为你提供所需的信息

答案 1 :(得分:1)

This Powershell script完成了您的目标。

如上所述:

  

这个小脚本将枚举计算机上的所有共享,并列出每个共享的共享级别权限。它使用WMI检索共享,并列出权限。

     

请注意,此脚本列出了共享级权限,而不是NTFS权限。

     

它接受许多计算机作为输入,单个IP或在本地系统中运行它:

       .EXAMPLE 
       C:\PS> .\Get-SharePermissions # Operates against local computer. 

       .EXAMPLE 
       C:\PS> 'computerName' | .\Get-SharePermissions 

       .EXAMPLE 
       C:\PS> Get-Content 'computerlist.txt' | .\Get-SharePermissions | Out-File 'SharePermissions.txt'