如何使用Powershell从我的本地计算机在Azure Windows虚拟机(VM)中运行“sysprep /generalize”?

92vpleto  于 2022-12-14  发布在  Shell
关注(0)|答案(2)|浏览(218)

我有一个Windows Azure虚拟机,需要通过Powershell在管理模式下从本地计算机执行“%windir%\system32\sysprep”,然后执行“sysprep /generalize”。如何执行该操作?

ctrmrzij

ctrmrzij1#

对于您的要求,据我所知您可以使用PowerShell脚本来实现它。首先,您可以看一下Sysprep,它可以在PowerShell命令C:\WINDOWS\system32\sysprep\sysprep.exe /generalize /shutdown /oobe中运行。将此命令放在一个脚本内,然后您可以使用两种方法从您的本地机器在VM中运行此脚本。一种是使用Invoke命令。
在Azure CLI中:

az vm run-command invoke --command-id RunPowerShellScript -g group_name -n vm_name --scripts @script.ps1

在PowerShell中:

Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RunPowerShellScript' -ScriptPath 'sample.ps1'

另一个是使用VM扩展。它有点复杂。你可以看看Azure PowerShell命令Set-AzVMCustomScriptExtension
运行后的输出:-

Value[0]        : 
  Code          : ComponentStatus/StdOut/succeeded
  Level         : Info
  DisplayStatus : Provisioning succeeded
  Message       : 
Value[1]        : 
  Code          : ComponentStatus/StdErr/succeeded
  Level         : Info
  DisplayStatus : Provisioning succeeded
  Message       : 
Status          : Succeeded
Capacity        : 0
Count           : 0
i2loujxw

i2loujxw2#

我无法使sysprep与Invoke-AzVMRunCommand一起工作,它以成功状态运行,但VM未关闭。
最后找到了https://developercommunity.visualstudio.com/t/devops-sysprep-public-agents/1375989和它讲得通。
因此,仅仅使用Invoke-AzVMRunCommand来运行sysprep是行不通的,我认为重置本地管理员用户密码并以本地管理员身份运行该进程可能是一种解决办法。

相关问题