我在将这个基本的网络连接测试导出到Export-Excel(import-Excel)功能时遇到了问题。我需要从创建的阵列中导出网络连接测试的结果。
每个CSV服务器列表有2列服务器名称和端口
代码如下:
Import-Csv -Path .\serverlist.csv -Delimiter "," | ForEach-Object {$_.servers
$status = Test-NetConnection -ComputerName $_.servers -Port $_.port
if ($status.TcpTestSucceeded -eq $True) {
$result = "ONLINE"
$onlineCount ++ }
elseif ($status.TcpTestSucceeded -eq $false) {
$result = "OFFLINE"
$offlineCount ++ }
else {
$result = "ERROR"
}
$result = [PSCustomObject]@{
ComputerName = $status.ComputerName
Port = $status.RemotePort
Status = $result
Date = Get-Date -Format "dd/MM/yyyy"
Time = Get-Date -Format "HH:mm"
}
} $result | Export-Excel -Path ".\netStatus.xlsx" -AutoSize -AutoFilter -WorksheetName Net_Test
ii ".\netStatus.xlsx"
这是Excel的结果。请参阅只有一列包含地址。我需要:计算机名、端口、状态、日期、时间
我希望$result数组在excel中显示如下:
我也得到这个错误:
2条答案
按热度按时间ioekq8ef1#
像这样的东西应该工作。我转换为csv,因为我不确定Export-Excel是什么。你的代码的主要问题是,你只会得到最后一个结果,因为你放的最后一个$result,你得到的remainingScripts错误是因为你需要为ForEach-Object指定-开始-Process和-End脚本块。如果你想用烟斗|'导入Export-Excel,您需要删除Export-Excel前的$result。您需要使用Write-Output*将您的数据输出到Pipe。
qojgxg4l2#
我认为你的问题与最终$结果的列出有关。重新创建你的脚本,甚至没有输出到Excel(所以只是屏幕),如果我有它作为
我也犯了同样的错误。但如果我把它改成
那它就能正常运转除了它不做你想要的事情,因为它只会在你从ForEach循环外部调用它时输出最后一个结果。所以它实际上需要
所以ForEach-Object循环的每次迭代都会输出/导出该命令的结果。
下面的代码有我上面提到的建议修改,可以工作,并做您想要的。
唯一的区别是我输出到.csv而不是.xlsx,因为我没有Excel在这台机器上测试该部分。
但是使用serverlist.csv包含
我得到的输出为