資訊無涯,回頭已不見岸

Hyper-V系統報表及中文化修改

聲明:報表的程式原始碼為國外微軟 Hyper-V MVP Serhat AKINCI  撰寫,非常感謝他公開於 TechNet 組件庫,提供給所有 IT 人員使用。

TechNet Gallery(中譯: TechNet 組件庫)是微軟開放給 IT 專業人員,可上傳自製或下載便利好用資源的平台。某天,意外在組件庫發現 Serhat AKINCI 釋出的 PowerShell 報表程式,在看完功能說明跟截圖,再點進範例頁面並實際使用後,發現建立的 HTML 報表真的很棒,一時衝動決定對項目欄位中文化看看,最後...卻發現有種頭都洗一半了,為什麼不做完?

於是,就這樣犯賤花了好幾天,把報表中文化了。 /=.=/

原始英文版下載:Hyper-V Reporting Script (Powershell & HTML)
中文化版下載:按此下載 ( 解壓密碼: www.askasu.idv.tw )
中文化版範例頁面:獨立主機基本報表叢集環境基本報表警示模式報表

使用方式很簡單,只要程式碼下載後解開找地方存放,在 PowerShell 模式下執行就可以了。
相關參數使用,請務必參考以下翻譯自原網頁的說明:

A. 在該指令的存放位置,執行並產生 Hyper-V 叢集的報表(Hvcluster1 為叢集名稱)

.\Get-HyperVReport.ps1 -Cluster Hvcluster1

B. 在該指令的存放位置,執行單台或多台獨立 Hyper-V 伺服器的報表(Host1 為主機名稱)

.\Get-HyperVReport.ps1 -VMHost Host1,Host2,Host3

C. 在該指令的存放位置,執行並產生僅有警示事件的 Hyper-V 叢集報表(-HighlightsOnly 參數同樣適用於獨立伺服器)

.\Get-HyperVReport.ps1 -Cluster Hvcluster1 -HighlightsOnly $true

D. 產生 Hyper-V 叢集報表後,用無須驗證的 SMTP 伺服器以附件方式,寄送給多位收件者

.\Get-HyperVReport.ps1 -Cluster Hvcluster1 -SendMail $true -SMTPServer 10.29.0.50 -MailFrom sender@hyperv.com -MailTo recepient1@hyperv.com,recepient2@hyperv.com

E. 產生 Hyper-V 叢集報表後,使用需驗證的 SMTP 伺服器和 TLS/SSL 傳輸模式,以 HTML 報表附件方式寄送給多位收件者

.\Get-HyperVReport.ps1 -Cluster Hvcluster1 -SendMail $true -SMTPServer smtp.mailserver.com -SMTPPort 587 -MailFrom sender@hyperv.com -MailFromPassword P@ssw0rd -SMTPServerTLSorSSL $true -MailTo recepient1@hyperv.com,recepient2@hyperv.com

 

報表產生後,可以嘗試將滑鼠游標移到文字資訊旁邊的小黃星,會有意外驚喜。

若出現如下圖的儲存空間警示,則代表已經啟動的 VHD(已啟動的虛擬機)最大使用空間,未來有可能高於實體空間。
(上圖自作者部落格直接連結引用)

 

注意事項:
1. 僅支援 Windows Server 2012/2012 R2Windows 8/8.1 (目前我僅在 Windows Server 2012 R2 測試過 )
2. 叢集系統只能針對單組產生報表,多台獨立伺服器則可合併在同一張 HTML 報表中。但小弟覺得多台合併單一報表不易瞭解狀況,較建議分開產生。
3. 用 FireFox 版閱讀會有虛擬機器表格破版問題。(英文原版就會這樣,拜託不要叫我修看看~)
4. 若要從本機撈其他台 Hyper-V 主機的資訊,除了執行程式的帳號權限需足夠外,請務必在遠端的主機,啟用「檔案及印表機共用」的防火牆設定。(目前皆在網域環境測試)
5. 執行後產生的 HTML 檔案,會預設存放在執行位置,同時間會將執行過程或錯誤訊息,存在名為 ScriptLog.txt 的檔案中。

 

狀況排除:
1. 下載解開的程式,若執行時發生如下圖的錯誤。

請執行下面指令以解除 Powerhell 預設限制。或者參考這篇文章 - 15 Ways to Bypass the PowerShell Execution Policy,試著避開系統預設限制。(差點想幫這篇文章下個標題叫「PowerShell 的十五道陰影」!?)

Set-ExecutionPolicy unrestricted

2. 遠端主機沒開防火牆的埠,想撈資料產生報表,只有吃憋的份。

3. 真的只支援 Windows 8/8.1 及 Server 2012/2012 R2  世代的版本,不要浪費時間亂玩了。還有,Win10 Preview 也不會動喔。
aska20150320_error02

4. 若某 Hyper-V 主機及虛擬機器是剛開機的狀態,可能會遇到不明原因無法取得 VM Uptime 資訊而出現錯誤訊息。我的經驗是請忽視它,過一段時間就會自己莫名其妙正常。

 

中文化版說明:
1. 很遺憾,我沒有將報表 100% 中文化,除 LAB 環境及配置可能無法重現所有狀況,部份名稱翻譯成中文感覺很怪外,因有些邏輯判斷式僅吃英文資訊,我曾嘗試修改但會導致報表狀態錯誤,故有些資訊還是維持以英文顯示。
2. 同上原因,所以在中文化過程,有額外增加不少名稱尾巴帶「_zhTW」 的變數,盡可能避開因中文化而導致邏輯判斷錯誤問題。
3. 原始程式碼的報表產生,在單一磁碟區僅有單個已啟動的 VHD 情境下,會無法顯示數字為 1。在此感謝前期協助封測的友人,使我能意外發現這 Bug;由於個人龜毛因素,不能接受無法顯示數字,目前微軟 MVP Sky Chang 與我已經找到出狀況的程式碼,中文版已修正此問題。
4. 原始程式碼使用的預設時間格式變數,導致報表檔名及英文內容輸出後會有中文(而且我覺得很醜),因此小弟有新增變數並更換格式,變數名改為 $RptDate 及 $RptTime。。
5. HTML 報表字型增加「微軟正黑體」,灰階小字的顏色設定加深。
6. HTML 報表置底作者及版本宣告,增加中文化譯者宣告,同時加上超連結。
7. 未來若程式有新版本,請恕小弟不一定有時間能即時跟進加以中文化。

針對此報表有任何中文化的建議,歡迎留言告知及討論,感謝 /:)/

9 則留言

  1. Peter

    請問要如何將這個Powershell包在Bat檔裡
    小弟想要每週自動跑一次

    有試著在command裡跑,但是會出現失敗
    Error是參數上的引數轉換失敗
    再請蘇老賜教
    謝謝

  2. Peter

    蘇老,

    小弟後來直接把判斷SendMail的地方改為True
    然後用排程去Run就可以跑了
    謝謝

    • AskaSu

      也謝謝你的回應及分享

    • Otis

      我也碰到相同問題, 可以請Peter 大 分享改了哪些地方嗎? 謝謝

  3. Otis

    老蘇您好, 您的中化Hyper-V 報表在one driver 的link 進不去了, 還有其他存放點嗎?

    謝謝您.

    • AskaSu

      謝謝您的回報,
      不然我就要看報紙才知道了(咦!?)

      我最晚會在明天中午前更新下載連結,
      如果下載仍有問題,請儘管告知

  4. 小可

    有人遇到Firefox顯示的問題嘛?
    虛擬機器的表格中 rowspan="0"會造成Firefox顯示異常

    我的處理方法,把變數$chargerVmTable輸出前置換 rowspan="0"
    在中文版2478行加入下面程式碼
    $chargerVmTable = $chargerVmTable -replace (" rowspan=""0""","")

    • 小可

      或是把2419行的檢查拿掉

      • AskaSu

        非常謝謝您提供的方法,
        我這邊也再進一步測試確認

        如果沒問題,就會更新提供的中文版檔案,
        屆時也請讓我將您標註在本文中以示感謝 /:D/

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

© 2024 蘇老碎碎唸

Theme by Anders NorenUp ↑