从调用-AzVMRunCommand传递参数给脚本

时间:2019-02-01 12:44:49

标签: azure azure-resource-manager azure-powershell

我试图执行Invoke-AzVMRunCommand来执行接受参数的PS函数。下面示出了代码中调用到Invoke-AzVMRunCommand

$runcmdparameters=@{
        "VolumeLable"="sdsd";
        "azurelun"="1,3,4"
                    }

Invoke-AzVMRunCommand -ResourceGroupName $ServerResourceGroupName -VMName $VMVame -ScriptPath "c:\Configurestorage.ps1" -CommandId 'RunPowerShellScript' -Parameter $runcmdparameters -Verbose

在PS脚本,我需要在服务器上执行是

function Configure-Storage
     {
          Param(
          [parameter(Mandatory=$true)][String]$VolumeLable,
          [parameter(Mandatory=$true)][String[]]$azurelun
          )

#create a storage pool for user databases.
 Out-File "C:\Temp\log.txt" -InputObject $VolumeLable -Append

}

Configure-Storage -VolumeLable $VolumeLable -azurelun $azurelun
  

在脚本失败,不能结合参数参数“VolumeLable”   因为它是一个空字符串。

在Microsoft文档Invoke-AzVMRunCommand不是非常有帮助。

如何将参数传递给脚本?

1 个答案:

答案 0 :(得分:1)

我认为您需要这样做:

Param(
   [parameter(Mandatory=$true)][String]$VolumeLable,
   [parameter(Mandatory=$true)][String[]]$azurelun
)

#create a storage pool for user databases.
Out-File "C:\Temp\log.txt" -InputObject $VolumeLable -Append

因为现在发生了什么:您的脚本实际上并不接受参数,因此您的函数可以接受,但是您正在调用脚本,而不是函数。然后在脚本中调用该函数。解决此问题的另一种方法-向脚本本身添加参数