创建操作系统专用化答案文件

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016

在准备部署受防护的 VM 时,可能需要创建操作系统专用化应答文件。 在 Windows 上,这通常称为“unattend.xml”文件。 New-ShieldingDataAnswerFile Windows PowerShell 函数可帮助你执行此操作。 然后,你可以在使用 System Center Virtual Machine Manager(或任何其他结构控制器)从模板创建受保护虚拟机时使用应答文件。

有关受防护 VM 的应答文件的一般准则,请参阅创建应答文件

下载 New-ShieldingDataAnswerFile 函数

可以从 PowerShell 库中获取 New-ShieldingDataAnswerFile 函数。 如果计算机已建立 Internet 连接,可以使用以下命令从 PowerShell 安装:

Install-Module GuardedFabricTools -Repository PSGallery -MinimumVersion 1.0.0

输出 unattend.xml 可以打包到防护数据以及其他项目中,以便可用于通过模板创建受防护的 VM。

以下各节说明如何使用包含各种选项的 unattend.xml 文件的函数参数:

基本 Windows 应答文件

以下命令创建一个 Windows 应答文件,该文件仅设置管理员帐户密码和主机名。 VM 网络适配器将使用 DHCP 获取 IP 地址,并且 VM 不会加入 Active Directory 域。 当系统提示输入管理员凭据时,请指定所需的用户名和密码。 如果要配置内置管理员帐户,请使用“Administrator”作为用户名。

$adminCred = Get-Credential -Message "Local administrator account"

New-ShieldingDataAnswerFile -Path '.\ShieldedVMAnswerFile.xml' -AdminCredentials $adminCred

具有域加入的 Windows 应答文件

以下命令创建一个 Windows 应答文件,用于将受防护的 VM 加入 Active Directory 域。 VM 网络适配器将使用 DHCP 获取 IP 地址。

第一个凭据提示将要求提供本地管理员帐户信息。 如果要配置内置管理员帐户,请使用“Administrator”作为用户名。

第二个凭据提示将要求提供有权将计算机加入 Active Directory 域的凭据。

请务必将“-DomainName”参数的值更改为 Active Directory 域的 FQDN。

$adminCred = Get-Credential -Message "Local administrator account"
$domainCred = Get-Credential -Message "Domain join credentials"

New-ShieldingDataAnswerFile -Path '.\ShieldedVMAnswerFile.xml' -AdminCredentials $adminCred -DomainName 'my.contoso.com' -DomainJoinCredentials $domainCred

具有静态 IPv4 地址的 Windows 应答文件

以下命令创建一个 Windows 应答文件,该文件使用在部署时由结构管理软件(如 System Center Virtual Machine Manager)提供的静态 IP 地址。

虚拟机管理器使用 IP 池为静态 IP 地址提供三个部分:IPv4 地址、IPv6 地址、网关地址和 DNS 地址。 如果希望包含任何其他字段或需要自定义网络配置,则需要手动编辑脚本生成的应答文件。

以下屏幕截图显示了可以在虚拟机管理器中配置的 IP 池。 如果要使用静态 IP,则这些池是必需的。

目前,此函数仅支持一个 DNS 服务器。 DNS 设置如下所示:

Configuring DNS Server with static IP pool

下面是创建静态 IP 地址池内容的摘要。 简而言之,必须只有一个网络路由、一个网关和一个 DNS 服务器,并且必须指定 IP 地址。

Summary of static IP pool creation

需要为虚拟机配置网络适配器。 以下屏幕截图显示了在何处设置该配置以及如何将其切换到静态 IP。

Configure hardware to use Static IP

然后,可以使用 -StaticIPPool 参数在应答文件中包含静态 IP 元素。 然后,应答文件中的参数 @IPAddr-1@@NextHop-1-1@@DNSAddr-1-1@ 将替换为你在部署时在虚拟机管理器中指定的实际值。

$adminCred = Get-Credential -Message "Local administrator account"

New-ShieldingDataAnswerFile -Path '.\ShieldedVMAnswerFile.xml' -AdminCredentials $adminCred -StaticIPPool IPv4Address

具有自定义区域设置的 Windows 应答文件

以下命令使用自定义区域设置创建 Windows 应答文件。

当系统提示输入管理员凭据时,请指定所需的用户名和密码。 如果要配置内置管理员帐户,请使用“Administrator”作为用户名。

$adminCred = Get-Credential -Message "Local administrator account"
$domainCred = Get-Credential -Message "Domain join credentials"

New-ShieldingDataAnswerFile -Path '.\ShieldedVMAnswerFile.xml' -AdminCredentials $adminCred -Locale es-ES

基本 Linux 应答文件

从 Windows Server 版本 1709 开始,可以在受防护的 VM 中运行某些 Linux 来宾 OS。 如果使用 System Center Virtual Machine Manager Linux 代理来专用化这些 VM,那么 New-ShieldingDataAnswerFile cmdlet 可以为其创建兼容的应答文件。

在 Linux 应答文件中,通常包括根密码、根 SSH 密钥和可选的静态 IP 池信息。 在运行下面的脚本之前,请替换 SSH 密钥公共部分的路径。

$rootPassword = Read-Host -Prompt "Root password" -AsSecureString

New-ShieldingDataAnswerFile -Path '.\ShieldedVMAnswerFile.xml' -RootPassword $rootPassword -RootSshKey '~\.ssh\id_rsa.pub'

其他参考