azure - url中的Powershell调用-restmethod变量
问题描述
我是 powershell 的新手,我正在尝试创建一个简单的脚本,允许我使用 invoke-rest 方法打开多个 Azure VM。
当我直接将 VM 名称写入 url 而不是使用变量时,我的代码可以工作,但我想使用一个变量,因为最终这必须适用于多个 VM。
代码的相关部分:
$body = @{
"$virtualMachines" = "VM1"
} | ConvertTo=Json
$url= "https://management.azure.com/subscriptions/mySubscriptionId/resourceGroups/myResourceGroupName/providers/Microsoft.DevTestLab/labs/myLabName/virtualmachines/" + $virtualMachines + "/start?api-version=2018-09-15"
$response = Invoke-RestMethod -uri $url -Method 'POST' -Headers $headers -Body $body
$response | ConvertTo-Json
解决方案
如果您有多个虚拟机,您可以将它们全部放入一个 PowerShell 变量中,就像这样,一个字符串数组。
$VMs = "myVm1", "myVm2", "myVm3"
PowerShell 有许多流控制语句,您要使用的语句是ForEach
,它将一次单步执行一个数组。我们只是修改了您设置 URL 的方式,使其更友好、更易于阅读,这应该可以正常工作。
$baseUrl = "https://management.azure.com/subscriptions/mySubscriptionId/resourceGroups/myResourceGroupName/providers/Microsoft.DevTestLab/labs/myLabName/virtualmachines/"
ForEach ($vm in $VMs){
$url = $baseurl + $vm + "/start?api-version=2018-09-15"
Write-host "About to start [$Vm]"
$response = Invoke-RestMethod -uri $url -Method 'POST' -Headers $headers
$response | ConvertTo-Json
}
我检查了REST API 端点的 API 文档start?
,看起来您不需要-Body
此端点的参数。
推荐阅读
- node.js - 我应该多久获得一次新的 twillio 服务 sid?
- javascript - 为什么 renderToString 在渲染 Material-UI 组件时会抛出有关 useLayoutEffect 的错误?
- html - Flex-Box 或 Grid:如何跨多行对齐列?
- javascript - 数据未正常存储到 mongodb
- azure - 无法嵌套 StartOperation 以显示在过滤器下拉列表中
- html - 如何使用浏览器后退按钮作为超链接(请限制使用 js,我想坚持使用 html 和 css)?
- c - 我正在尝试制作一个顺时针旋转矩阵的程序,我认为指针有问题
- angular - 如何使用原生脚本从一个组件加载所有子组件
- android - 无法在回收器视图适配器类中显示 AlertDialog
- c - C程序按字母顺序排序字符串