Microsoft 许可证如何与 MDT 和 WDS 部署配合使用?

Microsoft 许可证如何与 MDT 和 WDS 部署配合使用?

问题如下:

我的公司购买了几台笔记本电脑(Acer、Lenovo),这些笔记本电脑都已安装 Windows 10 专业版,因此​​当您第一次启动 PC 时,您会进入经典的 OOBE 环境(选择国家、键盘、cortana......)

越来越多的笔记本电脑(与我之前描述的一样)即将问世。因此,我希望拥有定制的 Windows,以避免重复配置每台 PC 并浪费时间。

为此,我已经准备好了 WDS + MDT 服务器。我的想法是创建一个主映像并部署它。问题是:我的主映像没有许可证密钥,但由于我知道我的笔记本电脑已经使用 OEM 许可证激活了 Windows,所以我认为安装主映像后,OEM 许可证密钥(存储在 BIOS 中)将自行重新激活。

但经过一番研究后发现,这并不是“微软的方式”,事实上,我打算做的事情很可能是非法的。

所以我想要一个答案:使用 WDS 部署自定义 Windows 映像是否需要特殊许可证?

感谢您的阅读和最终的答复。

答案1

归根结底,Windows Professional 已获得在笔记本电脑上使用的许可。无论您如何将操作系统安装在笔记本电脑上,它始终都会获得在该硬件上使用的许可。您尝试做的事情并不违法,事实上,这是一种极为常见的情况。

我们采用完全零接触体验来部署所有新系统。

我们在 shell-setup 部分下的 specialize pass 中的 unattend.xml 中嵌入了通用的 Windows 10 Pro 产品密钥(VK7JG-NPHTM-C97JM-9MPGT-3V66T),这足以绕过部署期间的产品密钥问题。

我们在“状态恢复”部分的部署任务中创建了一个附加步骤,该步骤运行以下 powershell 脚本以使用嵌入式产品密钥激活系统:

#This script performs automatic activation during windows deployments.
#It will check if Windows is activated, if not it will try to activate with the BIOS key.

#Activation function, installs the specified product key and returns true or false if activated successfully.
function Activate
{
    #If $key doesn't exist we can't activate
    if (-not $key) { return }
    
    try
    {
    $instance = (Get-WmiObject -query 'select * from SoftwareLicensingService')
    $instance.InstallProductKey($key)
    $instance.RefreshLicenseStatus()
    } catch { return }
}

#First check and see if windows is already activated.
if (Get-WmiObject SoftwareLicensingProduct | where {$_.PartialProductKey -and $_.Name -like "*Windows*" -and ($_.LicenseStatus -eq 1 -or $_.LicenseStatus -eq 2)})
{
    #Host is already activated.
    exit
}

#Check for a BIOS key - if it exists, this is what we are going to use first.
$key = (Get-WmiObject -query 'select * from SoftwareLicensingService').OA3xOriginalProductKey

if ($key) 
{
    #BIOS Key exists - use it
    if (Activate $key) { exit }
}

您可以在此脚本中看到证据,该脚本检查 BIOS 密钥是否存在以及激活是否成功:

if ($key) 
{
    #BIOS Key exists - use it
    if (Activate $key) { exit }
}

我们曾经也有 Windows 7 笔记本电脑,我们正在重新部署 Windows 10。因此,我们还有一个 Windows 10 的批量许可证密钥,并且代码经过了修改,以便如果不存在 BIOS 密钥,我们将使用Activate批量许可证密钥调用该函数:

if ($key) 
{
    #BIOS Key exists - use it
    if (Activate $key) { exit }
}
else
{
    #BIOS Key does not exist - Use VLK
    if (Activate 'xxxxx-xxxxx-xxxxx-xxxxx-xxxxx') { exit }
}

如果激活失败,您可以添加额外的逻辑,如 if 语句所示:

if (Activate 'xxxxx-xxxxx-xxxxx-xxxxx-xxxxx') { exit }

并且,您可以更进一步,使部署任务中的这一步需要特定的退出代码,如果失败,部署任务可以在流程结束时发出警告或失败,提醒您激活问题。

使用通用产品密钥后,BIOS 激活总是有点不稳定。可能这个脚本根本不需要了,Windows 之后会自动激活。我认为这不太可能,因为 Windows 已经接受了(无效的)通用密钥,不会尝试替换它,因此需要脚本来执行此操作。

答案2

如果您在 windowsPE 部分中输入“[KEY]”作为产品密钥,它将自动提取 bios 密钥来激活 windows。有两个地方可以放置产品密钥,因此请确保将其设置在 windowsPE 部分中,另一个部分则不需要。

以下是 xml 文件的示例

<settings pass="windowsPE">
    <component name="Microsoft-Windows-Setup">
        <ProductKey>
            <Key>[KEY]</Key>
            <WillShowUI>OnError</WillShowUI>
        </ProductKey>
    </component>
</settings>

相关内容