繁体   English   中英

在部署 arm 模板之前检查 Azure VM 名称是否存在

[英]Check if Azure VM name exists before deploying arm template

我正在尝试使用 Azure powershell 来获取 VM 名称(例如: demovm01 ,其中 VM 名称是demovm并且后缀是01

如果01已经存在,我想获取输出并自动附加一个新的后缀02

获取虚拟机名称的示例脚本:

$getvm = Get-AzVM -Name "$vmname" -ResourceGroupName "eodemofunction" -ErrorVariable notPresent -ErrorAction SilentlyContinue
if ($notPresent) {
    Write-Output "VM not found. Creating now"
}
else {
    Write-Output "VM exists."
    return $true    
}

我希望能够将这个新的 vm 名称注入到 arm deploy 以进行部署

这应该做。 将增加直到找不到 VM 并使用简单的-replace注入到您的 json 文件。 还将返回 Azure 中已存在的所有 thr VM 值

$i=1
$vmname_base = "vmserver"
$VMexists = @()

do {
    #invert int value to double digit string
    $int = $i.tostring('00')
    $getvm = Get-AzVM -Name "$vmname_base$int" -ResourceGroupName "eodemofunction" -ErrorVariable notPresent -ErrorAction SilentlyContinue
    if ($notPresent) {
        Write-Output "VM not found. Creating now"
        Write-Output "VM created name is $vmname_base$int"
        #Set condition to end do while loop
        VMcreated = "true"
        #commands to inject to json here. I always find replace method the easiest
        $JSON = Get-Content azuredeploy.parameters.json
        $JSON = $JSON -replace ("Servername","$vmname_base$int")
        $JSON | Out-File azuredeploy.parameters.json -Force
    }
    else {
        Write-Output "VMexists."
        # Add existing VM to array
        $VMexists += "$vmname_base$int"
        # Increment version, ie. 01 to 02 to 03 etc
        $i++
    }       
} while ($VMcreated -ne "true")

return $VMexists

您的命令可能如下所示, $newvmname就是您想要的。

$vmname = "demovm01"
$getvm = Get-AzVM -Name "$vmname" -ResourceGroupName "<group name>" -ErrorVariable notPresent -ErrorAction SilentlyContinue

if ($notPresent) {
    Write-Output "VM not found. Creating now"
}
else {
    Write-Output "VM exists."  

    if($getvm.Name -like '*01'){
        $newvmname = $vmname.TrimEnd('01')+"02"
    } 
    Write-Output $newvmname
  return $true
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM