Скрипт Powershell не завершается

Скрипт Powershell не завершается

Скрипт Powershell не завершается

Я пытаюсь запустить вывод скрипта Powershell в формате HTML через Bladelogic

Скрипт запускается, но не завершается

[cmdletbinding()]
param
(
    [Parameter(Position=0,ValuefromPipeline=$true)]
    [string[]]$ComputerName = $env:ComputerName 

)
$cpuload = ((Get-Counter -Counter "\\$ComputerName\Process(*)\% Processor Time" -ea 0).CounterSamples) | Select-Object -Property instancename, cookedvalue | Sort-Object -Property cookedvalue -Descending | Select-Object -First 20 |Select-Object InstanceName,@{L='CPU';E={($_.Cookedvalue/100).toString('P')}}
$a = "<style>"
$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
$a = $a + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}"
$a = $a + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;}"
$a = $a + "</style>"
$cpuload | ConvertTo-Html -head $a -body "<H2>CPU LOAD</H2>" | Out-File -FilePath C:\tmp\dis.txt
#Invoke-Expression C:\tmp\dis1.txt
#cat C:\tmp\dis1.txt
Get-Content 'C:\tmp\dis.txt' | Foreach-Object {$_ -replace '^<html.*$', ("<html>")} | Set-Content 'C:\tmp\dis1.txt'
cat C:\tmp\dis1.txt

решение1

Ваш скрипт работает на моем компьютере (PowerShell 5.1), однако я заметил в нем следующее:

  • [cmdletbinding()]является атрибутом функции, он не предназначен для скриптов.
  • Я также вижу, что ваш $ComputerNameпараметр представляет собой массив строк с разрешенным конвейерным вводом. Если вы планируете запустить это для нескольких имен компьютеров, вам следует рассмотреть возможность использованияbegin process end.

Связанный контент