1

私は、任意の Windows サーバーから実行できるスクリプトをセットアップして、ローリング ログ ファイルのバックグラウンドでいくつかの perfmon スクリプトを収集する作業を行っています。PerfMon GUI を使用することもできましたが、同時にいくつかの Powershell を学習する良い機会になると考え、プロジェクトで特に必要なものに基づいて、すべてを独自の単純化された GUI にラップすることができました。

基本的に、スクリプトは、ExecutionPolicy が remotesigned に設定されている (実行できるようになっている) ことを確認し、次のコマンドで使用する変数をいくつか定義し、取得するカウンターの概要を示します。

その後、コマンドを変数として格納し、ジョブとして起動します。問題は、そのジョブの結果が、要求している .csv ファイルの形式で表示されないことです。コードは次のとおりです。

Set-ExecutionPolicy remotesigned -Force
$Computer = $env:COMPUTERNAME
$1GBInBytes = 1GB
$p = "\\$Computer\Process(System)\% Processor Time",
     "\\$Computer\PhysicalDisk(_Total)\Current Disk Queue Length",
     "\\$Computer\PhysicalDisk(0 c:)\% Disk Time",
     "\\$Computer\PhysicalDisk(0 c:)\Avg. Disk Queue Length",
     "\\$Computer\PhysicalDisk(0 c:)\% Disk Read Time",
     "\\$Computer\PhysicalDisk(0 c:)\Avg. Disk Read Queue Length",
     "\\$Computer\PhysicalDisk(0 c:)\% Disk Write Time",
     "\\$Computer\PhysicalDisk(0 c:)\Avg. Disk Write Queue Length",
     "\\$Computer\PhysicalDisk(0 c:)\Avg. Disk sec/Transfer",
     "\\$Computer\PhysicalDisk(0 c:)\Avg. Disk sec/Read",    
     "\\$Computer\PhysicalDisk(0 c:)\Avg. Disk sec/Write",
     "\\$Computer\PhysicalDisk(0 c:)\Disk Transfers/sec",
     "\\$Computer\PhysicalDisk(0 c:)\Disk Reads/sec",
     "\\$Computer\PhysicalDisk(0 c:)\Disk Writes/sec",
     "\\$Computer\PhysicalDisk(0 c:)\Disk Bytes/sec",
     "\\$Computer\PhysicalDisk(0 c:)\Disk Read Bytes/sec",
     "\\$Computer\PhysicalDisk(0 c:)\Disk Write Bytes/sec",
     "\\$Computer\PhysicalDisk(0 c:)\Avg. Disk Bytes/Transfer",
     "\\$Computer\PhysicalDisk(0 c:)\Avg. Disk Bytes/Read",
     "\\$Computer\PhysicalDisk(0 c:)\Avg. Disk Bytes/Write",
     "\\$Computer\PhysicalDisk(0 c:)\% Idle Time",
     "\\$Computer\PhysicalDisk(0 c:)\Split IO/Sec";

$counter = {get-counter -counter $p -Continuous | Export-Counter  C:\PerfLogs\Storage_BBCRM.csv -Force -FileFormat CSV -Circular -MaxSize $1GBInBytes}
Start-job $counter

何か案は?現時点では、バックグラウンド ジョブとしてジョブを開始し、別の powershell コマンドで停止します。ただし、そのすべてを.csvにまとめたいだけです。

4

1 に答える 1

1

psv3 を使用している場合は、次のように変更します。

$counter = {get-counter -counter $using:p -Continuous | Export-Counter  C:\PerfLogs\Storage_BBCRM.csv -Force -FileFormat CSV -Circular -MaxSize $using:1GBInBytes}

そうしないと、$p と $1GBInBytes にアクセスできません

v2 を使用している場合:

$counter = {param($p, $1GBInBytes ) get-counter -counter $p -Continuous | Export-Counter  C:\PerfLogs\Storage_BBCRM.csv -Force -FileFormat CSV -Circular -MaxSize $1GBInBytes}
Start-job $counter -ArgumentList $p, $1GBInBytes
于 2013-04-27T09:38:30.433 に答える