1

我们有各种共享许多目录的服务器。查看共享浏览器可以很容易地了解“顶级”共享是什么,但下面是杂乱无章的自定义权限,没有一个记录在案。

我想枚举域上的所有共享(绝对是所有的“服务器”,本地 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)

等等

4

2 回答 2

1

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

于 2008-09-22T20:11:53.527 回答
1

这个 Powershell 脚本可以实现您的目标。

如前所述:

这个小脚本将枚举计算机上的所有共享,并列出每个共享的共享级别权限。它使用 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' 
于 2014-09-25T13:42:47.303 回答