2017-02-15 14 views
2

Set-AzureRmVMCustomScriptExtensionという名前のVMにカスタムスクリプト拡張を追加するためのAzureコマンドレットには、-Argumentスイッチがあります。このスイッチは文字列を受け入れますが、これがどのように実装されているかの例は受け入れていません。それは複数の議論を受け入れることができると言われているが、それは単一の議論のためにあるようだ。Set-AzureRmVMCustomScriptExtensionに複数の引数を渡すにはどうしたらいいですか?

複数の引数を渡す必要がありますが、正しい構文を見つけることができません。

例:。

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

-Argument "$arg1,$arg2" 

私はSet-AzureRmVMCustomScriptExtensionに複数の引数を渡すにはどうすればよいので、私は、これらの値(EXを必要とする実際のスクリプトにこれらの値を渡すことができます別の2通りのIISサイト名やディレクトリパスを渡します値)。

答えて

3

this blogから使用されている複数の引数の例があります:

Set-AzureVMCustomScriptExtension -VM $x -ContainerName 'test' -FileName 'script1.ps1','script2.ps1','script3.ps1' -Run 'script1.ps1' -Argument 'arg1 arg2' 
     | Update-AzureVM 

このコードsnipettが実際に動作する場合、それはあなたがあなたの引数の文字列をスペース区切りに合格する必要があるということです。変数が正しく展開されるように二重引用符を保持してください。

+0

それをしました。結局私は二重引用符で "$ arg1 $ arg2"を持っていました。私は変数として$ arg1と$ arg2の値を宣言しているので、引数内のパスなどの文字列を引用する心配はありません。 – Kode

+0

引数のスペースについてはこちらを参照してください:http://stackoverflow.com/questions/42355827/execute-dsc-file-with-set-azuremrmvmcustomscriptextension – Kode

1

ないASM(クラシック)と、このコマンドレットのARM版との間に差があるかどうかわからなく、私のために、私はこのようにそれをしなければならなかった(わかりやすくするために不足しているパラメータ):

$arguments = "-arg1 'foo' -arg2 'bar' -arg3 'cat'" 

Set-AzureRmVMCustomScriptExtension ` 
    -Argument $Arguments ` 
    -Run "SomeScript.ps1" 

SomeScript.ps1

foo 
bar 
cat 
:カスタムスクリプト拡張から実行したときに、あなたが実際に書き込み、ホストの出力を見ることができれば、それはの出力につながる

params 
(
    [string]$arg1, 
    [string]$arg2, 
    [string]$arg3 
) 

function SomeFunction 
{ 
    params 
    (
     [string]$arg1, 
     [string]$arg2, 
     [string]$arg3 
    ) 
    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 

:次のようになります

HTH。

関連する問題