如何将PowerShell命令写入Sysprep部署脚本以在Windows Server 2022首次开机执行
Windows Server 2022 SysPrep 集成命令配置方案
1. 构造可静默执行的PowerShell调用命令
需要添加执行策略绕过、非交互、不加载用户配置的启动参数,避免首次登录时执行被拦截或弹窗:
powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -Command "Get-AppXPackage -AllUsers | Where-Object {$_.InstallLocation -like '*SystemApps*'} | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register '$($_.InstallLocation)\AppXManifest.xml'}"
如果需要留存执行日志排查问题,可以在命令末尾追加日志输出参数:
powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -Command "Get-AppXPackage -AllUsers | Where-Object {$_.InstallLocation -like '*SystemApps*'} | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register '$($_.InstallLocation)\AppXManifest.xml'}" >> C:\appx_repair.log 2>&1
2. 配置unattend.xml应答文件节点
将上述命令填入FirstLogonCommands下的SynchronousCommand区域,示例配置如下:
<component name="Microsoft-Windows-Shell-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"> <FirstLogonCommands> <SynchronousCommand wcm:action="add"> <CommandLine>替换为第一步构造的完整powershell调用命令</CommandLine> <Description>重新注册所有系统内置AppX应用</Description> <Order>1</Order> <WillReboot>Never</WillReboot> </SynchronousCommand> </FirstLogonCommands> </component>
注意
值根据你已有命令的顺序调整即可。
3. 执行有效性校验要求
- 首次自动登录的账户必须拥有本地管理员权限,否则
-AllUsers参数会因权限不足执行失败 - 不要移除
-NonInteractive参数,否则PowerShell会因无交互环境抛出异常直接退出 - 如果系统预置了脚本限制规则,需提前在SysPrep封装阶段放开PowerShell的执行权限
- 应答文件的
processorArchitecture属性要和你部署的Server 2022架构匹配,64位版本填amd64即可
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

