如何在html网页中只显示powershell脚本中的服务器名称和ping结果



我正在尝试创建用于检查服务器是否在线的脚本,该脚本将使用"转换为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"显示了太多不必要的信息(附照片(。如何只显示其中的几个:服务器名称、ping结果?

Ass Lee评论道,您需要从输出中选择所需的属性。有相当多的性质,但它们都不是Serverresult

要查看属性列表,请将输出管道传输到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'}}

但是,这并不能解释任何失败的ping结果。这里有一段代码,它将收集成功和失败,然后将两者结合起来。请注意,属性名称需要匹配。

$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

您可以使用splatting使代码更易于阅读和维护。

$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

最新更新