PowerShellでファイルのフルアクセス権を特定ユーザに付与する


短期派遣を雇うから、どこどこのフォルダに対してのみ、派遣さんが読み書きできるようにして!という依頼がたまにある。
UNIXならchown -Rchmod -Rで一括設定できたのだが、WindowsのGUIだとこれが面倒くさい。しかも、オーナー権限の無いファイルが途中に混じっていたりすると Administrator でも自由が効かず、いちいちエラーで止まるからイラつく。

というわけで、コマンドラインから一括変更できるPowerShellスクリプトを書いてみた。
$folder$users を書き替えてもらえばそのまま動くようになっている。

$folder = "\\fileServer\本社\人事総務部\給与担当\給報"
$users = @("mydomain.net\spot_user1", "mydomain.net\spot_user2", "mydomain.net\spot_user3")

# サブフォルダ含めて、所有者をadministratorsグループに変更
cmd /c "TAKEOWN /F $folder /R /A"

# サブフォルダ含めて、フルアクセス権を付与
$users | %{ cmd /c "ICACLS $folder /GRANT ${_}:F /T" }

ちなみに、takeownはUNIXでいうchownのことで、オーナー権限を強制的に奪うコマンド。icaclsはUNIXでいうchmodのことで、権限を変更するコマンドである。