Powershell 如何传递多个参数以设置AzureRmVMCustomScriptExtension?

Powershell 如何传递多个参数以设置AzureRmVMCustomScriptExtension?,powershell,azure,Powershell,Azure,用于向名为的VM添加自定义脚本扩展的Azure Cmdlet有一个-Argument开关,该开关表示它接受字符串,但没有说明如何实现该字符串的示例。虽然它说它可以接受多个参数,但它似乎只支持一个参数 我需要传递多个参数,但找不到正确的语法 例如: $arg1 = "mysitename" $arg2 = "c:/mydirectorytocreate" -Argument "$arg1,$arg2" 如何将多个参数传递给,以便将这些值传递给需要这些值的实际脚本(例如,将IIS站点名称和目录路

用于向名为的VM添加自定义脚本扩展的Azure Cmdlet有一个
-Argument
开关,该开关表示它接受字符串,但没有说明如何实现该字符串的示例。虽然它说它可以接受多个参数,但它似乎只支持一个参数

我需要传递多个参数,但找不到正确的语法

例如:

$arg1 = "mysitename"
$arg2 = "c:/mydirectorytocreate"

-Argument "$arg1,$arg2"

如何将多个参数传递给,以便将这些值传递给需要这些值的实际脚本(例如,将IIS站点名称和目录路径作为两个单独的值传递)。

以下是使用多个参数的示例:


如果此代码snipet实际工作,则意味着您需要为参数传递一个以空格分隔的字符串。请确保保留双引号,以便变量正确展开。

不确定此cmdlet的ASM(经典版)和ARM版本之间是否存在差异,但对我来说,我必须这样做(为了清楚起见,缺少参数):

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

嗯。

就是这样。最后,我用双引号引用了“$arg1$arg2”。重要的是要注意,我将$arg1和$arg2的值声明为变量,这样我就不必担心引用诸如参数中的路径之类的字符串。请参见此处参数中的空格:“params”应该是文件开头的param,函数体中的params部分也不应该在那里。@AmoghNatu谢谢。更新。
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
foo
bar
cat