2013-01-11 90 views
1

我試圖寫一個腳本,將「CreatorOwner」權限配置文件$來設置文件夾權限的所有文件服務器上的文件夾;如何使用PowerShell

即,添加「CreatorOwner」權限「\文件服務器\ $檔案」

有誰能夠告訴我什麼命令和語法呢?

請不要問任何問題。這樣做的

+0

爲什麼會這樣downvoted?我很好奇,只是有什麼具體的原因? – Darktux

+0

這個鏈接應該可以幫助你實現你所需要的: http://blogs.msdn.com/b/johan/archive/2008/10/01/powershell-editing-permissions-on-a-file-or-folder。 ASPX – hoooman

回答

2

一種方法是使用WMI和UNC路徑。

現在,如果你有服務器名稱的列表,你可以做到以下幾點:

$servers = @("fileserver1","fileserver2","fileserver3") 
$AccessRule = New-Object system.security.accesscontrol.filesystemaccessrule("CREATOR OWNER","FullControl","ContainerInherit, ObjectInherit","InheritOnly","Allow") 
$servers | % { 
$profileshare = Get-WmiObject Win32_Share -ComputerName $_ -Filter "name = 'profile$'" 
$driveletter, $path = $profileshare.path 
$path = $path.TrimStart("\") 
$ACL = Get-Acl "\\$_\$driveletter`$\$path" 
$ACL.SetAccessRule($AccessRule) 
Set-Acl \\$_\$driveletter`$\$path -AclObject $ACL 
} 
+0

什麼樣的文件夾permisions在騎關鍵DIR $檔案的原始權限?我只想添加CreatorOwner ACL以正確地存在Profile $ dirs;如果我將samplefolder權限複製到配置文件$不會被覆蓋並導致多個問題? – Darktux

+1

見編輯答案 – jbockle

0

這將做到這一點:

#Change the CSV file path 

$Permissions = Import-Csv C:\Test.CSV -delimiter '|' 
ForEach ($line in $Permissions) 
$inherit = [system.security.accesscontrol.InheritanceFlags]"ContainerInherit, 
ObjectInherit" 

$propagation = [system.security.accesscontrol.PropagationFlags]"None" 

$acl = Get-Acl $line.Path 
$acl.SetAccessRuleProtection($True, $False) 
$accessrule = New-Object system.security.AccessControl.FileSystemAccessRule("domain users", "Read", $inherit, $propagation, "Allow") 

#Adding the Rule 
$acl.AddAccessRule($accessrule) 

#Setting the Change 
Set-Acl $line.Path $acl 

CSV文件看起來像什麼

\ SRV01 \ Folder1中\文件夾2等

+0

喜但這是在目標文件夾消滅所有現有ACL。我不想消滅現有的 –