我最近使用此命令来修复一台服务器上的问题;
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
有什么想法吗?
答案 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
命令中转义括号。
进一步阅读: