2017-08-25 87 views
3

我寫了一個PowerShell腳本來獲取OVM和KVM驅動程序的類型和版本。我需要從一個腳本中獲取,以便它可以同時運行OVM和KVM機器。該腳本,但我需要幫助修剪,以便輸出將是正確的。PowerShell腳本中的更正

$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驅動程序類型&版本@ {設備名稱= Oracle VM的虛擬PCI總線; DriverVersion = 3.4.2.1757}

輸出應該 PV驅動程序類型&版本的Oracle VM虛擬PCI總線3.4.2.1757}

對於KVM,我得到以下輸出PowerShell提示符。但沒有得到任何電子郵件的輸出,因爲電子郵件應該只能得到「紅帽VirtIO以太網適配器100.74.104.13200」

DeviceName DriverVersion ---------- --------- ---- 紅帽VirtIO SCSI控制器100.74.104.13200 紅帽VirtIO以太網適配器100.74.104.13200

任何幫助,非常感謝。

+2

'$ Driver' - >'$($ Driver.DeviceName,$ Driver.DriverVersion -join'「)' –

回答

1

在你的例子中,我建議使用here-strings來使它更易於閱讀。 (字符串子表達式包含註釋調整)

[email protected]{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> 
"@ 
} 
+0

當我跑我的OVM獲得輸出腳本機器,但是當我從KVM機器上運行它時,我得到一個名爲PV Driver Type&Version的值,代表KVM驅動程序類型和版本,並且沒有顯示任何值 – Sandeep

+0

聲音在您的邏輯中出現錯誤@Sandeep我已將該帖子編輯爲糾正這一點。 – TheIncorrigible1