HTML 웹 페이지에서 powershell 스크립트에서만 서버 이름 및 ping 결과를 표시하는 방법
Nov 13 2020
"ConvertTo-Html"속성을 사용하여 HTML 웹 페이지로 표시되는 서버가 온라인 상태인지 확인하는 스크립트를 만들려고합니다. 또한 작은 CSS도 적용했습니다.
내 코드는 다음과 같습니다.
$Header = @" <style> table { font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; border-collapse: collapse; width: 100%; } th { padding-top: 12px; padding-bottom: 12px; text-align: left; background-color: green; color: white; } </style> "@ $OS = Test-Connection -ComputerName Server1, Server2, Server3 | ConvertTo-Html
ConvertTo-Html -Body "$OS" -Title "Fragment" -Head $Header | Out-File StatusReport.html
" StatusReport.html " 파일의 출력 결과에 불필요한 정보가 너무 많이 표시됩니다 (사진 첨부). 서버 이름, 핑 결과 중 몇 개만 표시하려면 어떻게해야합니까?
답변
2 DougMaurer Nov 14 2020 at 00:59
Ass Lee는 출력에서 원하는 속성을 선택해야한다고 언급했습니다. 꽤 많은 속성이 있지만 그들 중 어느 것도 Server
또는 result
.
속성 목록을 보려면 출력을 Get-Member
Test-Connection google.com -count 1 | Get-Member
Format-List *
속성 및 값을 보는 데 사용할 수도 있습니다.
Test-Connection google.com -count 1 | Format-List *
속성을 알고 나면 이름으로 선택할 수 있습니다.
Test-Connection google.com -count 1 | Select-Object Address,IPv4Address,StatusCode
속성의 이름을 바꾸려면 계산 된 속성을 사용할 수 있습니다.
Test-Connection google.com -count 1 |
Select-Object @{n='Server';e={$_.Address}},IPv4Address,@{n='Result';e={'Successful'}}
그러나 이것은 실패한 핑 결과를 고려하지 않습니다. 다음은 성공과 실패를 모은 다음 두 가지를 결합하는 코드입니다. 속성 이름이 일치해야합니다.
$targets = 'server1', 'server2', 'server3', 'dontexist'
$success = Test-Connection -ComputerName $targets -Count 1 -ErrorAction SilentlyContinue -ErrorVariable errors |
Select-Object @{n='Server';e={$_.address}},IPv4Address,@{n='Result';e={'Successful'}} $failed = $errors.exception.message | Where-Object {$_ -match "computer '(.+?)'"} |
Select-Object @{n='Server';e={$matches.1}}, @{n='IPv4Address';e={"N/A"}}, @{n='Result';e={'Failed'}} $success + $failed
스플래 팅 을 사용하여 코드를 더 쉽게 읽고 유지 관리 할 수 있습니다 .
$params = @{
ComputerName = 'server1', 'server2', 'server3', 'dontexist'
Count = 1
ErrorAction = 'SilentlyContinue'
ErrorVariable = 'errors'
}
$success = Test-Connection @params | Select-Object @{n='Server';e={$_.address}},
IPv4Address,
@{n='Result';e={'Successful'}}
$failed = $errors.exception.message |
Where-Object {$_ -match "computer '(.+?)'"} | Select-Object @{n='Server';e={$matches.1}},
@{n='IPv4Address';e={"N/A"}},
@{n='Result';e={'Failed'}}
$success + $failed
이것을 약간 수정 된 코드 버전과 결합하면 최종 스크립트가됩니다.
$Header = @" <style> table { font-family: "Trebuchet MS", Arial, Helvetica, sans-serif; border-collapse: collapse; width: 100%; } th { padding-top: 12px; padding-bottom: 12px; text-align: left; background-color: green; color: white; } </style> "@ $params = @{
ComputerName = 'server1', 'server2', 'server3', 'dontexist'
Count = 1
ErrorAction = 'SilentlyContinue'
ErrorVariable = 'errors'
}
$success = Test-Connection @params | Select-Object @{n='Server';e={$_.address}},
IPv4Address,
@{n='Result';e={'Successful'}}
$failed = $errors.exception.message |
Where-Object {$_ -match "computer '(.+?)'"} | Select-Object @{n='Server';e={$matches.1}},
@{n='IPv4Address';e={"N/A"}},
@{n='Result';e={'Failed'}}
$success + $failed |
ConvertTo-Html -Title "Fragment" -Head $Header |
Set-Content -Path StatusReport.html -Encoding UTF8