Microsoft Azure PowerShellで仮想マシンを自動起動、停止するスクリプトを書いてみました。
スクリプトは、Winodows PowerShell ISEを使って書くと便利です。
このページには、実際のスクリプトを掲載したので、
そのままコピーして、拡張子を「ps1」にするだけでも動作します。
(「仮想マシン名」は要変更)
PowerShellで自動ログインする設定がされている前提で作ってあります。
仮想マシンを自動起動するスクリプト
仮想マシンを自動起動するスクリプトです。
起動したら、リモートデスクトップで接続します。
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 37 38 39 40 41 42 43 |
# 起動したい仮想マシンの名前 $vmname = "仮想マシン名" Write-Host($vmname + "のステータスを確認しています。") $getvmsinfo = (Get-AzureVM -Name $vmname -ServiceName $vmname) if ($getvmsinfo.PowerState -eq "Started") { Write-Host("起動済") } else { Write-Host($getvmsinfo.PowerState) Write-Host($vmname + "を起動しています。") $rtn = (Start-AzureVM -Name $vmname -ServiceName $vmname) if (-Not($rtn.OperationStatus -eq "Succeeded")) { Write-Host($vmname + "の起動に失敗しました。") exit } $getvmsinfo = (Get-AzureVM -Name $vmname -ServiceName $vmname) $roop = "" Write-Host($vmname + "が起動開始しました。") while ( $getvmsinfo.PowerState -eq "Starting") { # 30秒ごとにループして確認 Start-Sleep -s 30 $roop += "*" Write-Host($vmname + "は起動中です。" + $roop) $getvmsinfo = (Get-AzureVM -Name $vmname -ServiceName $vmname) } # さらに、30秒くらい待ったほうがよい Start-Sleep -s 30 } Write-Host($vmname + "が起動完了しました。RDPファイルを取得します。") # Cドライブにファイルを保存します。 Get-AzureRemoteDesktopFile -LocalPath C:\$vmname.rdp -Name $vmname -ServiceName $vmname Write-Host($vmname + "に接続します。") Start-Process -FilePath mstsc C:\$vmname.rdp |
仮想マシンを自動停止するスクリプト
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 37 |
# 停止したい仮想マシンの名前 $vmname = "仮想マシン名" Write-Host($vmname + "のステータスを確認しています。") $getvmsinfo = (Get-AzureVM -Name $vmname -ServiceName $vmname) if ($getvmsinfo.PowerState -eq "Started") { Write-Host($vmname + "を停止しています。") $rtn = (Stop-AzureVM -Name $vmname -ServiceName $vmname -Force) if (-Not($rtn.OperationStatus -eq "Succeeded")) { Write-Host($vmname + "の停止に失敗しました。") exit } $getvmsinfo = (Get-AzureVM -Name $vmname -ServiceName $vmname) $roop = "*" Write-Host($vmname + "をシャットダウンしています。" + $roop) while (-Not($getvmsinfo.PowerState -eq "Stopped")) { # 30秒ごとにループして確認 Start-Sleep -s 30 $roop += "*" Write-Host($vmname + "をシャットダウンしています。" + $roop) $getvmsinfo = (Get-AzureVM -Name $vmname -ServiceName $vmname) } Write-Host($vmname + "がシャットダウン完了しました。") Add-Type -Assembly System.Windows.Forms [System.Windows.Forms.MessageBox]::Show($PATH,"現在のステータスは" + $getvmsinfo.Status + "です。") } else { Write-Host($vmname + "は、既に停止済みです。") } |