You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Azure PowerShell的Set-AzVmRunCommand传递参数?

使用Set-AzVmRunCommand构造参数的正确方法

核心要点

Set-AzVmRunCommand的-Parameter和-ProtectedParameter参数都需要传入哈希表数组,每个哈希表对应一个脚本参数,必须包含Name(参数名)和Value(参数值)两个键。

1. 构造普通参数数组

比如要传递serverName和databaseName两个参数:

$scriptParams = @(
    @{ Name = "serverName"; Value = "xyz" },
    @{ Name = "databaseName"; Value = "abc" }
)

2. 构造受保护参数数组

受保护参数不会在命令输出或Azure日志中暴露,适合传递敏感信息(如密码):

$protectedScriptParams = @(
    @{ Name = "adminPassword"; Value = "P@ssw0rd123" }
)

3. 完整命令示例

调用本地脚本文件

Set-AzVmRunCommand -ResourceGroupName "你的资源组名" -VMName "你的VM名" -CommandId "RunPowerShellScript" `
    -ScriptPath "C:\本地脚本路径\your-script.ps1" `
    -Parameter $scriptParams `
    -ProtectedParameter $protectedScriptParams

内联脚本示例

如果直接传入脚本内容:

$inlineScript = @"
param(
    [string]$serverName,
    [string]$databaseName,
    [string]$adminPassword
)
# 这里写你的脚本逻辑
Write-Host "正在连接到服务器: $serverName,数据库: $databaseName"
"@

Set-AzVmRunCommand -ResourceGroupName "你的资源组名" -VMName "你的VM名" -CommandId "RunPowerShellScript" `
    -ScriptString $inlineScript `
    -Parameter $scriptParams `
    -ProtectedParameter $protectedScriptParams

常见错误排查

  • 不要传入单个哈希表:必须用@()包裹成数组,即使只有一个参数
  • 确保哈希表的键名是Name和Value(大小写不敏感,但建议和官方文档保持一致)
  • 脚本中要通过param()块声明对应的参数,才能接收传递的值

内容的提问来源于stack exchange,提问作者Carv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 05:01:08