我尝试在 Server 2012 的 autounattend.xml 安装期间在第二个和第三个磁盘上设置多个驱动器号(整个磁盘分区)。
分区已创建并格式化。但是,当我第一次登录时,驱动器(磁盘 1 和 2)被标记为“离线”。如果我通过磁盘管理手动将它们标记为在线,它们将被分配正确的驱动器号,一切正常。
我尝试将一个简单的 diskpart 脚本添加到 SetupComplete.cmd,但没有成功。这是我的 SetupComplete.cmd 文件,它不起作用:
mkdir c:\temp
echo select disk 1 >> c:\temp\dp.txt
echo online disk >> c:\temp\dp.txt
echo select disk 2 >> c:\temp\dp.txt
echo online disk >> c:\temp\dp.txt
diskpart /s c:\temp\dp.txt
但是,如果我第一次登录时运行此文件,它确实有效!有没有办法使用 autounattend.xml 或脚本来设置其他分区?
以下是 autounattend.xml 中的相关部分:
<component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DiskConfiguration>
<WillShowUI>OnError</WillShowUI>
<Disk wcm:action="add">
<CreatePartitions>
<CreatePartition wcm:action="add">
<Order>1</Order>
<Size>350</Size>
<Type>Primary</Type>
</CreatePartition>
<CreatePartition wcm:action="add">
<Order>2</Order>
<Extend>true</Extend>
<Type>Primary</Type>
</CreatePartition>
</CreatePartitions>
<ModifyPartitions>
<ModifyPartition wcm:action="add">
<Active>true</Active>
<Label>Boot</Label>
<Format>NTFS</Format>
<Order>1</Order>
<PartitionID>1</PartitionID>
</ModifyPartition>
<ModifyPartition wcm:action="add">
<Format>NTFS</Format>
<Order>2</Order>
<PartitionID>2</PartitionID>
<Label>System</Label>
</ModifyPartition>
</ModifyPartitions>
<DiskID>0</DiskID>
<WillWipeDisk>true</WillWipeDisk>
</Disk>
<Disk wcm:action="add">
<CreatePartitions>
<CreatePartition wcm:action="add">
<Order>1</Order>
<Type>Primary</Type>
<Extend>true</Extend>
</CreatePartition>
</CreatePartitions>
<ModifyPartitions>
<ModifyPartition wcm:action="add">
<Format>NTFS</Format>
<Label>WorkSpace</Label>
<Letter>Y</Letter>
<Order>1</Order>
<PartitionID>1</PartitionID>
<Active>true</Active>
</ModifyPartition>
</ModifyPartitions>
<DiskID>1</DiskID>
<WillWipeDisk>true</WillWipeDisk>
</Disk>
<Disk wcm:action="add">
<CreatePartitions>
<CreatePartition wcm:action="add">
<Order>1</Order>
<Type>Primary</Type>
<Extend>true</Extend>
</CreatePartition>
</CreatePartitions>
<ModifyPartitions>
<ModifyPartition wcm:action="add">
<Format>NTFS</Format>
<Label>TempDB</Label>
<Letter>T</Letter>
<Order>1</Order>
<PartitionID>1</PartitionID>
<Active>true</Active>
</ModifyPartition>
</ModifyPartitions>
<DiskID>2</DiskID>
<WillWipeDisk>true</WillWipeDisk>
</Disk>
</DiskConfiguration>
<ImageInstall>
<OSImage>
<InstallTo>
<PartitionID>2</PartitionID>
<DiskID>0</DiskID>
</InstallTo>
<InstallToAvailablePartition>false</InstallToAvailablePartition>
<WillShowUI>OnError</WillShowUI>
<InstallFrom>
<MetaData wcm:action="add">
<Key>/IMAGE/NAME</Key>
<Value>Windows Server 2012 SERVERSTANDARD</Value>
</MetaData>
</InstallFrom>
</OSImage>
</ImageInstall>
<UserData>
<ProductKey>
<Key>48HP8-DN98B-MYWDG-T2DCC-8W83P</Key>
<WillShowUI>OnError</WillShowUI>
</ProductKey>
<AcceptEula>true</AcceptEula>
<FullName>--</FullName>
<Organization>--</Organization>
</UserData>
<UseConfigurationSet>true</UseConfigurationSet>
</component>
答案1
这可能是因为某些 Windows 服务器的 SKU 默认将 San 策略设置为“OfflineShared”。这是默认设置,因为如果磁盘在服务器之间共享(除非是集群的一部分),则如果将设置更改为“OnlineAll”,则可能会发生数据损坏。
这Microsoft 支持文章解释了该问题,并通过此示例无人参与代码片段向您展示如何执行此操作:
<component name="Microsoft-Windows-PartitionManager"
publicKeyToken="31bf3856ad364e35"
language="neutral"
versionScope="nonSxS"
processorArchitecture="x86">
<SanPolicy>1</SanPolicy>
</component>
安装后还会有警告将此策略重置回“OfflineShared”,以避免可能发生的数据损坏问题。
虽然本文档专门针对 Windows Server 2008/2008R2,但它仍然与 Windows Server 2012 相关,如这篇 TechNet 文章。
此外,在您发布的 autounattend.xml 部分中,您将其他磁盘上的分区标记为活动分区。除非您要启动这些磁盘上的其他操作系统,否则应避免将这些分区标记为活动分区。
有关使用应答文件部署 Windows 的更多信息,请访问跳板系列TechNet 上的页面。
希望这可以帮助
答案2
建议的解决方案对我不起作用:(我使用了 FirstLogonCommands 部分中的命令
<SynchronousCommand wcm:action="add">
<CommandLine>C:\Windows\SysWOW64\cmd.exe /c powershell -Command "Get-Disk | Where-Object Number -Eq 1 | Set-Disk -IsOffline $False"</CommandLine>
<Description>Sets online the D: drive</Description>
<Order>24</Order>
<RequiresUserInput>false</RequiresUserInput>
</SynchronousCommand>