如何使用Powershell显示共享文件及其共享ACL?

时间:2020-06-03 23:58:09

标签: powershell

我是使用Power Shell的初学者,我想找到一种方法来显示所有共享文件夹的目录以及它们的共享访问控制列表和“目录访问控制列表”。我尝试对共享文件夹使用net share,但是我不知道如何使用其中提到的目录作为“获取访问控制列表”。并使用“获取访问控制列表”来显示每个访问者的访问权限,例如谁拥有完全访问权限或只是写或删除特权等。我正在尝试复制Microsoft基准安全分析器的结果。

1 个答案:

答案 0 :(得分:0)

请始终共享您当前的代码,以便我们为您提供方便。

但是因为您是新手,所以我会为您写一些。 :) 为此,有一个名为Get-SmbShareAccess的cmdlet 例如,如果您运行:Get-SmbShareAccess -Name C$,您将得到回报(就我而言):

Name ScopeName AccountName              AccessControlType AccessRight
---- --------- -----------              ----------------- -----------
C$   *         BUILTIN\Administrators   Allow             Full       
C$   *         BUILTIN\Backup Operators Allow             Full       
C$   *         NT AUTHORITY\INTERACTIVE Allow             Full       

然后,您可以根据需要使用Select-Object过滤属性,例如,从输出中删除ScopeName参数。

然后,如果您要查看多个共享,可以使用Foreach进行循环。

$shares = Get-SMBShare
Foreach($share in $shares){Get-SmbShareAccess -Name $share.Name}

Get-SMBShare列出了运行脚本的计算机上的所有共享。

如果您想进一步了解一下多台服务器上的共享,可以使用Invoke-Command,但这是更大的一步。

希望能为您提供正确的方向。