現時点では自分で解決できない問題があります。私の会社には、ユーザー (他の従業員) がファイルを作成できるパブリック フォルダーがあります。問題は、このフォルダーを、ユーザーが同じ日にそのフォルダーにファイルを作成できるように構成する必要があることです。つまり、毎晩スクリプトが実行され、このフォルダーに新しく作成されたすべてのファイル (サブフォルダーのすべてのファイルを含む) が読み取り専用になります。このパブリック フォルダーは、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