尝试 RDP 到 Azure 中的 Windows VM 时出现错误:CredSSP 加密 oracle 修正

本文针对以下问题提供了解决方案:你无法通过使用 RDP 连接到虚拟机 (VM),并显示 CredSSP 加密 oracle 修正错误。

原始产品版本: 运行 Windows 的虚拟机
原始 KB 编号: 4295591

注意

本文是否有帮助? 你的输入对我们很重要。 请使用此页面上的 “反馈 ”按钮,让我们了解本文对你的影响,或者我们如何改进它。

症状

请考虑以下情况:

在这种情况下,您会收到以下错误消息:

发生了身份验证错误。 不支持请求的函数。 远程计算机: <计算机名称或 IP>。 这可能由 CredSSP 加密 oracle 修正引起的。 有关详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=866660

如何验证是否已安装 CredSSP 更新。

检查更新历史记录中是否有以下更新,或检查位于 的 %systemroot%\system32TSpkg.dll 版本。

操作系统 带有 CredSSP 更新的 TSpkg.dll 版本 CredSSP 更新
Windows 7 Service Pack 1 / Windows Server 2008 R2 Service Pack 1 6.1.7601.24117 KB4103718(月度汇总)
KB4103712(仅安全更新)
Windows Server 2012 6.2.9200.22432 KB4103730(月度汇总)
KB4103726(仅安全更新)
Windows 8.1 / Windows Server 2012 R2 6.3.9600.18999 KB4103725(月度汇总)
KB4103715(仅安全更新)
RS1 - Windows 10 版本 1607 / Windows Server 2016 10.0.14393.2248 KB4103723
RS2 - Windows 10 版本 1703 10.0.15063.1088 KB4103731
RS3 - Windows 10 1709 10.0.16299.431 KB4103727

原因

如果尝试建立不安全的 RDP 连接,并且服务器或客户端上的加密 Oracle 修正策略设置阻止该不安全的 RDP 连接,则会发生此错误。 此设置定义如何使用 CredSSP 生成 RDP 会话,以及是否允许不安全的 RDP。

下表总结了基于 CredSSP 更新状态和 CredSSP 策略设置 (AllowEncryptionOracle 值) RDP 连接的行为:

服务器 CredSSP 更新状态 客户端 CredSSP 更新状态 强制更新的客户端 (0) 缓解 (1) 易受攻击 (2)
已安装 阻止 允许1 允许
已安装 2 阻止 允许
已安装 已安装 允许 允许 允许

示例

1 服务器已安装 CredSSP 更新,并在服务器端将 “加密 Oracle 修正 ”设置为 “缓解 ”。 服务器将从未安装 CredSSP 更新的客户端建立 RDP 连接。

2 客户端已安装 CredSSP 更新,并且 加密 Oracle 修正 在客户端设置为 “强制更新的客户端 ”或“ 缓解 ”。 此客户端无法连接到未安装 CredSSP 更新的服务器。

解决方案

要解决此问题,请同时为客户端和服务器安装 CredSSP 更新,以便以安全的方式建立 RDP。 有关详细信息,请参阅 CVE-2018-0886 | CredSSP 远程代码执行漏洞

如何使用 Azure 串行控制台安装此更新

  1. 登录到 Azure 门户,选择“虚拟机”,然后选择 VM。

  2. 向下滚动到 “帮助 ”部分,然后单击“ 串行控制台”。 串行控制台需要在 Windows VM 中启用特殊管理控制台 (SAC)。 如果在控制台 (中看不到 SAC> ,如以下屏幕截图) 所示,请转到本文中的“如何使用远程 PowerShell 安装此更新”部分。

    已连接 SAC 的屏幕截图。

  3. 键入 cmd 以启动具有 CMD 实例的通道。

  4. 键入 ch -si 1 以切换到运行 CMD 实例的通道。 你会收到以下输出:

    在 SAC 中启动 CMD 的屏幕截图。

  5. 按 Enter,然后输入具有管理权限的登录凭据。

  6. 输入有效凭据后,CMD 实例将打开,你将看到可在其中开始疑难解答的命令。

    SAC 中 CMD 部分的屏幕截图。

  7. 要启动 PowerShell 实例,请键入 PowerShell

  8. 在 PowerShell 实例中,运行基于 VM 操作系统的串行控制台脚本。 此脚本将执行以下步骤:

    • 创建用于保存下载文件的文件夹。
    • 下载更新。
    • 安装该更新。
    • 添加漏洞密钥以允许未更新的客户端连接到 VM。
    • 重新启动 VM

如何使用远程 PowerShell 安装此更新

  1. 在任何已安装 PowerShell 的基于 Windows 的计算机上,将 VM 的 IP 地址添加到主机文件的“受信任”列表中,如下所示:

    Set-item wsman:\localhost\Client\TrustedHosts -value <IP>
    
  2. 在 Azure 门户中,在 VM 上配置网络安全组以允许流量进入端口 5986。

  3. 在Azure 门户中,选择“虚拟机><VM>”,向下滚动到“操作”部分,单击“运行”命令,然后运行 EnableRemotePS

  4. 在基于 Windows 的计算机上,为 VM 的适当系统版本运行远程 PowerShell 脚本。 此脚本会执行以下步骤:

    • 连接到 VM 上的远程 PowerShell。
    • 创建用于保存下载文件的文件夹。
    • 下载 Credssp 更新。
    • 安装该更新。
    • 设置漏洞注册表项以允许未更新的客户端连接到 VM。
    • 启用串行控制台,以便将来更容易缓解。
    • 重新启动 VM。

解决方法

警告

更改以下设置后,允许使用不安全的连接,这会将远程服务器暴露在攻击之下。 请仔细遵循本部分中的步骤进行操作。 对注册表修改不当可能会导致严重问题。 修改之前,备份注册表以便在发生问题时进行还原

情境 1:更新后的客户端无法与未更新的服务器通信

最常见的情境是,客户端安装了 CredSSP 更新,并且加密 Oracle 修正修正策略设置不允许不安全的 RDP 连接到未安装 CredSSP 更新的服务器。

若要解决此问题,请按照下列步骤操作:

  1. 在安装了 CredSSP 更新的客户端上,运行 gpedit.msc,然后在导航窗格中浏览到计算机配置>管理模板>系统>凭据分配

  2. 加密 Oracle 修正策略更改为“启用”,然后将“保护级别”更改为“脆弱”。

    如果无法使用 gpedit.msc,则可以使用注册表进行相同的变更,如下所示:

    1. 以管理员身份打开命令提示符窗口。

    2. 运行以下命令以添加注册表值:

      REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters\ /v AllowEncryptionOracle /t REG_DWORD /d 2
      

情境 2:未更新的客户端无法与已修补的服务器通信

如果 Azure Windows VM 已安装此更新,并且它被限制接收未更新的客户端,请按照以下步骤更改加密 Oracle 修正策略设置:

  1. 在任何已安装 PowerShell 的 Windows 计算机上,将 VM 的 IP 添加到主机文件的“受信任”列表中:

    Set-item wsman:\localhost\Client\TrustedHosts -value <IP>
    
  2. 转到 Azure 门户,找到 VM,然后更新网络安全组以允许 PowerShell 端口 5985 和 5986。

  3. 在 Windows 计算机上,使用 PowerShell 连接到 VM:

    对于 HTTP:

    $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<Public IP>>" -port "5985" -Credential (Get-Credential) -SessionOption $Skip
    

    对于 HTTPS:

    $Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck Enter-PSSession -ComputerName "<<Public IP>>" -port "5986" -Credential (Get-Credential) -useSSL -SessionOption $Skip
    
  4. 运行以下命令以使用注册表更改加密 Oracle 修正策略设置:

    Set-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters' -name "AllowEncryptionOracle" 2 -Type DWord
    

Azure 串行控制台脚本

操作系统版本 Script
Windows 7 Service Pack 1 / Windows Server 2008 R2 Service Pack 1 #创建下载位置
md c:\temp

##下载 KB 文件
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows6.1-kb4103718-x64_c051268978faef39e21863a95ea2452ecbc0936d.msu"
$destination = "c:\temp\windows6.1-kb4103718-x64_c051268978faef39e21863a95ea2452ecbc0936d.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)

#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows6.1-KB4103718-x64.cab"

#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2

#重启 VM 完成安装/设置
shutdown /r /t 0 /f
Windows Server 2012
#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/04/windows8-rt-kb4103730-x64_1f4ed396b8c411df9df1e6755da273525632e210.msu"
$destination = "c:\temp\windows8-rt-kb4103730-x64_1f4ed396b8c411df9df1e6755da273525632e210.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows8-RT-KB4103730-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

Windows 8.1 / Windows Server 2012 R2
#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows8.1-kb4103725-x64_cdf9b5a3be2fd4fc69bc23a617402e69004737d9.msu"
$destination = "c:\temp\windows8.1-kb4103725-x64_cdf9b5a3be2fd4fc69bc23a617402e69004737d9.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows8.1-KB4103725-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

RS1 - Windows 10 版本 1607 / Windows Server 2016
#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows10.0-kb4103723-x64_2adf2ea2d09b3052d241c40ba55e89741121e07e.msu"
$destination = "c:\temp\windows10.0-kb4103723-x64_2adf2ea2d09b3052d241c40ba55e89741121e07e.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103723-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

RS2 - Windows 10 版本 1703
#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/05/windows10.0-kb4103731-x64_209b6a1aa4080f1da0773d8515ff63b8eca55159.msu"
$destination = "c:\temp\windows10.0-kb4103731-x64_209b6a1aa4080f1da0773d8515ff63b8eca55159.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103731-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

RS3 - Windows 10 版本 1709 / Windows Server 2016 版本 1709
#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/05/windows10.0-kb4103727-x64_c217e7d5e2efdf9ff8446871e509e96fdbb8cb99.msu"
$destination = "c:\temp\windows10.0-kb4103727-x64_c217e7d5e2efdf9ff8446871e509e96fdbb8cb99.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103727-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

RS4 - Windows 10 1803 / Windows Server 2016 版本 1803
#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/05/windows10.0-kb4103721-x64_fcc746cd817e212ad32a5606b3db5a3333e030f8.msu"
$destination = "c:\temp\windows10.0-kb4103721-x64_fcc746cd817e212ad32a5606b3db5a3333e030f8.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103721-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

远程 PowerShell 脚本

OS 版本 Script
Windows 7 Service Pack 1 / Windows Server 2008 R2 Service Pack 1
#设置变量:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #如果你在 PowerShell 上自定义 HTTPS 到另一个端口,请更改此变量


#Log 订阅
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID


#连接远程 PowerShell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip


#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows6.1-kb4103718-x64_c051268978faef39e21863a95ea2452ecbc0936d.msu"
$destination = "c:\temp\windows6.1-kb4103718-x64_c051268978faef39e21863a95ea2452ecbc0936d.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows6.1-KB4103718-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#设置 Azure 串行控制台标志
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

Windows Server 2012
#设置变量:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #如果你在 PowerShell 上自定义 HTTPS 到另一个端口,请更改此变量


#Log 订阅
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID


#连接远程 PowerShell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip


#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/04/windows8-rt-kb4103730-x64_1f4ed396b8c411df9df1e6755da273525632e210.msu"
$destination = "c:\temp\windows8-rt-kb4103730-x64_1f4ed396b8c411df9df1e6755da273525632e210.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows8-RT-KB4103730-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#设置 Azure 串行控制台标志
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

Windows 8.1 / Windows Server 2012 R2
#设置变量:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #如果你在 PowerShell 上自定义 HTTPS 到另一个端口,请更改此变量


#Log 订阅
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID


#连接远程 PowerShell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip


#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows8.1-kb4103725-x64_cdf9b5a3be2fd4fc69bc23a617402e69004737d9.msu"
$destination = "c:\temp\windows8.1-kb4103725-x64_cdf9b5a3be2fd4fc69bc23a617402e69004737d9.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows8.1-KB4103725-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#设置 Azure 串行控制台标志
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

RS1 - Windows 10 版本 1607 / Windows Server 2016
#设置变量:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #如果你在 PowerShell 上自定义 HTTPS 到另一个端口,请更改此变量


#Log 订阅
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID


#连接远程 PowerShell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip


#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/d/msdownload/update/software/secu/2018/05/windows10.0-kb4103723-x64_2adf2ea2d09b3052d241c40ba55e89741121e07e.msu"
$destination = "c:\temp\windows10.0-kb4103723-x64_2adf2ea2d09b3052d241c40ba55e89741121e07e.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103723-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#设置 Azure 串行控制台标志
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

RS2 - Windows 10 版本 1703
#设置变量:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #如果你在 PowerShell 上自定义 HTTPS 到另一个端口,请更改此变量


#Log 订阅
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID


#连接远程 PowerShell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip


#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/05/windows10.0-kb4103731-x64_209b6a1aa4080f1da0773d8515ff63b8eca55159.msu"
$destination = "c:\temp\windows10.0-kb4103731-x64_209b6a1aa4080f1da0773d8515ff63b8eca55159.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103731-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#设置 Azure 串行控制台标志
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

RS3 - Windows 10 版本 1709 / Windows Server 2016 版本 1709
#设置变量:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #如果你在 PowerShell 上自定义 HTTPS 到另一个端口,请更改此变量


#Log 订阅
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID


#连接远程 PowerShell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip


#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/05/windows10.0-kb4103727-x64_c217e7d5e2efdf9ff8446871e509e96fdbb8cb99.msu"
$destination = "c:\temp\windows10.0-kb4103727-x64_c217e7d5e2efdf9ff8446871e509e96fdbb8cb99.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103727-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#设置 Azure 串行控制台标志
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

RS4 - Windows 10 1803 / Windows Server 2016 版本 1803
#设置变量:
$subscriptionID = "<your subscription ID>"
$vmname = "<IP of your machine or FQDN>"
$PSPort = "5986" #如果你在 PowerShell 上自定义 HTTPS 到另一个端口,请更改此变量


#Log 订阅
Add-AzureRmAccount
Select-AzureRmSubscription -SubscriptionID $subscriptionID
Set-AzureRmContext -SubscriptionID $subscriptionID


#连接远程 PowerShell
$Skip = New-PSSessionOption -SkipCACheck -SkipCNCheck
Enter-PSSession -ComputerName $vmname -port $PSPort -Credential (Get-Credential) -useSSL -SessionOption $Skip


#创建下载位置
md c:\temp


##下载 KB 文件
$source = "http://download.windowsupdate.com/c/msdownload/update/software/secu/2018/05/windows10.0-kb4103721-x64_fcc746cd817e212ad32a5606b3db5a3333e030f8.msu"
$destination = "c:\temp\windows10.0-kb4103721-x64_fcc746cd817e212ad32a5606b3db5a3333e030f8.msu"
$wc = New-Object System.Net.WebClient
$wc.DownloadFile($source,$destination)


#安装 KB
expand -F:* $destination C:\temp\
dism /ONLINE /add-package /packagepath:"c:\temp\Windows10.0-KB4103721-x64.cab"


#添加漏洞密钥以允许未修补的客户端
REG ADD "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters" /v AllowEncryptionOracle /t REG_DWORD /d 2


#设置 Azure 串行控制台标志
cmd
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 5
bcdedit /set {bootmgr} bootems yes
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200


#重启 VM 完成安装/设置
shutdown /r /t 0 /f

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 还可以向 Azure 反馈社区提交产品反馈。