OS 类型冲突 运行 来自 PowerShell 的 Azure CLI 命令

OS Type Conflict running Azure CLI command from PowerShell

我是 运行 Windows 10 Professional PowerShell 脚本中的 Azure CLI 命令,我收到此错误:

(Conflict) Run command OS type 'Windows' does not match the target OS Linux.

PowerShell 版本:

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      19041  1237

失败的 PowerShell 脚本:

$ResourceGroup= "Development"
$VmName = "ubuntu-test"

 az vm run-command invoke `
--resource-group $ResourceGroup `
--name $VmName `
--command-id RunPowerShellScript `
--scripts "ufw disable"

注意:`字符是反引号。与波浪号在同一个键上的那个 ~

没有行连续反引号的相同命令有效:

az vm run-command invoke --resource-group Development --name ubuntu-test --command-id RunShellScript --scripts "ufw disable"

如果我执行 Write-Host,则输出是单行,其中包含正确的参数减去 --script 命令两边的引号。

Write-Host az vm run-command invoke `
--resource-group $ResourceGroup `
--name $VmName `
--command-id RunPowerShellScript `
--scripts "ufw disable"

az vm run-command invoke --resource-group Development --name ubuntu-test --command-id RunPowerShellScript --scripts ufw disable

AZ CLI 调用命令的文档没有提及设置 OS 类型。

az VM run-command invoke

我认为使用续行(` 在行的最后)是 偶然 你的问题。

除了使用变量与文字之外,多行命令和工作单行命令之间的关键区别是:
--command-id RunPowerShellScript 对比 --command-id RunShellScript
.

看起来 您的目标 VM 是 Linux 机器,并且 --command-id RunPowerShellScript 不受支持,而 --command-id RunShellScript 受支持。

az vm run-command list ... 显然可以用来发现支持的 --command-id 值。