powershell脚本中的更正

powershell脚本中的更正,powershell,Powershell,我已经编写了一个powershell脚本来获取OVM和KVM驱动程序的类型和版本。我需要从一个脚本中同时获取这两个驱动程序,这样它就可以同时运行OVM和KVM机器。我正在从脚本中获取输出,但我需要修剪的帮助,以便输出正确 $Driver = Get-CimInstance -ClassName Win32_PnPSignedDriver | Where-Object {$_.DeviceName -like '*VirtIO*' -or $_.DeviceName -like '*Ora

我已经编写了一个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驱动程序类型和版本@{DeviceName=Oracle虚拟PCI总线;DriverVersion=3.4.2.1757}

输出应该是 PV驱动程序类型和版本Oracle VM虚拟PCI总线3.4.2.1757}

对于KVM,我在powershell提示符中得到的输出低于输出。但是没有在电子邮件中获得任何输出,因为电子邮件应该只获得Red Hat VirtIO以太网适配器100.74.104.13200

DeviceName驱动服务器版本 ----- ------- Red Hat VirtIO SCSI控制器100.74.104.13200 Red Hat VirtIO以太网适配器100.74.104.13200


非常感谢您的帮助。

在您的示例中,我建议使用here字符串以使其更易于阅读。包含字符串子表达式的注释调整

$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>
"@
}

$Driver->$$Driver.DeviceName,$Driver.DriverVersion-join''当我运行脚本时,我在OVM机器中获得了输出,但当我从KVM机器上运行它时,我得到了一个名为PV Driver Type&Version的值,代表KVM Driver Type&Version,并且没有显示任何值,这听起来像是您的逻辑中的错误@Sandeep我编辑了文章以更正此问题。