都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

Windows Azure の仮想マシンを PowerShell で起動してみる

 Windows Azure仮想マシンを起動するのに、通常は下図のサービスポータルを使用します。

f:id:koogucc11:20131208105351p:plain

 しかし、最近仮想マシンを起動するのに毎回サービスポータルから起動することが、段々面倒になってきました。コマンドラインで Azure を操作できると非常に楽だと思い、Windows Azure へ接続するための PowerShell スクリプトを書いてみることにしました。

 今回はPowerShell ISE を使って書いてみましょう。私のPowerShell スキルはまだまだ初心者レベルなので、ISE を使わないと書けないのです。PowerShell ISE の簡単な使い方はここに書いてあります。まだ使ったことない方は参照してみてください。あと、今回の機能を試すには、Windows Azure PowerShell をインストールしておく必要があります。

 まずは、下記のスクリプトを実行することで、Windows Azure Active Directory ベースの認証可能にします。Get-AzurePublishSettingsFile や Import-AzurePublishSettingsFile は必要なくなりました。Windows Azure Active Directory にユーザーが追加されます。( こうなると、Windows Azure Active Directory に興味がわいてきますね。 )

Add-AzureAccount

f:id:koogucc11:20131207174742p:plain

 上記スクリプトを実行すると、下記の画面が表示されるので、メールアドレスを入力し、続行をクリックします。

f:id:koogucc11:20131207175115p:plain

 パスワードを入力し、サインインをクリックします。

f:id:koogucc11:20131207175352p:plain

 PowerShell ISE の画面に戻るので、下記のスクリプトを実行します。

# xxxxxxxxx には、実際の仮想マシン名、サービス名を指定してください。
# 仮想マシンの起動 Start-AzureVM -Name xxxxxxxxx -ServiceName xxxxxxxxx # 結果を変数に格納 $azurevminfo = (Get-AzureVM -Name xxxxxxxxx -ServiceName xxxxxxxxx) # 仮想マシンの状態が、開始中の間は、下記の処理を継続 while ( $azurevminfo.PowerState -eq "Starting") { # 30秒スリープ。もっといい方法を後で考える Start-Sleep -s 30 # 結果を変数に格納 $azurevminfo = (Get-AzureVM -Name xxxxxxxxx -ServiceName xxxxxxxxx) } # 仮想マシンに接続するための、RDPファイルを取得し、ローカルに格納 Get-AzureRemoteDesktopFile -LocalPath C:\azure.rdp -Name xxxxxxxxx -ServiceName xxxxxxxxx # リモートデスクトップを起動 Start-Process -FilePath mstsc C:\azure.rdp

f:id:koogucc11:20131207180102p:plain

 上記の処理が完了すると、リモートデスクトップの画面が表示されます。パスワードを入力し、OK ボタンをクリックすることで、仮想マシンに接続することができます。

f:id:koogucc11:20131207180348p:plain

 こんな簡単なスクリプトを書いただけで、 Windows Azure に接続できるとはスゴイです。あまりも接続が簡単なので、ソースも手抜きになってしまいましたww もう少し考えて、使えるスクリプトにしないといけないですね。