0

所以基本上,我要做的就是在文本文件“server.txt”中提到名称的 100 台服务器上执行“sc”命令。我尝试了以下方法,但它不起作用,因为它返回空的记事本文件。

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$
4

3 回答 3

2

您可以使用PsExec在网络中的远程计算机上执行命令。我用它来执行批处理文件并将参数传递给它们,以及检查正在运行的服务。甚至还有一种特殊的语法可以在文本文件中列出的多台计算机上执行。

或者,如果 powershell 是一个选项,您可以考虑使用powershell remoting

于 2012-09-14T18:46:02.577 回答
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
于 2012-09-14T20:06:10.497 回答
1

作为替代方式,您可以使用 wmic :

一次对多台机器执行并将列表保存为格式良好的 html 表(以及其他格式):

wmic /node:@servers.txt /output:services.html service get caption /format:htable 

当然,除了名称/标题之外,您还可以查询更多属性。

于 2012-09-14T20:22:38.370 回答