SEブログ

【Azure】AzureVMの電源ステータスと電源操作について

こんにちは!

 

 

AzureVM(仮想マシン) で 電源ステータスを Azure Portal からではなく、Azure PowerShell から確認したい時があるかと思います。

また、指定した時間に仮想マシンを停止したり、開始したりするような自動化をしたいような場合もあるかと思います。

ここではそういった事を Azure PowerShell を使って確認したり操作する内容となっております。

 

 

この記事の内容は以下になります。

 

  • 仮想マシンの電源ステータスの一覧を理解します、
  • 仮想マシンの電源ステータスを Azure PowerShell で確認します。
  • 仮想マシンの電源オンを Azure PowerShell で実行します。
  • 仮想マシンの電源オフを Azure PowerShell で実行します。
  • 仮想マシンの電源ステータスが動作中であれば、電源オフを Azure PowerShell で実行します。

 

 

スポンサーリンク

事前準備

 

 

  • Azure PowerShell で Azure Portal に接続済みである事。

方法は以下の記事を参考にしていただければ幸いです。

 

【Azure】Azure PowerShellでAzureに接続する

 

 

スポンサーリンク

電源ステータスの一覧

 

 

仮想マシンの電源ステータスの一覧になります。

 

電源ステータス 説明 補足
VM Starting 起動中である事を指します。
VM Running 動作中である事を指します。
VM Stopping 停止中である事を指します。
VM Stopped 停止済である事を指します。 仮想マシンの使用料金は発生します。
VM Deallocating 割り当て解除中である事を指します。
VM Deallocated 割り当て解除済みである事を指します。 仮想マシンの使用料金は発生しません。
VM Unknown 電源ステータスが不明である事を指します。 仮想マシンの動作に問題が発生している場合があります。

 

 

仮想マシンの電源ステータスを確認する

 

 

仮想マシンの電源ステータスは、Get-AzureRmVm コマンドレット を使用します。

-Status スイッチ</strong class=”under-yellow”>は指定した仮想マシンの電源ステータスの値を返します。

 

 

構文

 

Get-AzureRmVm -ResourceGroupName "リソースグループ名" -Name "仮想マシン名" -Status

 

 

では、このコマンドレットの実行結果を見てみましょう。

色々な情報が出力されます。下のほうに VM deallocated という表示があります。これが電源ステータスの返り値になります。

 

 

Get-AzureRmVm -ResourceGroupName "TestLab" -Name "labvm01" -Status


# 実行結果


警告: Get-AzureRmVM: A property of the output of this cmdlet will change in an upcoming breaking change release. The StorageAccountType property for a DataDisk will return Standard_LRS and Premium_LRS

ResourceGroupName : TestLab
Name : labvm01
BootDiagnostics : 
ConsoleScreenshotBlobUri : https://testlabdiag887.blob.core.windows.net/bootdiagnostics-labvm01-efb5a6a0-e328-4bb3-853f-5e6e341ef844/labvm01.efb5a6a0-e328-4bb3-853f-5e6e341ef844.screenshot.bmp
SerialConsoleLogBlobUri : https://testlabdiag887.blob.core.windows.net/bootdiagnostics-labvm01-efb5a6a0-e328-4bb3-853f-5e6e341ef844/labvm01.efb5a6a0-e328-4bb3-853f-5e6e341ef844.serialconsole.log
Disks[0] : 
Name : labvm01_OsDisk_1_cb7c5e6d0e484eb482dc93185a3ebe07
Statuses[0] : 
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 2018/06/05 5:40:35
Disks[1] : 
Name : labvm01_Data
Statuses[0] : 
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 2018/06/05 5:40:35
Statuses[0] :  ← ステータスの配列[0]
Code : ProvisioningState/succeeded
Level : Info
DisplayStatus : Provisioning succeeded
Time : 2018/06/05 5:40:35
Statuses[1] :  ← ステータスの配列[1]
Code : PowerState/deallocated
Level : Info
DisplayStatus : VM deallocated

 

 

上記のコマンドでも確認できるのですが、出力される情報が多いですね。

ですので、実行結果を電源ステータスのみ出力してみます。

 

Get-AzureRmVm コマンドレットで仮想マシンの状態を取得し、変数 $VMStat に代入します。

上記コマンドレットの結果で返ってきた DisplayStatus の値である VM deallocated は Statuses の配列として 2 番目に表示されています。

ですので、$VMStat.Statuses [1].DisplayStatus として書き、返り値を #VMPwStat に代入します。

最後に、Write-Host でコンソールに出力します。

 

 

$VMStat = Get-AzureRmVM -ResourceGroupName "TestLab" -Name "labvm01" -Status
$VMPwStat = $VMStat.Statuses[1].DisplayStatus
Write-Host $VMPwStat


# 実行結果

VM deallocated ← VM deallocated は停止(割り当て解除)の状態になります。

 

 

 

仮想マシンの電源操作

 

 

仮想マシンを停止する:電源オフ(割り当て解除)

 

 

Stop-AzureRmVm コマンドレットを使用します。実行後の電源ステータスの指定によって、以下構文を 2 パターンに分けました。

 

構文その①

-Force スイッチはオプションで、これを指定しないと、停止するかどうかの確認が表示されます。

 

Stop-AzureRmVM -ResourceGroupName "リソースグループ名" -Name "仮想マシン名" -Force

 

 

構文その②

 

-StayProvisioned スイッチ割り当て解除をしない場合に指定します。指定すると実行結果の電源ステータスが Stopped になります。

 

Stop-AzureRmVM -ResourceGroupName "リソースグループ名" -Name "仮想マシン名" -Force -StayProvisioned

 

 

Stop-AzureRmVM -ResourceGroupName "TestLab" -Name "labvm01" -Force


#実行結果

OperationId : 
Status : 
StartTime : 
EndTime : Error : 

 

 

仮想マシンを開始する:電源オン

 

 

Start-AzureRmVM コマンドレットを使用します。

 

構文

基本的に電源オフと同様の内容になります。

 

Start-AzureRmVM -ResourceGroupName "リソースグループ名" -Name "仮想マシン名"

 

 

Start-AzureRmVM -ResourceGroupName "TestLab" -Name "labvm01"


# 実行結果

OperationId : 
Status : 
StartTime : 
EndTime : 
Error : 

 

 

スポンサーリンク

電源ステータスの確認と仮想マシンの電源オフの組み合わせ

 

 

それでは、以上の方法にもとづいて、仮想マシンの電源ステータスが VM running (動作中)であれば、電源オフをする処理を書いてみたいと思います。

($VMPwStat の値が “VM running” であると明示的に書いてみました。)

 

 

$VMStat = Get-AzureRmVM -ResourceGroupName "TestLab" -Name "labvm01" -Status
$VMPwStat = $VMStat.Statuses[1].DisplayStatus

if ($VMPwStat -eq "VM running") {

    Stop-AzureRmVM -ResourceGroupName "TestLab" -Name "labvm01" -Force

} else {

    Write-Host "仮想マシンの電源ステータスは $VMPwStat ですので、停止はキャンセルしました。"

}

実行結果

警告: Get-AzureRmVM: A property of the output of this cmdlet will change in an upcoming breaking change release. The StorageAccountType property for a DataDisk will return Standard_LRS and Premium_LRS
True

OperationId : 
Status : 
StartTime : 
EndTime : 
Error :

 

 

いかがでしょうか。

 

バッチなど、定期的に仮想マシンを停止し開始したい時に使えそうですね。

このようなコマンドレットを使う事によって自動化できるかと思います。

 

 

では最後までお読みいただきありがとうございました!

 

 

おすすめの本はこちら ↓↓↓