diff options
Diffstat (limited to 'AzureHelpers/Public/Start-AzVm.ps1')
-rw-r--r-- | AzureHelpers/Public/Start-AzVm.ps1 | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/AzureHelpers/Public/Start-AzVm.ps1 b/AzureHelpers/Public/Start-AzVm.ps1 new file mode 100644 index 0000000..408fb0c --- /dev/null +++ b/AzureHelpers/Public/Start-AzVm.ps1 @@ -0,0 +1,44 @@ +function Start-AzVm { + # Supply a VM name (or an unambiguous part of it) and start the machine. + <# + .SYNOPSIS + Start an Azure VM whose name contains the input string. + + .DESCRIPTION + If we can unambiguously determine a single VM name inside the subscription + we are logged into through the input string, we will stop and deallocate + the machine. + + This function was built as we want to have terse input and a counterpart + to Stop-AzVm. + + .INPUTS + String. The name or unambiguous part of the name of the VM we intend to + start. + + .OUTPUTS + String. Status messages and the actual AzureCLI outputs. + #> + Param ( + [Parameter( + Mandatory=$true, + ValueFromPipelineByPropertyName=$true, + HelpMessage="String that is a VM name or is part of one unambiguous VM", + Position=0 + ) + ] + [ValidateLength(1,64)] + [string] + $VmName + ) + $ErrorActionPreference = 'Stop' + $myvm = azvmidentify -VmName $VmName + # Since az vm start is taking quite its time even when the machine is started, we should check ourselves whether the machine is running: + if ( (az vm show -d -g $myvm.resourceGroup -n $myvm.name -o json | COnvertFrom-Json).powerState.Contains('running')) { + Write-Host "VM $($myvm.name) (RG: $($myvm.resourceGroup)) is already running." + } else { + Write-Host "Starting $($myvm.name) (RG: $($myvm.resourceGroup)):" + az vm start -g $myvm.resourceGroup -n $myvm.name + Write-Host "...done." + } +}
\ No newline at end of file |