powershell - 解析powershell输出
问题描述
我遇到了这样的问题,我不知道如何最好地解决它。我们有这个脚本,确定 CPU 上的负载。
$pc = 'cmd'
try {$Connection = Test-Connection -ComputerName $pc -Count 2 -EA Stop}
catch {Write-Host "NO network connection to $PC" -fo Red; break}
try
{
$option = New-CimSessionOption -Protocol Dcom
$session = New-CimSession -ComputerName $pc -SessionOption $option -EA Stop
}
catch
{
try
{
$option = New-CimSessionOption -Protocol Wsman
$session = New-CimSession -ComputerName $pc -SessionOption $option -EA Stop
}
Catch {Write-Host "NOT connect to CimSession on $PC" -fo Red; break}
}
$ComputerSystem = Get-CimInstance -ClassName Win32_ComputerSystem -CimSession $session
$CpuCores = $ComputerSystem.NumberOfLogicalProcessors
Write-Host 'Please wait for CPU Usage data to be collect...' -fo Yellow
if (Get-Counter -ListSet * -ComputerName $pc | ? Paths -Match "\\Процесс\(\*\)"){$CounterPath = "\Процесс(*)\% загруженности процессора"}
else {$CounterPath = "\Process(*)\% Processor Time"}
$CPU_Usage_Counter = (Get-Counter -Counter $CounterPath -SampleInterval 1 -MaxSamples 5 -ComputerName $pc -EA SilentlyContinue).CounterSamples | ? CookedValue -ne 0 | group InstanceName
$CPU_Usage_Data = $CPU_Usage_Counter | select Name,@{N='CPU_Usage_%';E={[math]::Round(($_.Group | %{$_.CookedValue} | measure -Average).Average/$CpuCores,2)}}
$CPU_Usage_Data | ? Name -ne '_total' | sort 'CPU_Usage_%' -Des | ft -a
Write-Host "NumberOfLogicalProcessors: $CpuCores"
$check = Write-Host "CpuUsageProcess" ( [math]::Round((100 - (($CPU_Usage_Data | ? Name -eq 'idle').'CPU_Usage_%')),2) ) -fo Yellow
#####---------------------------------------------------------------------------------------------------------------------------------------------------
$status = (($check).CpuUsageProcess -gt 5)
if($status)
{
#Break
Write-Host -ForegroundColor Green 'if!'
}
else
{
Write-Host -ForegroundColor Red 'else!'
}
执行后,需要提取“CpuUsageProcess”值的结果,在if/else条件中使用
解决方案
正如Theo 指出的那样,Write-Host
从不发出任何输出 - 它只会导致 PowerShell 将输入直接写入屏幕缓冲区。
在调用之前分别计算值Write-Host
:
$check = [math]::Round((100 - (($CPU_Usage_Data | ? Name -eq 'idle').'CPU_Usage_%')),2)
Write-Host "CpuUsageProcess $check" -fo Yellow
if($check -gt 5){
# ...
}
推荐阅读
- vue.js - Vue CLI 在没有服务器的情况下构建和运行 index.html 文件
- angular - Ngxs + WebSocket | 如何拦截连接并添加自定义 HTTP 标头?
- reactjs - 我们如何在 react redux 中进行授权(角色和权限)?
- node.js - 使用对讲 API 上传图像
- javascript - Angular 5:错误类型错误:无法读取未定义的属性“nativeElement”
- jhipster - 如何选择 jhipster uaa 和 jhipster keycloak?
- android - 自动完成片段无法正常工作
- python - 从python中为postgresql中联合中的每个查询选择特定列
- android - 从 Playstore 跟踪安装的应用程序
- nginx - 无法使用 nginx 在一台服务器上同时运行两个单页应用程序