英文:
Azure VM PowerShell RUN Command not passing parameters
问题
我正在使用Azure CLI运行命令来调用Windows虚拟机,AZ VM run-command,但无法正确传递参数?
从Azure CLI调用的命令:
az vm run-command invoke \
--resource-group 'resgrpname' \
--name 'hostname' \
--command-id 'RunPowerShellScript' \
--scripts "C:\Scripts\Start_script.ps1" \
--parameters "A=B"
当PowerShell脚本运行时,它执行正确,追加到一个文件,但不接受参数。PS1脚本中的代码:
param(
[string]$SID
)
# 在你的脚本中使用$param1和$param2变量
date | Out-File -FilePath C:\scripts\PowerShellLog.txt -Append
$A | Out-File -FilePath C:\scripts\PowerShellLog.txt -Append
" " | Out-File -FilePath C:\scripts\PowerShellLog.txt -Append
输出文件显示日期已正确追加,但否则为空,没有捕获$A的值?有人见过这种情况吗?我可以尝试的明显事项吗?
我已经尝试过只将命令和参数作为文本内联传递,而不是调用PS1脚本,但invoke无法很好地处理这种情况,而且在多个命令的PowerShell脚本中很快变得难以管理。
英文:
I am making an Azure CLI Run command call to a Windows VM, AZ VM run-command but cannot get the parameters to pass properly?
Command to call from Azure CLI:
az vm run-command invoke \
--resource-group 'resgrpname' \
--name 'hostname' \
--command-id 'RunPowerShellScript' \
--scripts "C:\Scripts\Start_script.ps1" \
--parameters "A=B"
When the PowerShell script runs, it executes correctly, appending to a file, but doesn't accept the parameter. Code in the PS1 script:
param(
[string]$SID
)
# Use the $param1 and $param2 variables in your script
date | Out-File -FilePath C:\scripts\PowerShellLog.txt -Append
$A | Out-File -FilePath C:\scripts\PowerShellLog.txt -Append
" " | Out-File -FilePath C:\scripts\PowerShellLog.txt -Append
The output file shows the date correctly appended, but is otherwise blank, not capturing a value for the $A??
Has anyone seen this before? Anything obvious I can try?
I have tried just passing the commands and parameters inline as text, rather than calling a PS1 script, but invoke doesn't handle that very well, and it would soon get unwieldy in a multi-command PowerShell script
答案1
得分: 0
为了使您的脚本正常工作,您在az vm run-command invoke
中传递的参数必须与您的PowerShell脚本中的参数名称匹配。
因此,您可以将参数重命名为$A
,或者传递参数为SID = B
。
英文:
For your script to work, the parameter you pass in az vm run-command invoke
has to match the name of the parameter in your Powershell script.
Therefore, you either need to rename the parameter to $A
or pass the parameter as SID = B
答案2
得分: 0
以下是翻译好的内容:
输出文件显示日期已正确附加,但除此之外为空,未捕获$A的值。
您正在尝试使用az vm run-command
命令将参数$A
传递给Powershell脚本。然而,似乎脚本未正确捕获该参数。
要解决此问题,请在az vm run-command
命令中删除--parameters
参数,并将参数从**$A**更改为如下所示的$SID:
SID='B'"
这是更新后的脚本。
Start_script
param(
[string]$SID
)
date | Out-File -FilePath C:\scripts\PowerShellLog.txt -Append
$SID | Out-File -FilePath C:\Scripts\PowerShellLog.txt -Append
" " | Out-File -FilePath C:\Scripts\PowerShellLog.txt -Append
从Azure CLI调用的命令:
az vm run-command invoke --resource-group Aks-rg-test --name venkat-vm --command-id 'RunPowerShellScript' --scripts "C:\Scripts\Start_script.ps1 SID='B'"
输出:
执行上述命令后,SID
参数的值将存储在日志文件中。
英文:
> The output file shows the date correctly appended, but is otherwise blank, not capturing a value for the $A??
You're trying to pass a parameter $A
to a powershell script using the az vm run-command
command. However, it seems that the parameter is not being captured correctly in the script.
To fix this issue, remove the --parameters
argument in the az vm run-command
command, and also change the parameter from $A to $SID as shown below
SID='B'"
Here is the update script.
Start_script
param(
[string]$SID
)
date | Out-File -FilePath C:\scripts\PowerShellLog.txt -Append
$SID | Out-File -FilePath C:\Scripts\PowerShellLog.txt -Append
" " | Out-File -FilePath C:\Scripts\PowerShellLog.txt -Append```
Command to call from Azure CLI:
az vm run-command invoke --resource-group Aks-rg-test --name venkat-vm --command-id 'RunPowerShellScript' --scripts "C:\Scripts\Start_script.ps1 SID='B'"
Output:
Once the above command is executed, the value of the SID
parameter will be stored in the log file.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论