使用 powershell 定期變更已建立的檔案權限

使用 powershell 定期變更已建立的檔案權限

我有一個目前無法解決的問題。我的公司有一個公共資料夾,使用者(其他工作人員)可以在其中建立文件。問題是,需要以使用者可以在同一天在該資料夾中建立檔案的方式配置此資料夾:每天晚上都會執行一個腳本,使該資料夾上的所有新建立的檔案(包括子資料夾上的所有文件)變成唯讀。此公用資料夾位於 Windows 10 的電腦上。

我已經設法獲得簡單的 Powershell 腳本,該腳本能夠將當前資料夾中的所有檔案設定為唯讀:

$folderPath = 'C:\TestFolder' 
Get-ChildItem -Path $folderPath -Recurse -File | % { $_.IsReadOnly=$True }`

此 powershell 腳本從管理員帳戶運行,這意味著每天執行腳本後,只有管理員可以編輯資料夾中的文件,但使用者不能再編輯。第二天,使用者可以建立新文件,但不能再編輯當前文件,並且每天都會重複該循環:從第二天起,新文件將被「鎖定」為唯讀。

有誰知道如何在 powershell 中實現此類檔案權限?

我自己對該腳本的演算法的想法:

  • 遞歸查找所有文件

  • 使它們只讀

  • 刪除使用者修改找到的任何檔案的權限

  • 保留使用者建立新文件和查看目前文件的存取權限

    非常歡迎任何建議!

答案1

您可以使用 powershell 僅指定早於特定日期的文件,如下所示:

Get-ChildItem -Path $folderPath -Recurse -File | 
    Where-Object CreationTime -lt (get-date).AddDays(-1) | 
    % { $_.IsReadOnly=$True }

確保檔案擁有者屬性或其權限也發生更改,因為擁有者通常可以將權限設定回讀/寫。您可以檢查檔案總管 UI 或使用Get-Acl \\path\to\file.ext

相關內容