感謝此處提供的答案 - 我知道如何使用icacls /save & /restore
或複製相同資料夾的權限robocopy /MIR
。但是,我無法讓他們將相同的使用者權限從資料夾帶到具有不同內容的目標資料夾。使用ìcacls /restore
,目標資料夾仍然獲得從其父資料夾繼承的使用者權限(儘管我已經明確停用繼承)。
我的用例是,我有一個便攜式應用程式資料夾,當我將其放入這個有問題的子資料夾時,它將運行中斷,但當我將其放入同一個D:\ 驅動器的根目錄時,它將完全正常工作。我的資料夾路徑沒有任何「禁止」字符,例如% ^ etc.
,只有字母,而且路徑也不是很長。
有沒有辦法快速將權限從已知的正確位置複製到目標資料夾?請幫忙。
非常感謝。
答案1
編輯:
抱歉匆忙發文。
再次檢查後,這裡是我發現的一切:
- 該
robocopy
命令不會將權限指派給內部的檔案或子資料夾。因此,它需要這個額外的步驟(在 Windows 10 上):Folder properties > Security tab > Advanced > Permission = Check the box at "Replace all child object permission entries with inheritable permission entries from this object"
Icacls /save
那麼Icacls /restore
其實也可以工作。但它應用資料夾繼承狀態。如果「來源」啟用了繼承,則目標資料夾也會啟用繼承(從其父級,而不是從來源的父級)。因此,「來源」需要暫時停用資料夾繼承。
*)我認為最好不要這樣做,因為如果出現問題或忘記恢復“來源”上的所有更改,就會破壞來源。
- 我沒有使用 powershell 進行進一步測試
get-acl -path | set-acl -path
,但之前我發現它的工作原理如下icacls /restore
對於我的用例,我選擇 robocopy 命令。特別是在發現這個之後https://serverfault.com/questions/475612/replace-permission-entries-on-all-child-objects-using-icacls。我沒有測試這個,只是想像這可以組合成一行 cmd 命令,例如:
robocopy d:\source_folder_permission destination_folder_permission /e /sec /secfix /xc /xn /xo /xx /xl & icacls "destination_folder_permission\*" /q /c /t /reset
就這些。乾杯:)
最後!我找到了夢想的答案。感謝這個人僅使用 Robocopy 處理權限
這是範例robocopy
命令:
robocopy d:\source_folder_permission destination_folder_permission /e /sec /secfix /xc /xn /xo /xx /xl
我以管理員身份運行它。
希望這對每個人都有價值。再會!