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

Create Folder, Create AD Groups, Apply Groups to Folder and Set Permissions

我正在尝试找到一种更简洁的方法来创建网络共享文件夹,创建与共享匹配的 Active Directory 安全组,然后将权限级别应用于文件夹,同时在脚本。

这是我目前所拥有的,完全不知道如何获得其余部分并使其发挥作用:

$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

while asking the questions in the script

为了获得输入,最好使用 .ps1 文件顶部的参数结构,就像这样

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')

与读取主机相比,这为您提供了一些优势。对于初学者,您可以强制类型和提供的值不为 null 或空,而且它允许预先收集所有值,这意味着脚本可以在自动化场景中使用,不像 Read-Host 只适用于人类输入值。

Creating an Active Directory Security group that matches the Share

您可以使用 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 is an automatic variable that contains a NULL or empty value. You can use this variable to represent an absent or undefined value in commands and scripts.