準備 Windows VHD 或 VHDX 以上傳至 Azure

適用於:✔️ Windows VM

在將 Windows 虛擬機器 (VM) 從內部部署上傳至 Azure 之前,您必須先準備虛擬硬碟 (VHD 或 VHDX)。 Azure 支援第 1 代和第 2 代 VM,這些 VM 皆為 VHD 檔案格式,且配備固定大小的磁碟。 第 1 代 VM 上 OS VHD 所允許的大小上限為 2 TB。

您可以將 VHDX 檔案轉換成 VHD、將動態擴充的磁碟轉換成固定大小的磁碟,但您無法變更 VM 的世代。 如需詳細資訊,請參閱我應該在 Hyper-V 中建立第 1 代或是第 2 代的 VM 呢?以及 Azure 上的第 2 代 VM 支援

如需 Azure VM 支援原則的相關資訊,請參閱適用於 Azure VM 的 Microsoft Server 軟體支援

注意

本文中的指示適用於:

  • 64 位元版本的 Windows Server 2008 R2 和更新版本的 Windows Server 作業系統。 如需在 Azure 中執行 32 位元作業系統的相關資訊,請參閱在 Azure VM 中對 32 位元作業系統的支援
  • 若要使用任何災害復原工具來移轉工作負載,例如 Azure Site Recovery 或 Azure Migrate,則在客體 OS 上仍然需要此流程,於移轉之前準備映像。

系統檔案檢查程式

在 OS 映像一般化之前,先執行 Windows 系統檔案檢查程式公用程式

系統檔案檢查程式 (SFC) 可用於驗證和取代 Windows 系統檔案。

重要

使用提升權限的 PowerShell 工作階段,以執行本文中的範例。

執行 SFC 命令:

sfc.exe /scannow
Beginning system scan.  This process will take some time.

Beginning verification phase of system scan.
Verification 100% complete.

Windows Resource Protection did not find any integrity violations.

在 SFC 掃描完成後,請安裝 Windows Update 並重新啟動電腦。

設定適用於 Azure 的 Windows 設定

注意

當從一般化映像建立 Windows VM 時,Azure 平台會將 ISO 檔案掛接至 DVD-ROM。 基於這個理由,DVD-ROM 必須在一般化映像的 OS 中啟用。 如果停用 DVD-ROM,則 Windows VM 會停滯在全新體驗 (OOBE) 的程序中。

  1. 移除路由表中的任何靜態持續性路由:

    • 若要檢視路由表,請執行 route.exe print
    • 檢查 [持續路由] 區段。 如果有持續性路由,請使用 route.exe delete 命令加以移除。
  2. 移除 WinHTTP Proxy:

    netsh.exe winhttp reset proxy
    

    如果 VM 需要使用特定 Proxy,請為 Azure IP 地址 (168.63.129.16) 新增 Proxy 例外狀況,讓 VM 能連線至 Azure:

    $proxyAddress='<your proxy server>'
    $proxyBypassList='<your list of bypasses>;168.63.129.16'
    netsh.exe winhttp set proxy $proxyAddress $proxyBypassList
    
  3. 開啟 DiskPart:

    diskpart.exe
    

    將磁碟 SAN 原則設為 Onlineall

    DISKPART> san policy=onlineall
    DISKPART> exit
    
  4. 將 Windows 時間設為國際標準時間 (UTC)。 此外,將 Windows 時間服務 w32time 的啟動類型設為 [自動]

    Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -Name RealTimeIsUniversal -Value 1 -Type DWord -Force
    Set-Service -Name w32time -StartupType Automatic
    
  5. 將電源設定檔設為高效能:

    powercfg.exe /setactive SCHEME_MIN
    powercfg /setacvalueindex SCHEME_CURRENT SUB_VIDEO VIDEOIDLE 0
    
  6. 確定環境變數 TEMPTMP 均設為其預設值:

    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' -Name TEMP -Value "%SystemRoot%\TEMP" -Type ExpandString -Force
    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment' -Name TMP -Value "%SystemRoot%\TEMP" -Type ExpandString -Force
    
  7. 針對使用舊版作業系統 (Windows Server 2012 R2 或 Windows 8.1 及以下),請確保已安裝最新的 Hyper-V 整合元件服務。 如需詳細資訊,請參閱適用於 Windows VM 的 Hyper-V 整合元件更新

注意

在使用內部部署 VMWare 伺服器和 Azure 之間的災害復原解決方案設置 VM 的情況下,無法使用 Hyper-V 整合元件服務。 如果是這種情況,請連絡 VMWare 支援,將 VM 移轉至 Azure,並讓 VM 共同位於 VMWare 伺服器中。

檢查 Windows 服務

確保以下的每個 Windows 服務都已設為 Windows 預設值。 這些服務是必須設定的最低要求,以確保 VM 連線能力。 若要設置啟動設定,請執行下列範例:

Get-Service -Name BFE, Dhcp, Dnscache, IKEEXT, iphlpsvc, nsi, mpssvc, RemoteRegistry |
  Where-Object StartType -ne Automatic |
    Set-Service -StartupType Automatic

Get-Service -Name Netlogon, Netman, TermService |
  Where-Object StartType -ne Manual |
    Set-Service -StartupType Manual

更新遠端桌面登錄設定

確定已針對遠端存取正確設定下列設定:

注意

如果您在執行 Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services' -Name <string> -Value <object> 時收到錯誤訊息,您可以放心地忽略。 這表示網域並未透過群組原則物件設置該設定。

  1. 遠端桌面通訊協定 (RDP) 已啟用:

    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server' -Name fDenyTSConnections -Value 0 -Type DWord -Force
    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services' -Name fDenyTSConnections -Value 0 -Type DWord -Force
    
  2. RDP 連接埠已使用預設連接埠 3389 正確設定:

    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp' -Name PortNumber -Value 3389 -Type DWord -Force
    

    當您部署 VM 時,系統會針對連接埠 3389 建立預設規則。 若想變更連接埠號碼,請在 Azure 中部署 VM 之後進行。

  3. 接聽程式正在每個網路介面中進行接聽:

    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp' -Name LanAdapter -Value 0 -Type DWord -Force
    
  4. 設定 RDP 連線的網路層級驗證 (NLA) 模式:

    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1 -Type DWord -Force
    
  5. 設定 Keep-Alive 值:

    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services' -Name KeepAliveEnable -Value 1  -Type DWord -Force
    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services' -Name KeepAliveInterval -Value 1  -Type DWord -Force
    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp' -Name KeepAliveTimeout -Value 1 -Type DWord -Force
    
  6. 設定重新連線選項:

    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services' -Name fDisableAutoReconnect -Value 0 -Type DWord -Force
    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp' -Name fInheritReconnectSame -Value 1 -Type DWord -Force
    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp' -Name fReconnectSame -Value 0 -Type DWord -Force
    
  7. 並行連線數目的限制:

    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\Winstations\RDP-Tcp' -Name MaxInstanceCount -Value 4294967295 -Type DWord -Force
    
  8. 移除任何繫結至 RDP 接聽程式的自我簽署憑證:

    if ((Get-Item -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp').Property -contains 'SSLCertificateSHA1Hash')
    {
        Remove-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name SSLCertificateSHA1Hash -Force
    }
    

    此程式碼確保您可以在部署 VM 時進行連線。 在 Azure 中部署 VM 後,您也可以檢閱這些設定。

  9. 如果 VM 是網域的一部分,請檢查下列原則以確定先前的設定不會遭到還原。

    Goal 原則
    RDP 已啟用 電腦設定\原則\Windows 設定\系統管理範本\元件\遠端桌面服務\遠端桌面工作階段主機\連線 允許使用者使用遠端桌面服務從遠端連線
    NLA 群組原則 設定\系統管理範本\元件\遠端桌面服務\遠端桌面工作階段主機\安全性 使用 NLA 要求遠端存取的使用者驗證
    Keep-Alive 設定 電腦設定\原則\Windows 設定\系統管理範本\Windows 元件\遠端桌面服務\遠端桌面工作階段主機\連線 設定 Keep-Alive 連線間隔
    重新連線設定 電腦設定\原則\Windows 設定\系統管理範本\Windows 元件\遠端桌面服務\遠端桌面工作階段主機\連線 自動重新連線
    連線設定數目有限 電腦設定\原則\Windows 設定\系統管理範本\Windows 元件\遠端桌面服務\遠端桌面工作階段主機\連線 限制連線數目

設定 Windows 防火牆規則

  1. 在這三個設定檔 (網域、標準和公用) 上開啟 Windows 防火牆:

    Set-NetFirewallProfile -Profile Domain, Public, Private -Enabled True
    
  2. 執行下列範例,以允許 WinRM 通過這三種防火牆設定檔 (網域、私人和公用),並啟用 PowerShell 遠端服務:

    Enable-PSRemoting -Force
    

注意

當此命令執行時,會自動啟用適當的防火牆規則。

  1. 啟用下列防火牆規則以允許 RDP 流量:

    Get-NetFirewallRule -DisplayGroup 'Remote Desktop' | Set-NetFirewallRule -Enabled True
    
  2. 啟用檔案和印表機共用的規則,讓 VM 能回應虛擬網路內的 Ping 要求:

    Set-NetFirewallRule -Name FPS-ICMP4-ERQ-In -Enabled True
    
  3. 建立 Azure 平台網路規則:

    New-NetFirewallRule -DisplayName AzurePlatform -Direction Inbound -RemoteAddress 168.63.129.16 -Profile Any -Action Allow -EdgeTraversalPolicy Allow
    New-NetFirewallRule -DisplayName AzurePlatform -Direction Outbound -RemoteAddress 168.63.129.16 -Profile Any -Action Allow
    

重要

168.63.129.16 是 Microsoft 為 Azure 擁有的特殊公用 IP 位址。 如需相關資訊,請參閱什麼是 IP 位址 168.63.129.16

  1. 如果 VM 是網域的一部分,請檢查下列 Microsoft Entra 原則以確定先前的設定不會遭到還原。

    Goal 原則
    啟用 Windows 防火牆設定檔 電腦設定\原則\Windows 設定\系統管理範本\網路\網路連線\Windows 防火牆\網域設定檔\Windows 防火牆 保護所有網路連線
    啟用 RDP 電腦設定\原則\Windows 設定\系統管理範本\網路\網路連線\Windows 防火牆\網域設定檔\Windows 防火牆 允許輸入遠端桌面例外狀況
    電腦設定\原則\Windows 設定\系統管理範本\網路\網路連線\Windows 防火牆\標準設定檔\Windows 防火牆 允許輸入遠端桌面例外狀況
    啟用 ICMP-V4 電腦設定\原則\Windows 設定\系統管理範本\網路\網路連線\Windows 防火牆\網域設定檔\Windows 防火牆 允許 ICMP 例外狀況
    電腦設定\原則\Windows 設定\系統管理範本\網路\網路連線\Windows 防火牆\標準設定檔\Windows 防火牆 允許 ICMP 例外狀況

驗證 VM

請確定 VM 狀況良好、安全且可存取 RDP:

  1. 若要確定磁碟是狀況良好且一致的,請在下一個 VM 重新啟動時檢查磁碟:

    chkdsk.exe /f
    

    請確定此報告顯示乾淨且狀況良好的磁碟。

  2. 設定開機組態資料 (BCD) 設定。

    cmd
    
    bcdedit.exe /set "{bootmgr}" integrityservices enable
    bcdedit.exe /set "{default}" device partition=C:
    bcdedit.exe /set "{default}" integrityservices enable
    bcdedit.exe /set "{default}" recoveryenabled Off
    bcdedit.exe /set "{default}" osdevice partition=C:
    bcdedit.exe /set "{default}" bootstatuspolicy IgnoreAllFailures
    
    #Enable Serial Console Feature
    bcdedit.exe /set "{bootmgr}" displaybootmenu yes
    bcdedit.exe /set "{bootmgr}" timeout 5
    bcdedit.exe /set "{bootmgr}" bootems yes
    bcdedit.exe /ems "{current}" ON
    bcdedit.exe /emssettings EMSPORT:1 EMSBAUDRATE:115200
    
    exit
    
  3. 傾印記錄檔能幫助您進行 Windows 損毀問題的疑難排解。 啟用傾印記錄檔收集:

    # Set up the guest OS to collect a kernel dump on an OS crash event
    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl' -Name CrashDumpEnabled -Type DWord -Force -Value 2
    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl' -Name DumpFile -Type ExpandString -Force -Value "%SystemRoot%\MEMORY.DMP"
    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl' -Name NMICrashDump -Type DWord -Force -Value 1
    
    # Set up the guest OS to collect user mode dumps on a service crash event
    $key = 'HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps'
    if ((Test-Path -Path $key) -eq $false) {(New-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting' -Name LocalDumps)}
    New-ItemProperty -Path $key -Name DumpFolder -Type ExpandString -Force -Value 'C:\CrashDumps'
    New-ItemProperty -Path $key -Name CrashCount -Type DWord -Force -Value 10
    New-ItemProperty -Path $key -Name DumpType -Type DWord -Force -Value 2
    Set-Service -Name WerSvc -StartupType Manual
    
  4. 確認 Windows Management Instrumentation (WMI) 存放庫是一致的:

    winmgmt.exe /verifyrepository
    

    如果存放庫損毀,請參閱 WMI︰存放庫是否損毀

  5. 請確定除了 TermService 之外,其他應用程式都未使用連接埠 3389。 在 Azure 中,此連接埠是由 RDP 服務所使用。 若要查看 VM 上使用了哪些連接埠,請執行 netstat.exe -anob

    netstat.exe -anob
    

    以下是一個範例。

    netstat.exe -anob | findstr 3389
    TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       4056
    TCP    [::]:3389              [::]:0                 LISTENING       4056
    UDP    0.0.0.0:3389           *:*                                    4056
    UDP    [::]:3389              *:*                                    4056
    
    tasklist /svc | findstr 4056
    svchost.exe                   4056 TermService
    
  6. 若要上傳作為網域控制站的 Windows VHD:

    • 遵循這些額外的步驟來準備磁碟。

    • 如果您必須啟動目錄服務還原模式 (DSRM) 中的 VM,請確定您知道 DSRM 密碼。 如需詳細資訊,請參閱設定 DSRM 密碼

  7. 請確定您知道內建的系統管理員帳戶和密碼。 您可以重設目前的本機系統管理員密碼,並確定您可用此帳戶透過 RDP 連線登入 Windows。 此存取權限會受到「允許透過遠端桌面服務登入」群組原則物件所控制。 請於本機群組原則編輯器中檢視此物件:

    • Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment
  8. 請檢查下列 Microsoft Entra 原則,以確定這些原則不會封鎖 RDP 存取:

    • Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Deny access to this computer from the network

    • Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Deny log on through Remote Desktop Services

  9. 檢查下列 Microsoft Entra 原則,以確定這些原則並未移除任何所需的存取帳戶:

    • Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignment\Access this computer from the network

    原則應會列出下列群組:

    • 系統管理員

    • Backup Operators

    • 每個人

    • 使用者

  10. 重新啟動 VM,以確保 Windows 仍然狀況良好,並能透過 RDP 來連線。 此時,請考慮在本地 Hyper-V 伺服器上建立 VM,以確保 VM 完全啟動。 然後進行測試以確保您可以透過 RDP 連線至 VM。

  11. 移除任何額外的傳輸驅動程式介面 (TDI) 篩選器。 例如,移除分析 TCP 封包或額外防火牆的軟體。

  12. 解除安裝與實體元件或任何其他虛擬化技術相關的所有其他協力廠商軟體或驅動程式。

安裝 Windows 更新

注意

為了避免在 VM 佈建期間意外重新啟動,建議您完成所有的 Windows 更新安裝,並確定沒有任何擱置中的重新啟動程序。 其中一個做法是安裝所有的 Windows 更新,並在執行移轉至 Azure 前重新啟動 VM。

如果您也需要進行 OS (sysprep) 一般化,則必須先更新 Windows 並重新啟動 VM,才能執行 Sysprep 命令。

在理想情況下,您應該將機器更新為「修補檔等級」,如果無法這樣做,請確定已安裝下列更新。 若要取得最新的更新,請參閱 Windows 更新歷程記錄頁面:Windows 10 和 Windows Server 2019Windows 8.1 和 Windows Server 2012 R2Windows 7 SP1,以及 Windows Server 2008 R2 SP1


元件 二進位 Windows 7 SP1、Windows Server 2008 R2 SP1 Windows 8、Windows Server 2012 Windows 8.1、Windows Server 2012 R2 Windows 10 v1607、Windows Server 2016 v1607 Windows 10 v1703 Windows 10 v1709、Windows Server 2016 v1709 Windows 10 v1803、Windows Server 2016 v1803
儲存體 disk.sys 6.1.7601.23403 - KB3125574 6.2.9200.17638 / 6.2.9200.21757 - KB3137061 6.3.9600.18203 - KB3137061 - - - -
storport.sys 6.1.7601.23403 - KB3125574 6.2.9200.17188 / 6.2.9200.21306 - KB3018489 6.3.9600.18573 - KB4022726 10.0.14393.1358 - KB4022715 10.0.15063.332 - -
ntfs.sys 6.1.7601.23403 - KB3125574 6.2.9200.17623 / 6.2.9200.21743 - KB3121255 6.3.9600.18654 - KB4022726 10.0.14393.1198 - KB4022715 10.0.15063.447 - -
Iologmsg.dll 6.1.7601.23403 - KB3125574 6.2.9200.16384 - KB2995387 - - - - -
Classpnp.sys 6.1.7601.23403 - KB3125574 6.2.9200.17061 / 6.2.9200.21180 - KB2995387 6.3.9600.18334 - KB3172614 10.0.14393.953 - KB4022715 - - -
Volsnap.sys 6.1.7601.23403 - KB3125574 6.2.9200.17047 / 6.2.9200.21165 - KB2975331 6.3.9600.18265 - KB3145384 - 10.0.15063.0 - -
partmgr.sys 6.1.7601.23403 - KB3125574 6.2.9200.16681 - KB2877114 6.3.9600.17401 - KB3000850 10.0.14393.953 - KB4022715 10.0.15063.0 - -
volmgr.sys 10.0.15063.0 - -
Volmgrx.sys 6.1.7601.23403 - KB3125574 - - - 10.0.15063.0 - -
Msiscsi.sys 6.1.7601.23403 - KB3125574 6.2.9200.21006 - KB2955163 6.3.9600.18624 - KB4022726 10.0.14393.1066 - KB4022715 10.0.15063.447 - -
Msdsm.sys 6.1.7601.23403 - KB3125574 6.2.9200.21474 - KB3046101 6.3.9600.18592 - KB4022726 - - - -
Mpio.sys 6.1.7601.23403 - KB3125574 6.2.9200.21190 - KB3046101 6.3.9600.18616 - KB4022726 10.0.14393.1198 - KB4022715 - - -
vmstorfl.sys 6.3.9600.18907 - KB4072650 6.3.9600.18080 - KB3063109 6.3.9600.18907 - KB4072650 10.0.14393.2007 - KB4345418 10.0.15063.850 - KB4345419 10.0.16299.371 - KB4345420 -
Fveapi.dll 6.1.7601.23311 - KB3125574 6.2.9200.20930 - KB2930244 6.3.9600.18294 - KB3172614 10.0.14393.576 - KB4022715 - - -
Fveapibase.dll 6.1.7601.23403 - KB3125574 6.2.9200.20930 - KB2930244 6.3.9600.17415 - KB3172614 10.0.14393.206 - KB4022715 - - -
網路 netvsc.sys - - - 10.0.14393.1198 - KB4022715 10.0.15063.250 - KB4020001 - -
mrxsmb10.sys 6.1.7601.23816 - KB4022722 6.2.9200.22108 - KB4022724 6.3.9600.18603 - KB4022726 10.0.14393.479 - KB4022715 10.0.15063.483 - -
mrxsmb20.sys 6.1.7601.23816 - KB4022722 6.2.9200.21548 - KB4022724 6.3.9600.18586 - KB4022726 10.0.14393.953 - KB4022715 10.0.15063.483 - -
mrxsmb.sys 6.1.7601.23816 - KB4022722 6.2.9200.22074 - KB4022724 6.3.9600.18586 - KB4022726 10.0.14393.953 - KB4022715 10.0.15063.0 - -
tcpip.sys 6.1.7601.23761 - KB4022722 6.2.9200.22070 - KB4022724 6.3.9600.18478 - KB4022726 10.0.14393.1358 - KB4022715 10.0.15063.447 - -
http.sys 6.1.7601.23403 - KB3125574 6.2.9200.17285 - KB3042553 6.3.9600.18574 - KB4022726 10.0.14393.251 - KB4022715 10.0.15063.483 - -
vmswitch.sys 6.1.7601.23727 - KB4022719 6.2.9200.22117 - KB4022724 6.3.9600.18654 - KB4022726 10.0.14393.1358 - KB4022715 10.0.15063.138 - -
核心 ntoskrnl.exe 6.1.7601.23807 - KB4022719 6.2.9200.22170 - KB4022718 6.3.9600.18696 - KB4022726 10.0.14393.1358 - KB4022715 10.0.15063.483 - -
遠端桌面服務 rdpcorets.dll 6.2.9200.21506 - KB4022719 6.2.9200.22104 - KB4022724 6.3.9600.18619 - KB4022726 10.0.14393.1198 - KB4022715 10.0.15063.0 - -
termsrv.dll 6.1.7601.23403 - KB3125574 6.2.9200.17048 - KB2973501 6.3.9600.17415 - KB3000850 10.0.14393.0 - KB4022715 10.0.15063.0 - -
termdd.sys 6.1.7601.23403 - KB3125574 - - - - - -
win32k.sys 6.1.7601.23807 - KB4022719 6.2.9200.22168 - KB4022718 6.3.9600.18698 - KB4022726 10.0.14393.594 - KB4022715 - - -
rdpdd.dll 6.1.7601.23403 - KB3125574 - - - - - -
rdpwd.sys 6.1.7601.23403 - KB3125574 - - - - - -
安全性 MS17-010 KB4012212 KB4012213 KB4012213 KB4012606 KB4012606 - -
KB4012216 KB4013198 KB4013198 - -
KB4012215 KB4012214 KB4012216 KB4013429 KB4013429 - -
KB4012217 KB4013429 KB4013429 - -
CVE-2018-0886 KB4103718 KB4103730 KB4103725 KB4103723 KB4103731 KB4103727 KB4103721
KB4103712 KB4103726 KB4103715

注意

為了避免在 VM 佈建期間意外重新啟動,建議您確保所有 Windows Update 安裝都已完成,且沒有任何擱置中的更新。 其中一種達成方式是在執行 sysprep.exe 命令之前,安裝所有可能的 Windows 更新並重新啟動一次。

判斷使用 Sysprep 的時機

系統準備工具 (sysprep.exe) 是您可以執行以重 設 Windows 安裝的程序。 Sysprep 透過移除所有個人資料和重設數個元件,提供「全新」的體驗。

您通常會執行 sysprep.exe 來建立一個範本,以從中部署數個其他具有特定設定的 VM。 這個範本稱為「一般化映像」

若只要從一個磁碟建立一個 VM,則無須使用 Sysprep。 您可以改從「特殊化映像」建立 VM。 如需如何從特殊化磁碟建立 VM 的相關資訊,請參閱:

若要建立一般化映像,就必須執行 Sysprep。 如需詳細資訊,請參閱如何使用 Sysprep:簡介

並非 Windows 電腦上安裝的每個角色或應用程式都支援一般化映像。 使用此程序之前,請確定 Sysprep 支援此電腦的角色。 如需詳細資訊,請參閱伺服器角色的 Sysprep 支援 \(英文\)。

Sysprep 特別要求磁碟機在執行之前完全解密。 如果您已在 VM 上啟用加密,請先停用再執行 Sysprep。

一般化 VHD

注意

如果您要從現有的 Azure VM 建立一般化映像,建議您先移除 VM 擴充功能,再執行 sysprep。

注意

依照下列步驟執行 sysprep.exe 之後,請關閉 VM。 在從該 VM 在 Azure 中建立映像完成之前,請勿將 VM 重新開啟。

  1. 登入 Windows VM。

  2. 以系統管理員的身分執行 PowerShell 工作階段。

  3. 刪除 panther 目錄 (C:\Windows\Panther)。

  4. 將目錄變更為 %windir%\system32\sysprep。 接著,執行 sysprep.exe

  5. 在 [系統準備工具] 對話方塊中,選取 [進入系統全新體驗 (OOBE)],並確認已勾選 [一般化] 核取方塊。

    System Preparation Tool

  6. 在 [關機選項] 中選取 [關機]

  7. 選取 [確定]。

  8. 當 Sysprep 完成時,關閉 VM。 不要使用 [重新啟動] 來關閉 VM。

現在已準備好上傳 VHD。 如需如何從一般化磁碟建立 VM 的詳細資訊,請參閱將一般化 VHD 上傳,並用其在 Azure 中建立新的 VM

注意

不支援自訂 unattend.xml 檔案。 雖然我們的確有支援 additionalUnattendContent 屬性,但這僅為提供有限的支援,以將 microsoft-windows-shell-setup 選項新增到 Azure 佈建代理程式所使用的 unattend.xml 檔案中。 您可以使用如 additionalUnattendContent 等方式來新增 FirstLogonCommands 和 LogonCommands。 如需詳細資訊,請參閱 additionalUnattendContent FirstLogonCommands 範例

將虛擬磁碟轉換成固定大小的 VHD

注意

如果您要使用 Azure PowerShell 將磁碟上傳至 Azure,並已啟用 Hyper-V,則此為選擇性步驟。 Add-AzVHD 會為您執行此程序。

請使用本節中的其中一種方法,將虛擬磁碟轉換並調整大小為 Azure 所需的格式:

  1. 在執行虛擬磁碟轉換或調整大小流程之前,請先備份 VM。

  2. 請確定 Windows VHD 目前在本機伺服器上正常運作。 先解決 VM 本身的任何錯誤,然後嘗試轉換或上傳至 Azure。

  3. 將虛擬磁碟轉換成固定類型。

  4. 調整虛擬磁碟的大小以符合 Azure 需求:

    1. Azure 中的磁碟必須具有與 1 MiB 對應的虛擬大小。 如果您的 VHD 是 1 MiB 的分數,則必須將磁碟大小調整為 1 MiB 的倍數。 磁碟若為 MiB 的分數,會在從上傳的 VHD 建立映像時導致錯誤。 若要驗證大小,您可以使用 PowerShell 的 Get-VHD Cmdlet 來顯示 "Size",其在 Azure 中必須為 1 MiB 的倍數,而 "FileSize" 則會等於 "Size" 加上供 VHD footer 使用的 512 個位元組。

      $vhd = Get-VHD -Path C:\test\MyNewVM.vhd
      $vhd.Size % 1MB
      0
      $vhd.FileSize - $vhd.Size
      512
      
    2. 配備第 1 代 VM 的 OS VHD,所允許的大小上限為 2,048 GiB (2 TiB),

    3. 資料磁碟的大小上限為 32,767 GiB (32 TiB)。

注意

  • 若您要在轉換為固定磁碟後準備 Windows OS 磁碟,並視需要調整大小,請建立使用此磁碟的 VM。 啟動並登入 VM,然後繼續進行本文中的各節,以完成上傳前的準備。
  • 若您要準備資料磁碟,您可以於本節暫停並繼續上傳磁碟。

使用 Hyper-V 管理員來轉換磁碟。

  1. 開啟 Hyper-V 管理員,然後在左側選取您的本機電腦。 在電腦清單上方的功能表中,選取 [動作]>[編輯磁碟]
  2. 在 [尋找虛擬硬碟] 頁面上,選取您的虛擬磁碟。
  3. 在 [選擇動作] 頁面上,選取[轉換]>[下一步]
  4. 若要從 VHDX 轉換,請選取 [VHD]>[下一步]
  5. 若要從動態擴充磁碟轉換,請選取 [固定大小]>[下一步]
  6. 尋找並選取用於儲存新 VHD 檔案的路徑。
  7. 選取 [完成]。

使用 PowerShell 轉換磁碟

您可以使用 PowerShell 的 Convert-VHD Cmdlet 來轉換虛擬磁碟。 若您需要安裝此 Cmdlet 的相關資訊,請參閱安裝 Hyper-V 角色

注意

如果您要使用 Azure PowerShell 將磁碟上傳至 Azure,並已啟用 Hyper-V,則此為選擇性步驟。 Add-AzVHD 會為您執行此程序。

下列範例會將磁碟從 VHDX 轉換為 VHD。 也會將磁碟從動態擴充磁碟轉換為固定大小磁碟。

Convert-VHD -Path C:\test\MyVM.vhdx -DestinationPath C:\test\MyNewVM.vhd -VHDType Fixed

在此範例中,將 Path 的值取代為您要轉換的虛擬硬碟路徑。 將 DestinationPath 的值取代為轉換後磁碟的新路徑和名稱。

使用 Hyper-V 管理員來調整磁碟大小

注意

如果您要使用 Azure PowerShell 將磁碟上傳至 Azure,並已啟用 Hyper-V,則此為選擇性步驟。 Add-AzVHD 會為您執行此程序。

  1. 開啟 Hyper-V 管理員,然後在左側選取您的本機電腦。 在電腦清單上方的功能表中,選取 [動作]>[編輯磁碟]
  2. 在 [尋找虛擬硬碟] 頁面上,選取您的虛擬磁碟。
  3. 在 [選擇動作] 頁面上,選取[展開]>[下一步]
  4. 在 [尋找虛擬硬碟]頁面上,輸入新的大小 (以 GiB 為單位) >[下一步]
  5. 選取 [完成]。

使用 PowerShell 調整磁碟大小

注意

如果您要使用 Azure PowerShell 將磁碟上傳至 Azure,並已啟用 Hyper-V,則此為選擇性步驟。 Add-AzVHD 會為您執行此程序。

您可以使用 PowerShell 中的 Resize-VHD Cmdlet 來調整虛擬磁碟的大小。 若您需要安裝此 Cmdlet 的相關資訊,請參閱安裝 Hyper-V 角色

下列範例會將磁碟從 100.5 MiB 調整為 101 MiB,以符合 Azure 的對應需求。

Resize-VHD -Path C:\test\MyNewVM.vhd -SizeBytes 105906176

在此範例中,將 Path 的值取代為您要調整大小的虛擬硬碟路徑。 將 SizeBytes 的值取代為磁碟的新大小 (以位元組為單位)。

從 VMware VMDK 磁碟格式進行轉換

如果您有 VMDK 檔案格式的 Windows VM 映像,便能使用 Azure Migrate 轉換 VMDK 並將其上傳至 Azure。

下列設定不會影響 VHD 上傳。 不過,我們強烈建議您設定它們。

  • 安裝 Azure 虛擬機器代理程式。 然後您可以啟用 VM 擴充功能。 VM 擴充功能實作了您可能會希望與 VM 搭配使用的大部分重要功能。 例如,您需要擴充功能來重設密碼或設定 RDP。 如需詳細資訊,請參閱 Azure 虛擬機器代理程式概觀

  • 在 Azure 中建立 VM 之後,我們建議您將分頁檔放在「時態性磁碟區」中,以改善效能。 您可以透過以下方式設定檔案位置:

    Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management' -Name PagingFiles -Value 'D:\pagefile.sys' -Type MultiString -Force
    

    如果沒有任何資料磁碟連接到 VM,暫存磁碟機磁碟區的磁碟機代號通常是 D。根據可用的磁碟機數目和您的設定而定,這項指定可能不同。

    • 建議您停用防毒軟體可能會提供的指令碼封鎖程式。 當您從映像部署新的 VM 時,這些封鎖程式可能會干擾和封鎖已執行的 Windows 佈建代理程式指令碼。

提示

選擇性 請使用 DISM 來最佳化您的映像,縮短虛擬機器的第一次開機時間。

若要最佳化您的映像,請在 Windows 檔案總管中按兩下 VHD 來掛接,然後使用 /optimize-image 參數執行 DISM。

DISM /image:D:\ /optimize-image /boot

其中 D: 是掛接 VHD 的路徑。

執行 DISM /optimize-image 應該是您對 VHD 進行的最後修改。 如果在部署之前對 VHD 進行了任何變更,則需再次執行 DISM /optimize-image

下一步