我正在尝试使用PowerShell AZ或AZ Cli运行脚本。该脚本位于Azure Blob存储中,它应该在服务器上下载一个zip文件,解压缩并启动安装。Zip文件作为脚本参数提供时的URL(此URL包含SAS令牌)。
使用Azure Web Portal的“运行命令”刀片时,一切都运行得非常好。
现在,我想用一个脚本更好地工业化操作,该脚本创建SAS令牌并直接传递参数以启动运行命令。
我最初尝试使用Set-AzVMRunCommand,但在传递参数时遇到了问题:无论使用什么语法,参数值都不会被传递。我能达到的最好的效果是传递-Parameter @{name=“URL”; value="$ZipURI”}在这里我可以看到Get-AzVMRunCommand的“URL”参数,但该值似乎从未到达。
然后我尝试使用az cli,因为它似乎解决了许多问题,但当它包含SAS令牌时,az cli似乎无法理解--script-uri,因为我得到了这样的错误:
“se”不能被识别为内部或外部命令、可操作程序或批处理文件。
编辑:非常感谢您的回答。这里是完整的命令,希望对您有所帮助,请不要犹豫,向我询问更多细节。
Set-AzVMRunCommand -ResourceGroupName $ResourceGroupName -VMName $VirtualMachineName -RunCommandName "Deploy" -SourceScriptUri $SourceScriptURI -Location $Location -Parameter $Parameters
字符串
$SourceScriptURI是使用脚本名称和SAS令牌$Parameters = @{name=“URL”生成的URL;"$ZipURI”}
命令在AZ Cli中类似
az vm run-command create --run-command-name "TaniumInstall" --vm-name $VirtualMachineName --resource-group $ResourceGroupName --script-uri $SourceScriptURI -protected-parameters URL=$ZipURI
型
有人做到过吗?
- 谢谢-谢谢
1条答案
按热度按时间ulydmbyx1#
我最初尝试使用Set-AzVMRunCommand,但在传递参数时遇到问题:无论使用什么语法,都不会传递参数值。我所能达到的最好效果是将-Parameter @{name=“URL”; value="$ZipURI”},我可以使用Get-AzVMRunCommand查看“URL”参数,但该值似乎从未到达
使用参数值运行AzVMRunCommand Invoke命令并在
VM
中执行脚本。1.将
powershell
脚本上载到VM
中注意:脚本路径参数将只接受VM内的路径,而不接受blob路径。
样品. ps1
字符串
1.执行以下命令。
型
输出:
x1c 0d1x的数据
传递您要传递参数的值。
当我签入
VM
时,脚本被执行,文件夹也被创建。的
参考:使用参数在Azure上的远程VM上执行Powershell脚本-堆栈溢出