如何使用PowerShell验证帐户对文件共享具有特定的访问权限?

时间:2020-06-21 01:26:40

标签: powershell

我需要验证以下文件共享是否存在,并且帐户具有如下特定的访问权限。

文件共享-ADMIN $,Abc_Projects2 $,Xyz_Projects $

SYSTEM和管理员必须具有完全访问权限, 用户必须具有读取权限,谢谢

例如:

Name   ScopeName AccountName              AccessControlType AccessRight
----   --------- -----------              ----------------- -----------
ADMIN$ *         BUILTIN\Administrators   Allow             Full
ADMIN$ *         SYSTEM                   Allow             Full
ADMIN$ *         Users                    Allow             Read

我编写了以下代码以验证共享是否存在

$fileShares = @("ADMIN$", "Abc_Projects2$", "Xyz_Projects$")

function VerifyFileShares {
  param (
    [Parameter (Mandatory = $true)]$fileShares
  )

  ForEach ($fileShare in $fileShares) {
    If (Get-SMBShare | Where-Object NAME -EQ $fileShare) {
      "$fileShare is mapped"
    } 
    else {
      "$fileShare is not mapped"
    }
  }
}

VerifyFileShares -fileShares $fileShares

1 个答案:

答案 0 :(得分:0)

您应该查看NTFS module,这很容易验证权限。一个简单的例子:

Get-NTFSAccess -Path <PathToShare> -Account <UserOrGroup>

这将输出如下内容:

Account                             Access Rights   Applies to                Type    IsInherited   InheritedFrom
-------                             -------------   ----------                ----    -----------   -------------
BUILTIN\Administrators              FullControl     ThisFolderSubfoldersAn... Allow   True          c:
NT AUTHORITY\SYSTEM                 FullControl     ThisFolderSubfoldersAn... Allow   True          c:

当然,要在文件共享检查中嵌套等等需要一些工作。但是,有很多选择。

试一下,让我知道它的进展。