基本上,我想做的就是在100个服务器上执行“sc”命令,这些服务器的名称在文本文件“server.txt”中提到。我尝试了以下内容,它不起作用,因为它返回空的记事本文件。
for /f %%a in (servers.txt) do sc \\server_name query | find "SERVICE_NAME">>servicecontroller.txt
我在本地尝试了上面的命令,它运行得很好。我知道问题出在“\ server_name”中。不知道这是错的。我需要使用隐藏的股票吗? 可能这样吗?
\\server_name\c$ /user:domain\username password
或者喜欢这个?
\\server_name\c$
答案 0 :(得分:2)
您可以使用PsExec在网络中的远程计算机上执行命令。我用它来执行批处理文件并将参数传递给它们,以及检查运行的服务。甚至还有一种特殊的语法可以在文本文件中列出的许多计算机上执行。
或者,如果powershell是一个选项,您可以考虑使用powershell remoting。
答案 1 :(得分:1)
如果你已经硬编码\\server_name
而不是%%a
,那那就是你的问题。试试这个:
for /f %%a in (servers.txt) do sc \\%a query | find "SERVICE_NAME">>servicescontroller.txt
编辑: 以下行有助于在所有服务器上一致地获得管理员访问权限。这是我(OP)寻找的那条线。
net use \\servername\ipc$ /u:domain\user password
答案 2 :(得分:1)
作为替代方式,您可以使用wmic:
同时对多台机器执行并将列表保存为格式良好的html表格(以及其他格式):
wmic /node:@servers.txt /output:services.html service get caption /format:htable
当然除了名称/标题之外,您还可以查询更多属性。