gpt4 book ai didi

powershell - 带有Jobs的Get-Counter返回不可用的数据

转载 作者:行者123 更新时间:2023-12-03 00:04:30 25 4
gpt4 key购买 nike

我有一个要改进的基本脚本,因此它可以关闭并作为Jobs而不是我当前正在执行的操作来收集perfmon计数器(这是集中检索计数器)。

问题是,当我在Powershell的Job中运行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

有人知道如何正确使用Job结果中的数据吗?

仍然没有我正在寻找的答案,有什么想法的人吗?

最佳答案

我自己找到了解决方法,基本上是在工作本身中处理反样本,而不是尝试将结果传回进行处理:

$ScriptBlock = {

param
(
$Server,
$ExportCSV
)

$Counter = Get-Counter -ComputerName $Server "LogicalDisk(C:)\% Free Space" -MaxSamples 10 -SampleInterval 2
$CounterSamples = $Counter | % {$_.CounterSamples}

$MasterArray = @()
foreach ($CounterSample in $CounterSamples)
{
$TempArray = @()
$TempArray = "" | Select Server, ObjectName, CounterName, InstanceName, Value, DateTime

$Split = $CounterSample.Path.Remove(0,2)
$Split = $Split.Split("\")

$TempArray.Server = $Split[0]
$TempArray.ObjectName = $Split[1].Split("(")[0]
$TempArray.CounterName = $Split[2]
$TempArray.InstanceName = $CounterSample.InstanceName
$TempArray.Value = $CounterSample.CookedValue
$TempArray.DateTime = $CounterSample.TimeStamp.ToString("yyyy-MM-dd HH:mm:ss")

$MasterArray += $TempArray
}

$MasterArray | Export-Csv $ExportCSV -NoType
}

$Servers = "CHRIS-PC"

foreach ($Server in $Servers)
{
$ExportCSVFile = "C:\Temp\$Server" + "_Samples.csv"
Start-Job -ScriptBlock $ScriptBlock -ArgumentList @($Server, $ExportCSVFile)
}

关于powershell - 带有Jobs的Get-Counter返回不可用的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10218651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com