2014-10-29 107 views
0

我想創建一個網絡共享和設置ACL權限,它適用於1個文件夾的完美,但我想爲1個文件夾創建相同的東西,我只是不想重複代碼。如何在powershell中使用循環取多個變量值

以下是1個文件夾我的工作代碼,我也會把其他文件夾的路徑

$MediaFoler_Security = 'C:\Projects\MediaContent' 
$acl = Get-Acl $MediaFoler_Security 
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("IIS_IUSRS","FullControl", 
"ContainerInherit, ObjectInherit", "None", "Allow") 
$acl.AddAccessRule($rule) 
Set-Acl $MediaFoler_Security $acl 

這裏是我的其他文件夾路徑

$DeployFolder_Security = 'C:\Projects\Deployments' 

回答

0

你可以那樣做:

$folders = "C:\Projects\Mediacontent","C:\Projects\Deployments" 

foreach($folder in $folders){ 

$acl = Get-Acl $folder 
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("IIS_IUSRS","FullControl", 
"ContainerInherit, ObjectInherit", "None", "Allow") 
$acl.AddAccessRule($rule) 
Set-Acl $folder $acl 

} 
+0

你的代碼工作完美,目前我只有1個用戶'IIS_IUSRS',怎麼可以我添加'管理員'以及與IIS_IUSRS一起,而無需添加額外的行, – srk786 2014-10-29 15:23:10

+0

你不能,添加額外的行在循環中的第二個訪問規則 – Paul 2014-10-29 15:25:44

+0

所以有什麼辦法可以添加IIS_IUSRS和管理員在1去 – srk786 2014-10-29 15:26:18

1

把它放在一個函數:

function my-acl($path) { 
    $acl = Get-Acl $path 
    $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("IIS_IUSRS","FullControl", 
    "ContainerInherit, ObjectInherit", "None", "Allow") 
    $acl.AddAccessRule($rule) 
    Set-Acl $path $acl 
} 

而且像這樣的電話號碼:

my-acl 'C:\Projects\MediaContent' 
my-acl 'C:\Projects\Deployments' 

或者:

$dirs = @('C:\Projects\MediaContent','C:\Projects\Deployments') 
$dirs | % { my-acl $_ } 
+0

更多,看看高級功能'獲取幫助about_Functions_Advanced'。 '[CmdletBinding()]'給你免費的--WhatIf和-Confirm - 'Get-Help about_functions_CmdletBinding' – evilSnobu 2014-10-29 15:17:57

+0

這工作完美 – srk786 2014-10-29 15:23:58

相關問題