使用Hyper-V BPA(Best Practices Analyzer-最佳化分析工具)

使用Hyper-V BPA(Best Practices Analyzer-最佳化分析工具)

這篇介紹的是Windows 2008 R2的Hyper-V Best Practices Analyzer

這個工具可以快速的檢查出目前Hyper-V非最佳化的設定,並給予建議跟修正的方向

首先需要先將KB977238安裝在Hyper-V Server上

KB977238:Windows Server 2008 R2 x64 Edition 之 HYPER-V 的 Best Practices Analyzer 更新

安裝完並不需要重新開機,請放心使用

 

安裝完後,就可以到【伺服器管理員】→【Hyper-V】→【Best Practices Analyzer】去掃描是否有未最佳化的設定

1

接著就可以看他的原因、跟解決方法

2

 

以上是安裝有GUI版本的Hyper-V,如果是使用Server Core版本的話,則是使用Powershell

需要先Import ServerManager的Module(因為BPA是ServerManager的組件)

語法:

Import-Module ServerManager

Import-Module BestPractices

接著就是執行BPA

Invoke-Bpamodel Microsoft/Windows/Hyper-V

3

然後,去取得BPA的Report

Get-BpaResult Microsoft/Windows/Hyper-V

或者是匯出成csv格式

Get-BpaResult Microsoft/Windows/Hyper-V | Export-Csv C:\Hyper-V_BPA.csv

4

您也可以使用微軟原廠所提供的PowerShell Script去將資訊匯出成csv格式(預設存放csv的路徑是User的Desktop)

路徑的部份,您可以修改$OutputPath的參數例如:$OutputPath = “C:\Hyper-V_BPA”

# the following command will run Hyper-V Best Practices Analyzer (KB977238) and exports the result in CSV format c:\temp\Hyperv_BPA_Report.csv
# Powershell Help:  Get-Help about_BestPractices
# Hyper-V BPA ID: Microsoft/Windows/Hyper-V
# This Sample script was last updated by mghazai on 06/08/2010

# Disclaimer:
#  This sample script is not supported under any Microsoft standard support program or service. The software is provided AS IS without warranty of any kind. 
#  Microsoft further disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a particular purpose. The 
#  entire risk arising out of the use or performance of the software and documentation remains with you. In no event shall Microsoft, its authors, or anyone else involved 
#  in the creation, production, or delivery of the software be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, 
#  business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the software or documentation, even if 
#  Microsoft has been advised of the possibility of such damages.?

# Please make sure PowerShell Execution policy is configured properly as this script isn't signed. Get-ExecutionPolicy


$OutputPath =  $env:USERPROFILE + "\Desktop\Hyperv_BPA_Report.csv"
import-module ServerManager
import-module BestPractices

if ((Get-windowsfeature hyper-v).BestPracticesModelId -eq $null) 
   {
      write-host
	  write-host -ForegroundColor red "Hyper-V Best Practices Analyzer is not installed on the server."
	  write-host -ForegroundColor red "Please see Microsoft KB977238"
	  write-host -ForegroundColor red "http://support.microsoft.com/kb/977238"
      write-host
   } 

else{

    $BPAResults = Invoke-BpaModel Microsoft/Windows/Hyper-V

    Get-BPAResult Microsoft/Windows/Hyper-v | select ResultNumber,@{Name="Server Name"; Expression={hostname}},ModelId,RuleId,ResultId,Severity,NeutralSeverity,Category,Title,Problem,Impact,Resolution,Compliance,Help,Excluded | Export-Csv $OutputPath
    
    If ($BPAResults[0].Success -eq $True) {

      Write-Host
      Write-Host -ForegroundColor green  "The BPA Output has been saved in $OutputPath"
      Write-Host

    }
    else{

      Write-Host -ForegroundColor red  "Error!!!!" 
      Write-Host -ForegroundColor red $BPAResults[0].Detail

    }
}