创建文件夹,创建AD组,将组应用于文件夹并设置权限

时间:2016-04-01 22:43:53

标签: powershell active-directory share ntfs

我试图找到一种更清晰的方式来创建网络共享文件夹,创建一个与共享匹配的Active Directory安全组,然后将所有权限级别应用于该文件夹,同时在脚本。

  • 创建文件夹D:\Test Share
  • 分享为测试分享
  • 创建广告组FS-TESTSHARE-R
  • 创建广告组FS-TESTSHARE-RW
  • 将两个组应用于新的共享文件夹
  • 将完全读取权限设置为FS-TESTSHARE-R
  • 将完整阅读/权限权限设置为FS-TESTSHARE-RW
  • 设置Domain Admins
  • 的完全访问权限

这就是我到目前为止所完成的,如何完成其​​余的工作并完全失去工作:

$Path = 'c:\TestShare'

# create new folder
$null = New-Item -Path $Path -ItemType Directory

# get permissions
$acl = Get-Acl -Path $path

# add a new permission
$permission = 'domain\FS-TESTSHARE-RW', 'FullControl', 'ContainerInherit, ObjectInherit', 'None', 'Allow'
$rule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $permission
$acl.SetAccessRule($rule)

# set new permissions
$acl | Set-Acl -Path $path

1 个答案:

答案 0 :(得分:0)

  

在询问脚本中的问题时

为了获得输入,最好在.ps1文件的顶部使用param构造,如此

param([Parameter(Mandatory=$true, Position=0)][ValidateNotNullOrEmpty()] [string] $Path,
[Parameter(Mandatory=$true, Position=1)][ValidateNotNullOrEmpty()] [string[]] $permission)

然后,您可以在启动脚本时提供值

.\yourscript.ps1 -path 'c:\TestShare' -permission ('domain\FS-TESTSHARE-RW', 'FullControl', 'ContainerInherit, ObjectInherit', 'None', 'Allow')

这比read-host提供了一些优势。对于初学者,您可以强制执行该类型,并且提供的值不是null或空,但它也允许预先收集所有值,这意味着脚本可以在自动化场景中使用,而不像Read-Host,它只适用于人类输入值。

  

创建与共享

匹配的Active Directory安全组

您可以使用Active Directory PowerShell Module创建和更新群组。

使用New-ADGroup命令

创建组
New-ADGroup -Name "FS-TESTSHARE-RW" -SamAccountName "FS-TESTSHARE-RW" -GroupCategory Security -GroupScope Global -DisplayName "Test Share Read-Write" -Path "CN=Users,DC=Fabrikam,DC=Com" -Description "Members of this group have read-write access to the test share"  

然后使用Add-ADGroupMember命令将主体添加到组中。以下示例将主体User1和User2添加到组FS-TESTSHARE-RW。

Add-ADGroupMember FS-TESTSHARE-RW User1,User2

至于映射权限,您已经在正确的路径上,但是我会指出您不应在脚本中使用$ null作为值,it is an automatic variable

  

$ null是一个包含NULL或空值的自动变量。您          可以使用此变量来表示命令中缺少或未定义的值          和脚本。