Powershell 스크립트가 종료되지 않습니다.
Bladelogic을 통해 Powershell 스크립트의 출력을 HTML 형식으로 실행하려고 합니다.
스크립트가 실행되지만 종료되지 않습니다.
[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
.