我编写了一个powershell脚本来获取OVM和KVM驱动程序类型和版本。我需要从一个脚本获取它们,以便它可以同时运行OVM和KVM机器。我从脚本获取输出,但是我需要帮助修剪,以便输出正确。
$Driver = Get-CimInstance -ClassName Win32_PnPSignedDriver |
Where-Object {$_.DeviceName -like '*VirtIO*' -or $_.DeviceName -like '*Oracle VM Virtual PCI Bus*'} |
Select-Object -Property DeviceName,DriverVersion
if ($Driver -contains '*Red Hat VirtIO*')
{
Add-Content $report "<tr>"
Add-Content $report "<td bgcolor= 'White' height='30' align=center><B>14</B></td>"
Add-Content $report "<td bgcolor= 'White' height='30' align=left><B>KVM Driver Type & Version</B></td>"
Add-Content $report "<td bgcolor= 'red' height='30' align=left><B>$Driver</B></td>"
Add-Content $report "</tr>"
}
else
{
Add-Content $report "<tr>"
Add-Content $report "<td bgcolor= 'White' height='30' align=center><B>14</B></td>"
Add-Content $report "<td bgcolor= 'White' height='30' align=left><B>PV Driver Type & Version</B></td>"
Add-Content $report "<td bgcolor= 'Aquamarine' height='30' align=left><B>$Driver</B></td>"
Add-Content $report "</tr>"
}
脚本的当前输出如下所示,当它在OVM上运行时,输出显示为 ** PV驱动器类型&amp;版本@ {DeviceName = Oracle VM虚拟PCI总线; DriverVersion = 3.4.2.1757}
输出应该是 PV驱动器类型&amp;版本Oracle VM虚拟PCI总线3.4.2.1757}
对于KVM,我在powershell提示符下输出低于输出。但是没有在电子邮件中获得任何输出,因为电子邮件只能获得&#34; Red Hat VirtIO以太网适配器100.74.104.13200&#34;
DeviceName DriverVersion ---------- ------------- Red Hat VirtIO SCSI控制器100.74.104.13200 红帽VirtIO以太网适配器100.74.104.13200
非常感谢任何帮助。
答案 0 :(得分:1)
在您的示例中,我建议使用here-strings以使其更易于阅读。 (包括字符串子表达式的注释调整)
$P=@{ClassName='Win32_PnPSignedDriver'
Filter='DeviceName LIKE "%VirtIO%" OR DeviceName LIKE "%Oracle VM Virtual PCI%"'}
$Drivers = Get-CimInstance @P | Select-Object -Property DeviceName,DriverVersion
ForEach ($Driver in $Drivers)
{
$Label='PV Driver Type & Version'
If ($Driver.DeviceName -like '*Red Hat VirtIO*')
{$Label='KVM Driver Type & Version'}
Add-Content -Path $report -Value @"
<tr>
<td bgcolor='White' height='30' align=center><B>14</B></td>
<td bgcolor='White' height='30' align=left><B>$Label</B></td>
<td bgcolor='Aquamarine' height='30' align=left><B>$($Driver.DeviceName,$Driver.DriverVersion -join ' ')</B></td>
</tr>
"@
}