Powershell 数组 -> HTML 作为字符串而不是 .Length
Powershell Array -> HTML as string not as .Length
目前我有一个脚本可以做很多事情,一件事是它检查一个 .txt 文件以获取所有当前服务器,然后在执行脚本的其余部分之前执行 ping 以检查连接性.我目前有这个设置来将它无法 ping 通的服务器添加到一个阵列中,这样它就不会减慢尝试在失败的服务器上进行的其余进程的速度。在脚本的末尾,我将其全部转换为 HTML 文档以便于查看。我想将连接失败的服务器添加到 HTML 文档的末尾,以表明这些服务器失败。
就像现在的脚本一样,它只打印我放入这些服务器的数组的 .Length 属性。这是我设置数组的代码,向其中添加服务器,然后convertto-html 部分。
$servers = Get-Content "path\to\text.txt"
$failedConn = New-Object 'System.Collections.Generic.List[System.Object]'
foreach ($server in $servers)
{
$pingResult = Get-Ciminstance -ClassName win32_pingstatus -Filter "address='$server' and timeout=1000"
if ($pingResult.StatusCode -eq 0)
{
Write-Host "$server ping successful
}
else
{
Write-Host "$server ping Fail" -ForegroundColor Red
$failedConn.Add($server)
<# Also tried $failedConn += ($server) with the same error #>
}
}
<# Code for a forloop to do tasks where it adds an HTML variable called CombinedBody styling the tables whatnot #>
$CombinedBody += $failedConn | ConvertTo-Html | Out-File -Append C:\Path\To\html.html
结果只是将失败的连接放在 HTML 文档的最底部,但它会将其打印为每个服务器名称的长度。我如何让它打印实际的服务器名称?非常感谢任何帮助!!
Length
是 String
对象中唯一被 ConvertTo-Html
看到的 属性,因此这就是输出的内容。作为一种解决方法,您可以将服务器名称包装在另一个对象中,该对象只有一个 属性 包含名称,然后它应该输出实际名称。像这样:
$failedConn | foreach{[pscustomobject]@{"Failed Servers" = $_}} | ConvertTo-Html | Out-File -Append C:\Path\To\html.html
请注意,我已经删除了 $CombinedBody +=
,因为 Out-File
没有 return 任何输出,因此不会执行任何操作。
目前我有一个脚本可以做很多事情,一件事是它检查一个 .txt 文件以获取所有当前服务器,然后在执行脚本的其余部分之前执行 ping 以检查连接性.我目前有这个设置来将它无法 ping 通的服务器添加到一个阵列中,这样它就不会减慢尝试在失败的服务器上进行的其余进程的速度。在脚本的末尾,我将其全部转换为 HTML 文档以便于查看。我想将连接失败的服务器添加到 HTML 文档的末尾,以表明这些服务器失败。
就像现在的脚本一样,它只打印我放入这些服务器的数组的 .Length 属性。这是我设置数组的代码,向其中添加服务器,然后convertto-html 部分。
$servers = Get-Content "path\to\text.txt"
$failedConn = New-Object 'System.Collections.Generic.List[System.Object]'
foreach ($server in $servers)
{
$pingResult = Get-Ciminstance -ClassName win32_pingstatus -Filter "address='$server' and timeout=1000"
if ($pingResult.StatusCode -eq 0)
{
Write-Host "$server ping successful
}
else
{
Write-Host "$server ping Fail" -ForegroundColor Red
$failedConn.Add($server)
<# Also tried $failedConn += ($server) with the same error #>
}
}
<# Code for a forloop to do tasks where it adds an HTML variable called CombinedBody styling the tables whatnot #>
$CombinedBody += $failedConn | ConvertTo-Html | Out-File -Append C:\Path\To\html.html
结果只是将失败的连接放在 HTML 文档的最底部,但它会将其打印为每个服务器名称的长度。我如何让它打印实际的服务器名称?非常感谢任何帮助!!
Length
是 String
对象中唯一被 ConvertTo-Html
看到的 属性,因此这就是输出的内容。作为一种解决方法,您可以将服务器名称包装在另一个对象中,该对象只有一个 属性 包含名称,然后它应该输出实际名称。像这样:
$failedConn | foreach{[pscustomobject]@{"Failed Servers" = $_}} | ConvertTo-Html | Out-File -Append C:\Path\To\html.html
请注意,我已经删除了 $CombinedBody +=
,因为 Out-File
没有 return 任何输出,因此不会执行任何操作。