Счетчик Perfmon не работает в скрипте

У меня есть простой скрипт, который создает серьезные счетчики Perfmon, а затем запускает их.

По какой-то причине любые счетчики информации о процессоре в скрипте, те, которые имеют имя процессора, не работают. Выходной файл создан, но он содержит только значение даты и времени, а не фактические значения счетчика. Однако, если я скопирую строку в командное окно, она будет успешно выполнена.

echo Objective Reporting Data Extraction - %date% - %time%

REM Write output to this location
set OUTPUTDIR=PERFMON_CSV
mkdir %OUTPUTDIR%

REM Counter collection frequency
set PERIOD=00:00:05

REM Create some collectors to collect the Server Health Check perfmon stats

c:\Windows\System32\Logman.exe create counter Obj_HC_svr_memory_5sec -o "%OUTPUTDIR%\obj_HC_svr_Memory_5sec" -f csv -v mmddhhmm  -max 300 -c "\Memory\Available MBytes" "\Memory\Pages/sec" "\Memory\Page faults/sec" "\Memory\Free system page table entries" -si %PERIOD%
c:\Windows\System32\Logman.exe create counter Obj_HC_svr_bytes_received_5sec -o "%OUTPUTDIR%\obj_HC_svr_bytes_received_5sec" -f csv -v mmddhhmm  -max 300 -c "\Network Interface(*)\Bytes Received/sec" -si %PERIOD%
c:\Windows\System32\Logman.exe create counter Obj_HC_svr_bytes_sent_5sec -o "%OUTPUTDIR%\obj_HC_svr_bytes_sent_5sec" -f csv -v mmddhhmm  -max 300 -c "\Network Interface(*)\Bytes Sent/sec" -si %PERIOD%
c:\Windows\System32\Logman.exe create counter obj_HC_svr_Disk_queue_5sec -o "%OUTPUTDIR%\obj_HC_svr_Disk_queue_5sec" -f csv -v mmddhhmm  -max 300 -c "\PhysicalDisk(*)\Avg. Disk Queue Length" -si %PERIOD%
c:\Windows\System32\Logman.exe create counter obj_HC_svr_Disk_read_5sec -o "%OUTPUTDIR%\obj_HC_svr_Disk_read_5sec" -f csv -v mmddhhmm  -max 300 -c "\PhysicalDisk(*)\Avg. Disk sec/Read" -si %PERIOD%
c:\Windows\System32\Logman.exe create counter obj_HC_svr_disk_write_5sec -o "%OUTPUTDIR%\obj_HC_svr_disk_write_5sec" -f csv -v mmddhhmm  -max 300 -c "\PhysicalDisk(*)\Avg. Disk sec/Write" -si %PERIOD%
c:\Windows\System32\Logman.exe create counter obj_HC_svr_disk_bytes_5sec -o "%OUTPUTDIR%\obj_HC_svr_disk_bytes_5sec" -f csv -v mmddhhmm  -max 300 -c "\PhysicalDisk(*)\Disk Bytes/sec" -si %PERIOD%
c:\Windows\System32\Logman.exe create counter obj_HC_svr_disk_transfer_5sec -o "%OUTPUTDIR%\obj_HC_svr_disk_transfer_5sec" -f csv -v mmddhhmm  -max 300 -c "\PhysicalDisk(*)\Disk Transfers/sec" -si %PERIOD%
c:\Windows\System32\Logman.exe create counter obj_HC_svr_CPU_time_5sec -o "%OUTPUTDIR%\obj_HC_svr_CPU_time_5sec" -f csv -v mmddhhmm  -max 300 -c "\Processor Information(*)\% Processor Time" -si %PERIOD%
c:\Windows\System32\Logman.exe create counter obj_HC_svr_CPU_privileged_5sec -o "%OUTPUTDIR%\obj_HC_svr_CPU_privileged_5sec" -f csv -v mmddhhmm  -max 300 -c "\Processor Information(*)\% Privileged Time" -si %PERIOD%
c:\Windows\System32\Logman.exe create counter obj_HC_svr_CPU_idle_5sec -o "%OUTPUTDIR%\obj_HC_svr_CPU_idle_5sec" -f csv -v mmddhhmm  -max 300 -c "\Processor Information(*)\% Idle Time" -si %PERIOD%
c:\Windows\System32\Logman.exe create counter obj_HC_svr_Processor_5sec -o "%OUTPUTDIR%\obj_HC_svr_Processor_5sec" -f csv -v mmddhhmm  -max 300 -c "\System\Processor Queue Length" "\System\Context switches/sec" -si %PERIOD%


REM Now start them
c:\Windows\System32\Logman.exe start Obj_HC_svr_memory_5sec
c:\Windows\System32\Logman.exe start Obj_HC_svr_bytes_received_5sec
c:\Windows\System32\Logman.exe start Obj_HC_svr_bytes_sent_5sec
c:\Windows\System32\Logman.exe start obj_HC_svr_Disk_queue_5sec 
c:\Windows\System32\Logman.exe start obj_HC_svr_Disk_read_5sec
c:\Windows\System32\Logman.exe start obj_HC_svr_disk_write_5sec
c:\Windows\System32\Logman.exe start obj_HC_svr_disk_bytes_5sec
c:\Windows\System32\Logman.exe start obj_HC_svr_disk_transfer_5sec 
c:\Windows\System32\Logman.exe start obj_HC_svr_CPU_time_5sec
c:\Windows\System32\Logman.exe start obj_HC_svr_CPU_privileged_5sec
c:\Windows\System32\Logman.exe start obj_HC_svr_CPU_idle_5sec
c:\Windows\System32\Logman.exe start obj_HC_svr_Processor_5sec

1 ответ

Решение

Проблема заключалась в том, что% символов нужно было экранировать. Например, я заменил

"\Processor Information(*)\% Processor Time"

с

"\Processor Information(*)\%% Processor Time"
Другие вопросы по тегам