Пакетный файл WMIC, чтобы пройти через CSV и получить статус диска

368
Keiren Medlock

Я использую этот код для проверки состояния диска удаленного ПК в моей компании

for /f "tokens=1 delims= " %%a in (C:\temp\HOSTNAMES.csv) do ( WMIC /Node:%%a DiskDrive GET Caption, Status ) 

это работает хорошо, но мне нужно захватить состояние, т. е. (OK) или (Pred Fail) для каждого ПК HOSTNAME в нашей сети, и создать простой отчет .CSV, так как для проверки требуется более 2000 ПК.

так что отчет будет выглядеть так

PC HOSTNAME - STATUS HOSTNAME01A - OK HOSTNAME02B - Pred Fail HOSTNAME03C - Pred Fail HOSTNAME04D - OK 

Я действительно изо всех сил пытаюсь присвоить статус диска переменной, чтобы я мог затем построить отчет.

0
Добавить вывод WMIC в некоторый текстовый файл. Затем удалите заголовки из этого файла, используя FIND / v Akina 5 лет назад 0
Привет, Акина, спасибо за твой ответ, не могли бы вы написать код в моем исходном коде, так как я очень новичок в написании командных команд, и мне понадобится навсегда использовать метод проб и ошибок. еще раз спасибо. Keiren Medlock 5 лет назад 0
Параметр / NODE также принимает имя файла в качестве ввода. `wmic / node: @ Hostnames.txt`. Squashman 5 лет назад 0

2 ответа на вопрос

1
LotPings
  • "tokens=1 delims= " является значением по умолчанию и не нуждается в выражении.
  • При использовании wmic с /Format:csvузлом будет частью вывода

:: Q:\Test\2018\10\30\SU_1371253.cmd @Echo off SetLocal EnableExtensions EnableDelayedExpansion  ( for /f %%H in (HOSTNAMES.csv) do ( Echo:Processing %%H>CON: for /f "delims=" %%A in (' WMIC /node:%%H DiskDrive GET Caption^,Status /Format:csv ^|findstr /i "%%H" ') do @Echo %%A ) ) > "%~dpn0.Log" 
Привет, LotPings, большое спасибо за твой ответ, если работал отлично. Keiren Medlock 5 лет назад 0
Забыл упомянуть, что выходной файл имеет то же местоположение и имя, что и пакет, но с расширением `.Log` LotPings 5 лет назад 0
0
MC ND

Как указано в LotPings, csvвыходной формат включает имя узла. Если мы объединим это с wmicвозможностью читать список хостов из файла, который мы можем использовать

wmic /node:@"c:\temp\hostnames.csv" DiskDrive get Caption,Status /format:csv > report.csv 

Или же

wmic /node:@"c:\temp\hostnames.csv" /output:"report.csv" DiskDrive get Caption,Status /format:csv 

Делая это таким образом, мы запускаем только один wmicпроцесс вместо одного для каждого узла.

Похожие вопросы