我在试着设置一些性能监视器。我还想对数据(csv)进行一些处理,包括在收集分段时使用一些PS脚本来分析数据。下面是创建logman条目的PS命令:
logman create counter -n NetLog -f csv -si 00:00:30 `
-cnf 00:01:00 -c "\Network Interface(*)\Bytes Total/sec" -r -v mmddhhmm `
-b 00:00:00 -e 23:59:59 -rc C:\PerfLogs\Admin\NetLogConfig\hello.cmd注意,对于测试而言,像段长度和样本间隔这样的细节非常低。生产会有很大的不同,虽然还没有决定,但我离题了。现在,这很好用:
logman create counter -n NetLog -f csv -si 00:00:30 `
-cnf 00:01:00 -c "\Network Interface(*)\Bytes Total/sec" -r -v mmddhhmm `
-b 00:00:00 -e 23:59:59 但出于某种原因,一旦我添加了-rc C:\PerfLogs\Admin\NetLogConfig\hello.cmd,计数器就会在收集周期分段时停止,而不是分段和继续。请注意,创建计数器的命令成功,计数器将成功启动,但收集器集将在文件关闭以进行分段时停止。它也根本不运行命令。我还尝试了一种文件类型的.bat,而不是.cmd,我还尝试将命令直接输入-rc参数(例如-rc echo "Hello World!")。.bat没有什么区别,直接使用命令会给我一个很好的错误消息,说明它不是一个可接受的参数。文件中有一个占位符命令,它现在是这样写的:
echo "Hello World!"
pause那么,如何在分段/文件关闭时运行命令呢?我会考虑工作,但这似乎是目前为止最干净的解决方案。
发布于 2016-08-10 11:42:29
阅读最新的logman创建计数器参考资料:
-rc在每次日志关闭时运行指定的命令。
注意,-rc开关参数是-rc <task> (在较早的Technet文档是-rc FileName中)。那么<task>代表什么呢?阅读数据收集器集属性和/或运行perfmon.exe,见下图:
任务--您可以在数据收集器集集合完成后,通过在“数据收集器集集停止”框中输入“运行此任务”命令来运行Windows管理仪器(WMI)任务。有关选项,请参阅WMI任务文档。
最后,我从<task>中认识到,-rc <task>中的应该是调度任务的名称。下一次尝试的修改可能会提供一个证据( cmd窗口的一个新实例每分钟刷新一次,输出文件按预期的方式填充):
erase d:\bat\SO\38859079.txt
erase C:\PerfLogs\Admin\NetLog*.csv
logman delete NetLog
logman create counter -n NetLog -f csv -si 00:00:15 -cnf 00:01:00 ^
-rf 00:05:00 -c "\Network Interface(*)\Bytes Total/sec" -r -v mmddhhmm ^
-b 00:00:00 -e 23:59:59 -rc 38859079
logman start NetLog
timeout /T 360 /Nobreak
logman stop NetLog
dir /B /S C:\PerfLogs\Admin\NetLog*.csv
type d:\bat\SO\38859079.txt
Schtasks /Query /FO LIST /V /TN 38859079 | findstr /I /C:"Task To" /C:"Type"输出
==> D:\bat\SO\38859079.bat
==> erase d:\bat\SO\38859079.txt
==> erase C:\PerfLogs\Admin\NetLog*.csv
==> logman delete NetLog
The command completed successfully.
==> logman create counter -n NetLog -f csv -si 00:00:15 -cnf 00:01:00 -rf 00:05:00 -c "\
Network Interface(*)\Bytes Total/sec" -r -v mmddhhmm -b 00:00:00 -e 23:59:59 -rc 388590
79
The command completed successfully.
==> logman start NetLog
The command completed successfully.
==> timeout /T 360 /Nobreak
Waiting for 0 seconds, press CTRL+C to quit ...
==> logman stop NetLog
Error:
Data Collector Set is not running.
==> dir /B /S C:\PerfLogs\Admin\NetLog*.csv
C:\PerfLogs\Admin\NetLog_08101250.csv
C:\PerfLogs\Admin\NetLog_08101251.csv
C:\PerfLogs\Admin\NetLog_08101252.csv
C:\PerfLogs\Admin\NetLog_08101253.csv
C:\PerfLogs\Admin\NetLog_08101254.csv
==> type d:\bat\SO\38859079.txt
10.08.2016 12:51:47,99
10.08.2016 12:52:49,04
10.08.2016 12:53:50,06
10.08.2016 12:54:51,07
10.08.2016 12:55:48,00
==> Schtasks /Query /FO LIST /V /TN 38859079 | findstr /I /C:"Task To" /C:"Type"
Task To Run: cmd /c >>d:\bat\SO\38859079.txt echo %date% %time%
Schedule Type: On demand only
==>请注意,您的问题与powershell (IMHO错误标记)无关;在我的示例中,计划任务运行cmd,但是它也适用于powershell。

https://stackoverflow.com/questions/38859079
复制相似问题