Arquivo em lote para obter informações do sistema remoto em um loop

0

Desculpe pelo título, lutei para explicar em uma linha.

Eu tenho um script simples que obtém um status de sistemas remotos e retorna a linha que contém a memória total e envia para um arquivo:

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

Eu tenho um arquivo de texto que tem todos os nomes de host para cada PC que eu quero verificar. Como posso executar esse mesmo comando em cada um dos PCs no arquivo de texto, sem ter que fazer um arquivo em lote repetindo essa mesma linha?

Além disso, se possível, inclua também o nome do host no log.

obrigado

UPDATE: Eu vim com isso, vou testá-lo em breve.

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"
)
user2924019
fonte

Respostas:

1

Para obter apenas memória total, use a consulta wmic - é muito mais rápido.
por exemplo:

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

Mas você não precisa de arquivo de lote, melhor maneira é usar o arquivo com nomes de host delimitados por vírgulas

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

Você também pode adicionar a opção global / FAILFAST (tempo limite para conexão à máquina remota)

WMIC /FAILFAST:1000 ...
Adam Silenko
fonte
1

Eu consegui fazer isso usando o seguinte:

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"
)

Onde pclist.txt é uma lista de todos os nomes de host a serem verificados.

user2924019
fonte