使用 icacls 授予“所有子文件夹和文件”修改权限,但仅将读取权限授予顶级文件夹

MDM*_*rra 4 scripting windows powershell file-permissions icacls

我们的其中一台 Windows 服务器上有一些用户文件夹,但权限却很糟糕。我想要它SYSTEMDomain Admins完全控制所有文件夹。我希望用户只读取顶级文件夹(这是他们的主文件夹)并修改所有子文件夹和文件。这可以通过 GUI 轻松完成,但我不知道如何编写脚本。

我从我的 PowerShell 脚本调用 icacls,因为 get-acl 和 set-acl 是主要的 PITA。如果我必须使用它们,我并不反对,但我想调用 icacls 会更容易。这是我必须到目前为止的相关代码:

icacls.exe $folder /grant '$domain\$user:(OI)(CI)(M)'
icacls.exe $folder /grant 'SYSTEM:(OI)(CI)(F)'
icacls.exe $folder /grant '$domain\domain admins:(OI)(CI)(F)'
Run Code Online (Sandbox Code Playgroud)

如您所见,我正在使用icacls.exe $folder /grant '$domain\$user:(OI)(CI)(M)'. 我无法弄清楚如何使修改仅适用于子文件夹和文件,同时将只读授予顶级文件夹。

所需的权限结构如下所示(只是为了清楚起见):

-Users  
--M  
---Marra (read only to me)  
----Documents (Modify)  
----Scripts(Modify)  
----Etc (Modify)  
Run Code Online (Sandbox Code Playgroud)

什么是正确的 icacls 语法,或者我如何使用 set-acl 在 PS 中进行本机操作?

pk.*_*pk. 5

将脚本的第一行更改为以下内容,使其仅应用于子文件夹和文件。

icacls.exe $folder /grant "$domain\$user:(OI)(CI)(IO)(M)"
Run Code Online (Sandbox Code Playgroud)

然后将此应用到顶部文件夹。

icacls.exe $folder /grant "$domain\$user:(R)"
Run Code Online (Sandbox Code Playgroud)