powershell - 如何仅从 html 网页中的 powershell 脚本显示服务器名称和 ping 结果
问题描述
我正在尝试创建用于检查服务器是否在线的脚本,该脚本将使用“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 ”文件中的输出结果显示了太多不必要的信息(附照片)。我怎样才能只显示其中的几个:服务器名称,ping 结果?
解决方案
Ass Lee 评论说,您需要从输出中选择所需的属性。有很多属性,但没有一个是Server
or 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'}}
但是,这并不能说明任何失败的 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
推荐阅读
- php - 在对象中搜索元键并获取值
- amazon-web-services - EKS Kubernetes 出站流量
- html - 如何在输入字段顶部放置加号
- javascript - 创建集合 javascript
- python - 当输入包含 nans 时如何解决 TAlib 给出不正确的结果
- powerbi - PowerBIIntegration.Refresh() 有时不起作用
- python - 以更快的方式展平和扩展 json
- c# - Azure Logic App 使用 MSI 向 WebApp 进行身份验证
- python - 创建自定义 Django Rest Framework 权限
- c - 从 C 中的位图中复制区域的更快方法