批处理文件循环获取远程系统信息

批处理文件循环获取远程系统信息

抱歉,标题太长了,我很难用一行来解释它。

我有一个简单的脚本,它可以获取远程系统状态,并返回包含总内存的行,并将其输出到文件:

systeminfo /s:HOSTNAME | findstr /C:"Total Physical Memory" >> "D:\All PCs\RAM_LOG.txt"

我有一个文本文件,里面有我想要检查的每台 PC 的所有主机名。我怎样才能在文本文件中的每台 PC 上运行相同的命令,而不必制作重复同一行的批处理文件?

此外,如果可能的话,还可以在日志中包含主机名。

谢谢

更新:我已经想到了这个,我很快就会测试它。

for /F "tokens=*" %%A in ("D:\All Pcs\pclist.txt") do (
    echo.   
    echo %%A >> "D:\All PCs\RAM_LOG.txt"
    systeminfo /s:%%A | findstr /C:"Total Physical Memory" >> "D:\All PCs\RAM_LOG.txt"
)

答案1

要获取总内存,请使用 wmic 查询 - 它更快。
例如:

...
wmic /NODE:"%%A" /APPEND:"D:\All PCs\RAM_LOG.txt" MEMPHYSICAL get name, TotalPhysicalMemory

但你不需要批处理文件,更好的方法是使用以逗号分隔的主机名文件

wmic /NODE:@"D:\All Pcs\pclist.txt" /APPEND:"D:\All PCs\RAM_LOG.txt" computersystem get name, TotalPhysicalMemory

您还可以添加全局选项 /FAILFAST (连接远程机器的超时)

WMIC /FAILFAST:1000 ...

答案2

我通过使用以下方法成功地做到了这一点:

for /F "tokens=*" %%A in ("D:\All Pcs\pclist.txt") do (
    echo.   
    echo %%A >> "D:\All PCs\RAM_LOG.txt"
    systeminfo /s:%%A | findstr /C:"Total Physical Memory" >> "D:\All PCs\RAM_LOG.txt"
)

其中 pclist.txt 是要扫描的所有主机名的列表。

相关内容