2010-09-09 89 views
0

我有,通過刪除以下組PowerShell的文件夾的繼承問題

  • NT AUTHORITY \ Authenticated用戶使用PowerShell腳本我基本上嘗試重置文件夾的權限問題
  • BUILTIN \用戶

如果我手動將文件夾更改爲不從其繼承父級腳本的作品,我已經通過谷歌來尋找通過腳本刪除繼承的最佳方式腳本編譯但不做任何事情。

這是命令我使用

$WebsiteACL =Get-Acl -Path "C:\websites" 
$WebsiteACL.SetAccessRuleProtection($true,$false) 

沒有人有任何sugestion?

回答

1

就我個人而言,我發現Get-Acl和Set-Acl仍然使用太多的PITA(並且我是C#開發人員)。您可以使用icacls.exe輕鬆完成您的任務:

icacls C:\temp\foo /inheritance:d 

它還支持刪除組。查看它的用法:icacls /?

+0

感謝keith,get-acl/set-scl是pita,會給我試試 – Iain 2010-09-09 19:42:49

1

Get-Acl/Set-Acl除非您是您嘗試更改權限的對象的所有者 - 即使您是管理員,也可能是皇家的痛苦。如果您想要更改不屬於您的對象的ACL,則必須爲您的身份/帳戶啓用SeBackupPrivilege。我知道修改系統權限的唯一簡單方法是安裝PowerShell社區擴展並使用Get/Set-Privilege。我真的不明白爲什麼這個限制存在,但它確實存在。

這樣說,使用icacls在大多數情況下工作得很好。如果您在通過基於Access Based Enumeration的共享訪問的目錄上設置權限,則會出現一個錯誤。大家都這樣做對嗎? ;)

使用icacls觸摸ABE控制的共享下的目錄會導致目錄消失,即使您仍然有權訪問該目錄。如果使用Windows資源管理器ACL編輯器讀取並(重新)應用icacls設置的權限,該目錄將再次可見。

經過多次頭部搔抓,確定icacls正在對同步位進行一些操作。沒有同步 ABE導致目錄不可見。最簡單的解決方法是不使用ABE,但在我們的環境中禁用ABE不是一種選擇。

另一種解決方案是使用SetACL.exe,您可以從SourceForge下載。它有一個非常複雜的語法,但是非常強大。它也可以作爲OCX使用,所以你可以通過PowerShell編寫腳本。