Windows VM 疑難排解

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

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

  • VM 螢幕截圖未顯示登入畫面,且 VM 似乎沒有進度或更新。

  • 您在正常運作期間遇到藍色畫面錯誤,或 VM 凍結或行為異常。

如果無法連線至 Windows VM,請參閱「遠端桌面通訊協定疑難排解」一文。

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

事前準備

  • 如要瞭解如何排解 Windows 開機程序問題,請參閱「Microsoft Advanced troubleshooting for Windows boot problems」(Microsoft 進階 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 執行個體詳細資料頁面隨即開啟。

    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 開機管理程式選單

  4. 倒數結束前,請完成下列步驟:

    1. 確認互動式序列主控台是目前使用的視窗。

    2. 按下鍵盤上的 Esc 鍵。

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

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

    「進階啟動選項」選單

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

啟用 Windows 開機管理程式選單

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

連線至 VM,然後開啟具有管理員權限的命令提示字元。如果無法連線至 VM,請將後續步驟新增為 windows-startup-script-cmdwindows-startup-script-ps1 開機指令碼的值,而不是直接執行這些步驟

命令提示字元

  1. 如要在啟動時啟用 Windows 開機管理員選單,並新增 15 秒逾時,請執行下列指令:

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

    shutdown -r -t 0
    

PowerShell

  1. 如要在啟動時啟用 Windows 開機管理員選單,並新增 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. 在「Logs」(記錄) 底下,按一下「Serial port 1」(序列埠 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. 在「Logs」(記錄) 下方,展開「More」(更多),然後按一下「Serial port 2 (console)」(序列埠 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
    

    如下圖所示,您應該會在「連線測試」結果資訊卡的「靜態路由」欄位中,看到「下一個躍點:網際網路閘道」。如果看到不同的結果,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. 使用遠端桌面協定連線至 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
      

後續步驟