私は改善したい基本スクリプトを持っていますので、現在実行している(カウンタを集中的に取得している)代わりにジョブとしてperfmonカウンタを収集します。ジョブを取得するカウンタは使用できないデータを返します
問題は、PowershellのジョブでGet-Counterを実行すると、戻ってくるデータを正しく検査/使用できないということです。私はそれがデータをシリアル化するからだと思います。 "Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleを" と言う文字列を返します
Start-Job -ScriptBlock {$Counter = Get-Counter "\LogicalDisk(C:)\% Free Space" -MaxSamples 1 -SampleInterval 1 ; return $Counter}
do
{
[array]$JobCount = Get-Job -State "Completed"
$JobResults = Get-Job | Receive-Job
if ($JobCount.Count -gt 0)
{
Write-Host "Job Completed"
}
else
{
Write-Host "Sleeping 1 Second..."
Start-Sleep 1
}
}
while ($JobCount.Count -lt 0)
$JobResults.CounterSamples
$ JobResults.CounterSamples:
これは、かなり基本的な私のスクリプトです。これがカウンタオブジェクトのデータ型です。
私は仕事のこの外側を実行した場合、それがうまく返します
$Counter = Get-Counter "\LogicalDisk(C:)\% Free Space" -MaxSamples 1 -SampleInterval 1
$Counter.CounterSamples
私はきちんと仕事の結果内のデータを使用することができますどのように誰もが知っていますか?
私はこれについて何か考えている答えはまだありませんでしたか?
応答をありがとう、それは値を返しますが、私はいくつかの他のプロパティでも動作する必要があります。つまり、$ Counter.CounterSamples [0] | Select * - これはpath、instancename、timestampなどの他のものを返します。また、私のクエリはこの単純な例よりも多くのカウンターを使用しますので、WMIは非常に迅速に複雑になると思います! – HungryHippos