powershell脚本中的更正

时间:2017-08-25 15:43:45

标签: powershell

我编写了一个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

非常感谢任何帮助。

1 个答案:

答案 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>
"@
}