Windows VM 疑難排解

本文說明可用來解決下列 Compute Engine Windows 虛擬機器 (VM) 執行個體啟動問題的方法和工具:

  • 您無法使用 RDP 連線至 VM,且疑難排解無法解決連線問題。

  • VM 螢幕截圖中未顯示登入畫面,且 VM 似乎未進行任何作業或更新。

  • 在正常運作下,您遇到藍色畫面錯誤、凍結或行為不穩定的 VM。

如果無法連線至 Windows VM,請參閱「RDP 疑難排解」。

如要找出運算執行個體無法啟動的原因,並自動偵測原因,請參閱「排解 Windows Compute Engine 執行個體啟動問題」。

如要瞭解遷移至第三代 VM 的相關問題,請參閱 Windows 已知問題。

事前準備

  • 請參閱 Microsoft 針對 Windows 啟動問題提供的進階疑難排解,瞭解如何排解 Windows 啟動程序問題。
  • 如果尚未設定驗證,請先完成設定。驗證程序會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,您可以選取下列其中一個選項,向 Compute Engine 進行驗證:

    請根據您打算如何使用本頁範例,選取對應的分頁標籤:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證機制。

    gcloud

    1. 安裝 Google Cloud CLI。 安裝完成後,請執行下列指令,初始化 Google Cloud CLI:

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  • 設定預設區域和可用區。

使用「進階啟動選項」選單

如果 Windows 無法正常啟動,請使用「進階開機選項」選單進入安全模式,或完成作業系統的線上修復。詳情請參閱「進階啟動選項」。

如要進入 Windows VM 的「進階開機選項」選單,請完成下列程序:

  1. 如果尚未啟用 VM 的顯示裝置,請先啟用。
  2. 連線至 VM 的互動式序列控制台。

  3. 使用下列任一方法重設 VM:

    控制台

    1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

      前往 VM 執行個體

    2. 按一下要重設的 VM 名稱。「VM instance details」(VM 執行個體詳細資料) 頁面隨即開啟。

    3. 點選「重設」按鈕,重新啟動 VM。

    gcloud

    使用 gcloud compute instances reset 指令重設 VM:

    gcloud compute instances reset VM_NAME --zone=ZONE --project=PROJECT_ID
    

    更改下列內容:

    • PROJECT_ID:VM 所在專案的 ID
    • ZONE:VM 所在的可用區名稱
    • VM_NAME:VM 名稱

    命令提示字元

    連線至互動式序列控制台後,開啟命令提示字元工作階段,並執行下列指令。如要進一步瞭解如何開啟命令提示字元工作階段,請參閱「在 Windows SAC 中開啟命令提示字元」。

    shutdown /r /t 0
    

    Windows 開機管理程式選單隨即開啟:

    Windows Boot Manager 選單

  4. 請在倒數計時結束前完成下列步驟:

    1. 確認互動式序列控制台是使用中的視窗。

    2. 按下鍵盤上的 Esc 鍵。

    3. 按下鍵盤上的數字 8 鍵。

    「進階啟動選項」選單隨即開啟:

    「Advanced Boot Options」(進階啟動選項) 選單

  5. 使用鍵盤的方向鍵選取所需選項,然後按下 Enter 鍵開啟。

啟用 Windows Boot Manager 選單

您可以設定 Windows 開機管理程式選單,在 Windows VM 執行個體重新啟動時顯示。如要啟用 Windows 啟動管理程式選單,請按照下列步驟操作:

連線至 VM,並以管理員權限開啟命令提示字元。如果無法連線至 VM,請將後續步驟做為值新增至 windows-startup-script-cmd 或 windows-startup-script-ps1 開機指令碼,而非直接執行

命令提示字元

  1. 如要在啟動時啟用 Windows Boot Manager 選單,並新增 15 秒的逾時時間,請執行下列指令:

    bcdedit /set {bootmgr} displaybootmenu yes
    
    bcdedit /set {bootmgr} timeout 15
    
  2. 如要重新啟動 VM,並在序列控制台中顯示 Windows 開機管理程式選單,請使用下列指令:

    shutdown -r -t 0
    

PowerShell

  1. 如要在啟動時啟用 Windows Boot Manager 選單,並新增 15 秒的逾時時間,請執行下列指令:

    bcdedit /set '{bootmgr}' displaybootmenu yes
    
    bcdedit /set '{bootmgr}' timeout 15
    
  2. 如要重新啟動 VM,並在序列控制台中顯示 Windows 開機管理程式選單,請使用下列指令:

    shutdown -r -t 0
    

完成離線維修

如果 VM 無法正常啟動,且使用進階啟動選單無法解決問題,請嘗試使用功能正常的 Windows VM 執行個體進行離線修復,並使用有問題的 VM 開機磁碟快照進行復原。使用快照可建立備份副本,您可以在不變更原始 VM 狀態的情況下修改副本。

  1. 為有問題的 VM 開機磁碟建立快照。

  2. 使用該快照建立磁碟。

  3. 使用新建立的磁碟,建立具有額外非開機磁碟的 VM。復原 VM 應符合下列條件:

    • 復原 VM 必須與建立的磁碟位於相同可用區。
    • 復原 VM 也應使用 Windows Server 映像檔。
    • 復原 VM 開機磁碟的來源映像檔,應與問題 VM 開機磁碟的來源映像檔不同。
  4. 您現在可以使用 Windows 工具和公用程式,嘗試離線修復額外連接的磁碟。如要進一步瞭解如何完成 VM 的離線修復,請參閱下列說明文件:

  5. 如果離線修復作業已順利完成,請將問題 VM 的開機磁碟更新為新修復的開機磁碟。

  6. 選用:刪除不再需要的額外資源:

排解藍色畫面錯誤

Windows 作業系統可能會發生停止代碼或藍色畫面錯誤,也就是所謂的藍色當機畫面。如果 VM 發生藍色畫面錯誤,VM 會停止運作,必須重新啟動才能恢復正常運作。

如果您認為可能發生藍色畫面錯誤,請使用下列一或多種方法確認是否有錯誤:

序列埠 1

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 按一下要查看記錄檔的 VM 名稱。VM 執行個體詳細資料頁面隨即開啟。

  3. 在「記錄檔」下方,按一下「序列埠 1」。

  4. 如果堆疊追蹤傾印類似下方內容,即表示發生藍色畫面錯誤:

    ntoskrnl.exe [0xFFFFF802C9606000, 0xFFFFF802C9E23000]
    netbios.sys [0xFFFFF80E98430000, 0xFFFFF80E98442000]
    volmgr.sys [0xFFFFF80E97E40000, 0xFFFFF80E97E58000]
    NTFS.sys [0xFFFFF80E98060000, 0xFFFFF80E98293000]
    crashdmp.sys [0xFFFFF80E986C0000, 0xFFFFF80E986D9000]
    pvpanic.sys [0xFFFFF80E99030000, 0xFFFFF80E9903C000]
    myfault.sys [0xFFFFF80E9A570000, 0xFFFFF80E9A578000]
    Dumping stack trace:
    0xFFFFF80E990317C7 (pvpanic.sys+0x17C7)
    0xFFFFF80E990316D3 (pvpanic.sys+0x16D3)
    0xFFFFF802C97D9681 (ntoskrnl.exe+0x1D3681)
    0xFFFFF802C97D8A1F (ntoskrnl.exe+0x1D2A1F)
    0xFFFFF802C97633F4 (ntoskrnl.exe+0x15D3F4)
    0xFFFFF802C9773329 (ntoskrnl.exe+0x16D329)
    0xFFFFF802C976F152 (ntoskrnl.exe+0x169152)
    0xFFFFF80E9A572794 (myfault.sys+0x2794)
    Current Process: notmyfault64.e
    

序列埠 2

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 按一下要查看記錄檔的 VM 名稱。VM 執行個體詳細資料頁面隨即開啟。

  3. 在「記錄檔」下方,展開「更多」,然後按一下「序列埠 2 (控制台)」。

  4. 查看執行個體的序列埠,並尋找類似下列的輸出內容:

    !SAC>
    Your PC ran into a problem and needs to restart.
    If you call a support person, give them this info:
    UNEXPECTED_KERNEL_MODE_TRAP
    
    myfault.sys
    
    0x0000000000000008
    0xFFFFC6812AB94F70
    0xFFFFC6812E38EFF0
    0xFFFFF80E9A572794
    
    We're just collecting some error info, and then we'll restart for you.
    100% complete
    

命令提示字元

  1. 連線至執行個體,並以管理員權限開啟命令提示字元。

  2. 如要顯示最近的藍色畫面事件,請執行下列指令:

    wevtutil qe System "/q:*[System [(EventID=1001)]]" /rd:True /c:1 /f:Text
    
  3. 查看輸出內容,大致如下:

    Event[0]:
      Log Name: System
      Source: Microsoft-Windows-WER-SystemErrorReporting
      Date: 2021-04-14T08:53:52.933
      Event ID: 1001
      Task: N/A
      Level: Error
      Opcode: N/A
      Keyword: Classic
      User: N/A
      User Name: N/A
      Computer: WINDOWS
      Description:
    The computer has rebooted from a bugcheck.  The bugcheck was: 0x1000007f (0x
    0000000000000008, 0xffffc6812ab94f70, 0xffffc6812e38eff0, 0xfffff80e9a572794
    ). A dump was saved in: C:\Windows\Minidump\041421-12656-01.dmp. Report Id:
    a5710c98-a577-4b3e-a3c9-2fc0aa4e5d83.
    

如要瞭解如何自訂 wetutil 查詢,請參閱「wevtutil」。

磁碟快照

如果 VM 已無法運作,或您已嘗試其他方法但未成功,您可以使用次要 VM 檢查疑似藍色畫面的 VM 開機磁碟。使用快照可取得備份副本,您可以在不變更原始 VM 狀態的情況下修改副本。

  1. 為疑似藍色畫面的 VM 開機磁碟建立快照。

  2. 使用該快照建立磁碟。

  3. 建立具有額外非開機磁碟的 VM,並使用可疑 VM 新建立的磁碟。復原 VM 應符合下列條件:

    • 復原 VM 必須與建立的磁碟位於相同可用區。
    • 復原 VM 也應使用 Windows Server 映像檔。
    • 復原 VM 開機磁碟的來源映像檔,應與問題 VM 開機磁碟的來源映像檔不同。
  4. 瀏覽其他磁碟,並找出下列檔案:

    %SystemRoot%\Memory.dmp
    %SystemRoot%\Minidump\DATE-TIME-NUM.dmp
    

    檔案的日期和時間可協助您判斷可疑執行個體是否發生藍色畫面錯誤。這些檔案也可用於分析和診斷。

  5. 選用:刪除不再需要的額外資源:

取得藍色畫面錯誤資訊,並視需要取得記憶體傾印檔案的存取權後,請按照 Microsoft 提供的診斷步驟和建議操作:

授權問題

Windows 作業系統每七天會連線至金鑰管理服務 (KMS) 伺服器,更新授權。如果收到授權到期訊息,或 Windows VM 發生其他授權相關問題,請按照下列步驟操作:

  1. 確認 Windows VM 的虛擬私有雲網路已設為允許與 KMS 通訊。

  2. 確認 Windows 防火牆允許連出至 KMS 伺服器:

    • IP 位址:35.190.247.13
    • 通訊埠:1688
    • 通訊協定:TCP

    如要進一步瞭解如何設定 Windows 進階防火牆規則,請參閱「建立傳出通訊埠規則」。

  3. 在 Cloud Shell 執行下列指令,確認是否成功連線至 KMS 伺服器:

    gcloud network-management connectivity-tests create test-access-to-gcp-kms \
        --source-ip-address=WINDOWS_VM_IP_ADDRESS \
        --destination-ip-address=35.190.247.13 \
        --destination-port=1688 \
        --protocol=TCP \
        --round-trip
    

    如下圖所示,Connectivity Tests 結果資訊卡的「Static route」(靜態路由) 欄位應會列出「Next hop: Internet gateway」(下一個躍點:網際網路閘道)。如果看到其他結果,表示 Windows 啟用失敗。KMS 連線能力測試結果。已到期。結果應顯示 Reachability 狀態和 Successful 結果。

  4. 執行下列指令,確認授權的目前狀態、設定 KMS 的伺服器 IP 位址,並強制啟用:

    cscript \windows\system32\slmgr.vbs /dlv
    
    cscript \windows\system32\slmgr.vbs /skms 35.190.247.13:1688
    
    cscript \windows\system32\slmgr.vbs /ato
    

互動式序列控制台疑難排解

  1. 確認您符合存取序列控制台的必要條件。

  2. 啟用「緊急管理服務」。 如果關閉 EMS,序列控制台就不會接受任何鍵盤輸入,只會顯示空白畫面和閃爍游標。

    命令提示字元

    1. 使用 RDP 連線至 VM,並以管理員身分開啟 Command Prompt。如果無法使用 RDP,請將後續步驟做為值,新增至 windows-startup-script-cmd 啟動金鑰。

    2. 將全域 EMS 重新導向設定設為使用 COM2、鮑率 115200,並啟用 EMS。

      bcdedit /emssettings EMSPORT:2 EMSBAUDRATE:115200
      bcdedit /ems on
      
    3. 重新啟動 VM,套用更新後的設定。如果您使用中繼資料指令碼,請勿新增關機指令。

      shutdown -r -t 0
      

    PowerShell

    1. 透過 RDP 連線,並以管理員身分開啟 Powershell。如果無法使用 RDP,請將後續步驟做為值新增至 windows-startup-script-ps1 啟動金鑰。

    2. 將全域 EMS 重新導向設定設為使用 COM2、鮑率 115200,並啟用 EMS。

      bcdedit /emssettings EMSPORT:2 EMSBAUDRATE:115200
      bcdedit /ems on
      
    3. 重新啟動 VM,套用更新後的設定。如果您使用中繼資料指令碼,請勿新增關機指令。

      shutdown -r -t 0
      

後續步驟