需要ICACLS脚本来调整远程服务器上文件夹的权限

时间:2018-12-17 21:27:58

标签: batch-file cmd

我最近使用此命令来修复一台服务器上的问题;

c:\windows\system32\icacls \\"server_name"\C$\Windows\System32\Tasks /grant "everyone":(OI)(CI)F

server list.txt 
server1
server2
server3 

我要编写的脚本是使用计算机列表用服务器列表中的名称替换“ server_name”,并遍历每台服务器,直到所有服务器都这样做为止。

现在,我将直接运行所有这些,如下所示;

c:\windows\system32\icacls \\server1\C$\Windows\System32\Tasks /grant "everyone":(OI)(CI)F 
c:\windows\system32\icacls \\server2\C$\Windows\System32\Tasks /grant "everyone":(OI)(CI)F 
c:\windows\system32\icacls \\server3\C$\Windows\System32\Tasks /grant "everyone":(OI)(CI)F

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用FOR命令来做到这一点,例如:

FOR /F "usebackq" %%a IN ("server list.txt") DO c:\windows\system32\icacls \\%%a\C$\Windows\System32\Tasks /grant "everyone":(OI)(CI)F

在这种情况下,我们使用usebackq选项,因为您的文件名包含空格。

或者,您可以简单地使用以空格分隔的列表:

FOR %%a IN ("server1" "server2" "server3") DO c:\windows\system32\icacls \\%%a\C$\Windows\System32\Tasks /grant "everyone":(OI)(CI)F

这两个选项均假定您将使用批处理文件。如果仅在命令提示符下运行命令,请使用%a而不是%%a

如果您要对此进行扩展以使用括号在FOR循环中添加更多命令,则还需要在icacls命令中转义括号。

进一步阅读: