私は改善したい基本的なスクリプトを持っているので、現在行っていること (カウンターを一元的に取得すること) ではなく、オフになり、perfmon カウンターをジョブとして収集します。
問題は、Powershell のジョブで Get-Counter を実行すると、返されたデータを適切に検査/使用できないことです。データをシリアル化するためだと思います。
これは私のスクリプトで、かなり基本的なものです:
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 は、"Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSample" という文字列を返します。これは、カウンター オブジェクトのデータ型です。
これをジョブの外で実行すると、問題なく返されます。
$Counter = Get-Counter "\LogicalDisk(C:)\% Free Space" -MaxSamples 1 -SampleInterval 1
$Counter.CounterSamples
ジョブ結果内のデータを適切に使用する方法を知っている人はいますか?
これについて私が探している答えがまだありませんでした。何かアイデアはありますか?