Arrays powershell中的数组转换为html

Arrays powershell中的数组转换为html,arrays,powershell,Arrays,Powershell,大家好,, 我有一个powershell脚本,可以从服务器列表中获取macfee防病毒版本。以下是脚本: $a = @() $serverlist = "serverlist.txt" foreach ($server in Get-Content $serverlist) { $ProductVer = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$Computer).OpenSubKey('SOFTWAR

大家好,, 我有一个powershell脚本,可以从服务器列表中获取macfee防病毒版本。以下是脚本:

$a = @()
$serverlist = "serverlist.txt"
foreach ($server in Get-Content $serverlist) 
{ 
$ProductVer = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$Computer).OpenSubKey('SOFTWARE\McAfee\DesktopProtection').GetValue('szProductVer')
$EngineVer = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$Computer).OpenSubKey('SOFTWARE\McAfee\AVEngine').GetValue('EngineVersionMajor')
$DatVer = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$Computer).OpenSubKey('SOFTWARE\McAfee\AVEngine').GetValue('AVDatVersion')
$DatDate = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$Computer).OpenSubKey('SOFTWARE\McAfee\AVEngine').GetValue('AVDatDate')

$a += " `n $server - Product version: $ProductVer Engine version: $EngineVer Dat version: $DatVer DatDate $DatDate "
# Write-Host "$server - Product version: $ProductVer Engine version: $EngineVer Dat version: $DatVer DatDate $DatDate"

}

 Write-host $a

 # foreach($_ in $a){ConvertTo-HTML -Body $_,$a.$_ | Out-File D:\Powershell_scripts\list.html}
写入主机输出在屏幕上为我提供以下输出:

aucfd208 - Product version: 8.8.0.975 Engine version: 5600 Dat version: 7389 DatDate 2014/03/26
aucfd207 - Product version: 8.8.0.975 Engine version: 5600 Dat version: 7389 DatDate 2014/03/26
au420g18 - Product version: 8.8.0.975 Engine version: 5600 Dat version: 7389 DatDate 2014/03/26
cnche001 - Product version: 8.8.0.975 Engine version: 5600 Dat version: 7389 DatDate 2014/03/26
现在我对如何获取html格式感到困惑

如果我使用
foreach($in$a){ConvertTo HTML-Body$,$a.$Out File D:\Powershell\u scripts\list.HTML
,我只会得到最后一行输出:

cnche001 - Product version: 8.8.0.975 Engine version: 5600 Dat version: 7389 DatDate 2014/03/26
任何帮助都将不胜感激


Cheers

取决于您希望输出的方式。如果您只想在正文中使用
$a
数组,您可以执行以下操作:


转换为HTML-Body$a | Out文件D:\Powershell\u scripts\list.HTML

我会尝试稍微不同的方法-首先将输入转换为类似csv的形式。这应该相当简单:

$a = @()
$serverlist = "serverlist.txt"
$outputCSV = "report.csv"
"Server;ProductVer;EngineVer;DatVer;DatDate" | Out-File -Append $outputCSV
foreach ($server in Get-Content $serverlist) 
{ 
$ProductVer = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$Computer).OpenSubKey('SOFTWARE\McAfee\DesktopProtection').GetValue('szProductVer')
$EngineVer = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$Computer).OpenSubKey('SOFTWARE\McAfee\AVEngine').GetValue('EngineVersionMajor')
$DatVer = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$Computer).OpenSubKey('SOFTWARE\McAfee\AVEngine').GetValue('AVDatVersion')
$DatDate = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',$Computer).OpenSubKey('SOFTWARE\McAfee\AVEngine').GetValue('AVDatDate')

$Server + ";" + $ProductVer + ";" + $EngineVer + ";" + $DatVer + ";" + $DatDate | out-file -Append $outputCSV
} 

$CSVform = Import-Csv -Delimiter ";" $outputCSV
$CSVform | ConvertTo-Html | Out-File "HTMLReport.html"
这应该会生成一个您正在寻找的简单HTML输出。不会有任何吸引眼球的东西,但这取决于您的发明,您希望脚本如何工作:-)

至于为什么脚本只给出最后一行的问题,我认为这是因为它丢失了-追加开关-每一行都被前一行覆盖。类似于命令行中的'>'和'>>'重定向器

希望这能澄清一点

致意
AlexP

好的,我将尝试一下。非常感谢:)至于HTML报告,我将仔细研究如何利用WMIC的XLSE。它提供了漂亮、好看的输出。尝试一下WMIC进程列表简介/格式:htable>SomeHTML.HTML。WMIC在wbem dir中使用HTML XLS文件,我想我们可以通过编程使用这些文件来构建漂亮的报告