2016-08-09 2 views
0

Ich versuche, einige Leistungsmonitore einzurichten. Ich möchte auch etwas mit den Daten (CSV) tun, einschließlich der Analyse der Daten mit einigen PS-Scripting nach Sammlung Segmentierung. Hier ist meine PS-Befehl den logman Eintrag zu erstellen:Wie benutze ich die Option "run this command" (-rc) mit logman

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 

Beachten Sie, dass die Details, wie die Segmentlänge und Abtastintervalls sind nur, dass niedrige für Testzwecke. Die Produktion wird viel anders sein, wenn auch noch unentschieden, aber ich schweife ab. Nun, dies funktioniert gut:

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 

Aber aus irgendeinem Grunde, so schnell wie ich hinzufügen -rc C:\PerfLogs\Admin\NetLogConfig\hello.cmd, stoppt der Zähler bei Segmentierung der Sammelperiode statt Segmentieren und Weiterbildung. Beachten Sie, dass der Befehl zum Erstellen des Leistungsindikators erfolgreich ist und der Leistungsindikator erfolgreich gestartet wird. Der Sammlungssatz wird jedoch angehalten, wenn die Datei zur Segmentierung geschlossen wird. Es führt den Befehl überhaupt nicht aus. Ich habe auch einen Dateityp .bat anstelle von .cmd versucht, und ich habe auch versucht, einen Befehl direkt in den Parameter -rc einzugeben (zB -rc echo "Hello World!"). .bat macht keinen Unterschied, und das direkte Eingeben eines Befehls bringt mir eine nette Fehlermeldung darüber, dass es kein akzeptabler Parameter ist. Innerhalb der Datei ist ein Platzhalter-Befehl, der gerade jetzt geht:

echo "Hello World!" 
pause 

Also wie bekomme ich einen Befehl auf Segmentierung/Datei schließen laufen? Ich werde Workarounds in Betracht ziehen, aber dies scheint bei weitem die sauberste Lösung zu sein.

+0

Es tut mir leid, misspoke ich ein wenig. Falls es nicht klar war, ist es mein ultimatives Ziel, ein PS-Skript (C: \ PerfLogs \ Admin \ NetLogConfig \ NetLogCsv.ps1) aufzurufen, das bei der Segmentierung ausgeführt wird. – ncooper09

+0

Es tut mir leid, ich habe ein bisschen falsch gesprochen.Die Eingabe von 'echo" Hello World "' am Parameter -rc gibt keinen Fehler, aber es verhält sich immer noch wie die anderen. Falls es nicht klar war, ist mein ultimatives Ziel, ein PS-Skript (C: \ PerfLogs \ Admin \ NetLogConfig \ NetLogCsv.ps1) aufzurufen, das bei der Segmentierung ausgeführt wird. Wenn ich den Befehl "powershell.eve-Befehl C: \ PerfLogs \ Admin \ NetLogConfig \ Hallo.NetLogCsv.ps1" in den Parameter eingeben, gibt es mir einen Fehler. Sorry, es dauerte mich zu lange, um dies in der bearbeiten, also musste ich zweimal kommentieren – ncooper09

Antwort

0

Read neueste logman create counter Referenz:

-[-]rc <task>   Run the command specified each time the log is closed. 

anzumerken, dass -rc Schalter Parameter ist -rc <task> (in einem older Technet document ist -rc FileName). Also was steht für <task>? Lesen Sie Data Collector Set Properties und/oder perfmon.exe laufen, siehe Bild unten:

Task - You can run a Windows Management Instrumentation (WMI) task upon completion 
     of the Data Collector Set collection by entering the command in the 
     Run this task when the data collector set stops box. 
     Refer to WMI task documentation for options. 

Und schließlich von WMI task documentation habe ich erkannt, dass <task> in -rc <task> ein Name einer geplante Aufgabe sein sollte. Nächste Änderung Ihrer Versuch könnte einen Beweis (eine neue Instanz von cmd Fenster blinkt jede Minute und Ausgabedateien gefüllt sind wie erwartet) geben:

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" 

Ausgang:

==> 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 

==> 

Bitte beachten Sie als Ihre Frage hat nichts mit powershell (IMHO falsches Tag) zu tun; In meinem Beispiel ist die geplante Aufgabe cmd auszuführen, aber es sollte auch für powershell funktionieren.

perfmon/netlog

+0

Fantastische Antwort Ich habe total vermisst, dass es auf der Suche nach einer Aufgabe war, nicht nach einem Befehl. – ncooper09

Verwandte Themen