截至目前,我有一个 Powershell 3.0 脚本配置和创建服务器。我想要做的是添加一个 Unattended.xml 以更进一步(这样我就不必继续单击下一步/选择磁盘/等等)+ 进行 Windows 安装,我该怎么做呢?
脚本运行良好,我只想能够自动完成整个过程。我可以阅读 unattended.xml 文件,但我主要关心的是如何将其插入到此脚本中,我读过有关使用 unattended.xml 附加软盘的信息,但我并不完全确定。
#Variables
$VHDBool = 1 #Bool asking for a Non-VHD Linked VM
#Ask for Name of VM
$VMNAME = Read-Host "Enter the Name of the Server You would Like to Set up: "
#Ask for Memory Requirements of VM
[int64]$VMMEMpre = Read-Host "Ok now Enter the Memory in GB you would like to allocate: (Press [Enter] for 512MB)"
if ($VMMEMpre -eq ""){$VMMEM=512MB} ; if ($VMMEMpre -eq $NULL) {$VMMEM=512MB}
[int64]$MEMALL = 1073741824
[int64]$VMMEM = $VMMEMpre * $MEMALL
#Ask for Boot Device for VM, Should be left to CD for ISO's
$VMBOOT = Read-Host "Select a Boot Device (CD, Floppy, LegacyNetworkAdapter, and IDE), Default is CD: "
if ($VMBOOT -eq ""){$VMBOOT="CD"} ; if ($VMBOOT -eq $NULL){$VMBOOT="CD"}
#Ask for path to VM File Storage
$VMSTO = Read-Host "Enter Directory to Store new Files: (c:\storage for example, Default is c:\VMfiles)"
if ($VMSTO -eq ""){$VMSTO="c:\VMfiles"} ; if ($VMSTO -eq $NULL){$VMSTO="c:\VMfiles"}
#Ask For path to store VHDX File, or NO to not link one
$VHDXLOC = Read-Host "Enter the Path to Store your VHDX File: (c:\base.vhdx for example or enter NO for NO VHD)"
if ($VHDXLOC -eq "NO") {$VHDBOOL = 0}
#Ask for HD Space (If applicable) for VHD
if ($VHDXLOC -ne "NO"){
[int64]$VMHDpre = Read-Host "Enter The Amount of Hard Disk Space you would like allocated to the VM: (Default is 40GB)"
if ($VMHDpre -eq ""){$VMHD=40GB} ; if ($VMHDpre -eq $NULL) {$VMHD=40GB}
}
[int64]$VMHD = $VMHDpre * $MEMALL
#Creates VM (With VHDX)
if ($VHDBOOL -eq 1){
New-VM -Name $VMNAME -MemoryStartupBytes $VMMEM -BootDevice $VMBOOT -path $VMSTO -NewVHDSizeBytes $VMHD –NewVHDPath $VHDXLOC}
#Creates VM (Without VHDX)
if ($VHDBOOL -eq 0){
New-VM -Name $VMNAME -MemoryStartupBytes $VMMEM -BootDevice $VMBOOT -path $VMSTO –NoVHD}
#Ask for Location of ISO
$ISOLOC = Read-Host "Enter the Location of the ISO you would Like to Install: (c:\ISOFILE\Windows_NAME.iso)"
#Installs ISO Via Location
Set-VMDvdDrive -VMName $VMNAME -Path $ISOLOC
#Start the Server
Start-VM -Name $VMNAME
答案1
我认为最简单的方法是分别创建 VHD 和 VM。然后,在启动 VM 之前,安装 VHD 并将 unattend.xml 文件放在其上。(Mount-vhd 是您想要的 cmdlet。)然后卸载 VHD 并将其附加到 VM,这是 VM 创建的最后一部分。
您可以对虚拟软盘映像执行相同操作,但由于没有本地挂载选项,而且它只会增加您处理的虚拟磁盘映像的数量,因此它会稍微复杂一些。
将无人值守文件放入 VHD 后,您可以使用“dismount-vhd”cmdlet 卸载 VHD。然后使用“add-vmharddiskdrive”cmdlet 将其附加到您创建的 VM。
答案2
我用一个脚本来回答这个问题,这个脚本可以创建 ISO 文件。当我将带有 unattend.xml 的 VHD 附加到 VM 时,它不会使用它。当我将第二张 DVD 添加到 VM 时,它可以正常使用。
我正在进行的项目的想法是从一个裸机盒、一个带有 Hyper-V 2012 和 Win2012、我的脚本和一个 config.xml 的闪存驱动器开始。
该脚本从 XML 中取出虚拟机配置,构建第一个虚拟机配置,根据主机名插入 firstlogon 命令,然后转到下一个虚拟机。完成后我会在 TechNet 上发布它,但 ISO 创建脚本不是我的。如果您在 TechNet 上以我的名字查找,我已将其链接在那里。
答案3
您可以在已安装的虚拟机上手动创建新的软盘驱动器,它将在虚拟机内显示为磁盘 A:。然后您可以登录虚拟机,格式化磁盘 A:,并将您的 unattended.xml 放在那里的根文件夹中。之后,您只需分离虚拟软盘即可。
稍后,您可以使用 Set-VMFloppyDiskDrive 命令行程序和带有操作系统的 ISO 将此软盘插入新创建的 VM。操作系统将自动从软盘中选择配置。