我试图执行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不是非常有帮助。
如何将参数传递给脚本?
答案 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
因为现在发生了什么:您的脚本实际上并不接受参数,因此您的函数可以接受,但是您正在调用脚本,而不是函数。然后在脚本中调用该函数。解决此问题的另一种方法-向脚本本身添加参数