我试图找到一种更清晰的方式来创建网络共享文件夹,创建一个与共享匹配的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
答案 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或空值的自动变量。您 可以使用此变量来表示命令中缺少或未定义的值 和脚本。