我在 Azure 中有多个虚拟机,我想使用 winget 升级来更新所有应用程序。这些虚拟机运行的是 Windows Server 2016/2022,我已在其上手动安装了 winget。当我登录到机器时,我可以毫无问题地执行 winget 命令。 但是,我想使用 Invoke-AzVMRunCommand 运行 winget 升级,但我不断收到以下消息,但没有任何反应:
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
我还尝试使用 winget 安装单个应用程序或使用 -o 将输出写入文件,但该文件仍然为空,并且没有安装任何内容。
Invoke-AzVMRunCommand -ResourceGroupName $rgName -VMName $vmName -CommandId 'RunPowerShellScript' -ScriptString 'winget install Microsoft.Azure.StorageExplorer'
即使在查询版本时,我也收到相同的成功消息。
Invoke-AzVMRunCommand -ResourceGroupName $rgName -VMName $vmName -CommandId 'RunPowerShellScript' -ScriptString 'winget --version'
我是计算机上的 VM 所有者和 VM 贡献者。 有人可以帮助我吗?
我希望我的脚本能够正常工作,并且能够自动更新虚拟机上的所有应用程序。
我相信我已经找到问题了。当我在 Invoke-AzVmRunCommand 中调用脚本时,它会使用系统用户在系统上下文中自动执行。但是,在系统上下文中,默认情况下无法运行 winget,因为它是 MSIX 包。有一些可用的解决方法,但它们非常麻烦,而且到目前为止都没有奏效。我想我会关闭票证。