Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
こんにちは!
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">は指定した仮想マシンの電源ステータスの値を返します。
構文
1 |
Get-AzureRmVm -ResourceGroupName "リソースグループ名" -Name "仮想マシン名" -Status |
では、このコマンドレットの実行結果を見てみましょう。
色々な情報が出力されます。下のほうに VM deallocated という表示があります。これが電源ステータスの返り値になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
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 でコンソールに出力します。
1 2 3 4 5 6 7 8 |
$VMStat = Get-AzureRmVM -ResourceGroupName "TestLab" -Name "labvm01" -Status $VMPwStat = $VMStat.Statuses[1].DisplayStatus Write-Host $VMPwStat # 実行結果 VM deallocated ← VM deallocated は停止(割り当て解除)の状態になります。 |
仮想マシンの電源操作
仮想マシンを停止する:電源オフ(割り当て解除)
Stop-AzureRmVm コマンドレットを使用します。実行後の電源ステータスの指定によって、以下構文を 2 パターンに分けました。
構文その①
-Force スイッチはオプションで、これを指定しないと、停止するかどうかの確認が表示されます。
1 |
Stop-AzureRmVM -ResourceGroupName "リソースグループ名" -Name "仮想マシン名" -Force |
構文その②
-StayProvisioned スイッチは割り当て解除をしない場合に指定します。指定すると実行結果の電源ステータスが Stopped になります。
1 |
Stop-AzureRmVM -ResourceGroupName "リソースグループ名" -Name "仮想マシン名" -Force -StayProvisioned |
1 2 3 4 5 6 7 8 9 |
Stop-AzureRmVM -ResourceGroupName "TestLab" -Name "labvm01" -Force #実行結果 OperationId : Status : StartTime : EndTime : Error : |
仮想マシンを開始する:電源オン
Start-AzureRmVM コマンドレットを使用します。
構文
基本的に電源オフと同様の内容になります。
1 |
Start-AzureRmVM -ResourceGroupName "リソースグループ名" -Name "仮想マシン名" |
1 2 3 4 5 6 7 8 9 10 |
Start-AzureRmVM -ResourceGroupName "TestLab" -Name "labvm01" # 実行結果 OperationId : Status : StartTime : EndTime : Error : |
電源ステータスの確認と仮想マシンの電源オフの組み合わせ
それでは、以上の方法にもとづいて、仮想マシンの電源ステータスが VM running (動作中)であれば、電源オフをする処理を書いてみたいと思います。
($VMPwStat の値が "VM running" であると明示的に書いてみました。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
$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 : |
いかがでしょうか。
バッチなど、定期的に仮想マシンを停止し開始したい時に使えそうですね。
このようなコマンドレットを使う事によって自動化できるかと思います。
では最後までお読みいただきありがとうございました!
おすすめの本はこちら ↓↓↓