用于向名为Set-AzureRmVMCustomScriptExtension的VM添加自定义脚本扩展的Azure Cmdlet具有-Argument
开关,该开关表明它接受字符串,但没有示例如何实现。虽然它说它可以接受多个参数,但它似乎只是一个参数。
我需要传递多个参数,但无法找到正确的语法。
示例:
$arg1 = "mysitename"
$arg2 = "c:/mydirectorytocreate"
-Argument "$arg1,$arg2"
如何将多个参数传递给Set-AzureRmVMCustomScriptExtension,以便将这些值传递给需要这些值的实际脚本(例如,将IIS站点名称和目录路径作为两个单独的值传递)。
答案 0 :(得分:4)
this blog中有一个使用多个参数的示例:
Set-AzureVMCustomScriptExtension -VM $x -ContainerName 'test' -FileName 'script1.ps1','script2.ps1','script3.ps1' -Run 'script1.ps1' -Argument 'arg1 arg2' | Update-AzureVM
如果此代码snipett确实有效,则表示您需要为参数传递空格分隔字符串。只需确保保留双引号,以便变量正确扩展。
答案 1 :(得分:0)
不确定此cmdlet的ASM(经典)和ARM版本之间是否存在差异,但对我而言,我必须这样做(为清晰起见,参数缺失):
$arguments = "-arg1 'foo' -arg2 'bar' -arg3 'cat'"
Set-AzureRmVMCustomScriptExtension `
-Argument $Arguments `
-Run "SomeScript.ps1"
SomeScript.ps1看起来像:
param
(
[string]$arg1,
[string]$arg2,
[string]$arg3
)
function SomeFunction
{
Write-Host $arg1
Write-Host $arg2
Write-Host $arg3
#Do something here...
}
SomeFunction -arg1 $arg1 -arg2 $arg2 -arg3 $arg3 #Call the function from within SomeScript.ps1
如果从自定义脚本扩展运行时实际上可以看到Write-Host的输出,则会产生以下输出:
foo
bar
cat
HTH。