【问题标题】:Enumerate Windows network shares and all custom permissions on or within枚举 Windows 网络共享和所有自定义权限
【发布时间】:2010-09-12 01:16:58
【问题描述】:

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

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

等等

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 它很简洁,但没有枚举不同权限级别的共享子目录。例如,在服务器 A 上,我们共享了 D:\company。在 D:\company\path\to\dir 深处,我们有另一个目录,其中包含未显示在 ShareEnum 中的自定义权限 :(
    【解决方案2】:

    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' 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 2023-03-16
      • 2014-01-20
      相关资源
      最近更新 更多