PowerShell De Azure
コマンドラインで操作しよう
TECHNO OFFICER Atsushi Kojima
あるときは
さすらいのハードコアお父さ
ん。
あるときは
釣り師。
あるときは
ゴッドハンド整体師(虚)。
たまにクラウドコンサルやって
ます。
Agenda
1. PowerShellアレコレ
2. セットアップ方法
3. Azureで遊ぶ
PowerShellアレコレ
PowerShellアレコレ
PowerShellの位置づけ
• MS-DOS時代から使われてきたコマンドスクリプト。豊富なコマンド群があり現在でも実
用性が高く多くのシステムで利用されている。
バッチファ
イル(.bat)
• VBのスクリプト版。と言ってもVisualではない。VBライクに使えるので気軽に利用でき
る。VBAはまた別。
VBScript
(.vbs)
• JavaScriptをマイクロソフト独自の仕様によって拡張することで汎用性を増した。最近
流行っている.js的なスクリプトではない。Jscript(.js)
• 今回のメインディッシュ。.NET Frameworkが利用できることからサーバー管理だけでな
くアプリケーションまで動かせる。また多くのMS製品がPowerShell用のコマンドレット
を持っているので複雑なスクリプトも実装が可能。
PowerShell
(.ps1)
実行環境
PowerShell スクリプト
PowerShell エンジン
COM
.NET
Framework
PowerShellバージョンと対応OS
OS 1.0 2.0 3.0
Windows Server 2003 ○SP1 ○SP2 ×
Windows Server 2003 R2 ○SP1 ○SP2 ×
Windows Server 2008 ○SP1 ○SP2
Windows Server 2008 R2 ◎ ○SP1
Windows Server 2012 ◎
Windows XP ○SP2 ○SP3 ×
Windows Vista ○ ○SP1 ×
Windows 7 ◎ ○SP1
Windows 8 ◎
なにはともあれ使ってみる。
見た目はコマンドプロンプトと似てる
覚えておきたいコマンド
Get-Help :ヘルプ表示
Set-ExecutionPolicy Unrestricted :スクリプト実行時のすべての制約
を取り除く
Get-ExecutionPolicy :実行ポリシーの確認
Get-Service :すべてのサービスリスト表示
ConvertTo-HTML :出力結果をHTMLへ変換する
Export-CSV :出力結果をCSVにする
Select-Object :出力時にプロパティを指定する
Get-EventLog :イベントログを調べる
Get-Process :すべてのプロセスリスト表示
Stop-Process :プロセスの終了
GUIで快適操作
コマンドラインでPowerShellを利用する場合、デバッグ
やコードエディタがないため非常に効率が悪いです。
そこでコードエディタ、実行環境、デバッグ環境が統合
されたPowerShell ISEを使うことをお勧めします。
コード保管やデバッグ、ス
テップ実行などが可能。
また、マウスオーバーでヘ
ルプ表示されます。
セットアップ方法
セットアップ方法
PowerShell実行環境のセットアップ
事前準備
・Web Platform Installer(WebPI)
※基本的にはWebPIからすべてインストール可能。
Windows PowerShell 3.0(と思ったけど、4.0が出てた!)
Windows Azure PowerShell
Windows Azure SDKはWindows Azureポータルサイトからでもダウン
ロード可能。
http://www.windowsazure.com/ja-jp/downloads/
Azure用セットアップ
PS C:> Get-Module –ListAvailable 提供されているAzure用モジュールを確認する
ModuleType Name ExportedCommands
---------- ---- ----------------
Binary Azure {Disable-AzureServiceProjectRemoteDesktop, Enable-AzureMemcacheRole, ...
PS C:> Import-Module Azure Azure用モジュールをインポートする
PS C:> Get-AzurePublishSettingsFile 発行プロファイルをダウンロードする
ブラウザから発行プロファイル
のダウンロードできます。
適当な場所に保存してください。
Azure用セットアップ
PS C:> Import-AzurePublishSettingsFile "C:UsersuserDesktop7-11-2013-credentials.publishsettings“
ダウンロードした発行プロファイルをインポートする
PS C:> Get-AzureSubscription Azureが操作できるか確認する
PS C:> Select-AzureSubscription 使用するサブスクリプション名
サブスクリプション情
報が表示されれば問題
なし。
Azureで遊ぶ
Azureで遊ぶ
WEBサイトの新規作成をやってみる
PS C:> New-AzureWebsite fukuazu -Location "East Asia"
NumberOfWorkers : 1
DefaultDocuments : {Default.htm, Default.html, Default.asp,
index.htm...}
NetFrameworkVersion : v4.0
PhpVersion : 5.3
RequestTracingEnabled : False
HttpLoggingEnabled : False
DetailedErrorLoggingEnabled : False
PublishingUsername : $fukuazu
PublishingPassword :
eutex71HuWxd4sj7Lu13n09Cuw3XiKSlkD67vl6w1l5csFkq45uKx0ns8xlD
AppSettings : {}
Metadata : {}
ConnectionStrings : {}
HandlerMappings :
Name : fukuazu
State :
HostNames : {fukuazu.azurewebsites.net}
WebSpace : eastasiawebspace
SelfLink :
RepositorySiteName :
Owner :
UsageState : Normal
Enabled :
AdminEnabled :
EnabledHostNames :
SiteProperties :
AvailabilityState : Normal
SSLCertificates :
SiteMode :
HostNameSslStates :
AzureDriveTraceEnabled :
AzureDriveTraceLevel : Error
AzureTableTraceEnabled :
AzureTableTraceLevel : Error
WEBサイトのログをリアルタイムで見る
PS C:> Get-AzureWebsiteLog -tail –Name fukuazu
tail -f みたいな感じで使えます。
EndPointを追加してみる
PS C:> $vm = Get-AzureVM -ServiceName jazvm01 -Name jazvm01
PS C:> $acl = New-AzureAclConfig
PS C:> Set-AzureAclConfig -AddRule Permit -RemoteSubnet "1.115.192.184/32" -Order 1 -ACL $acl -Description "SSH“
RuleId : 0
Order : 1
Action : Permit
RemoteSubnet : 1.115.192.184/32
Description : SSH
PS C:> $vm | Set-AzureEndpoint -Name SSH -Protocol tcp -LocalPort 22 -PublicPort 22 -ACL $acl | Update-AzureVM
OperationDescription OperationId OperationStatus
-------------------- ----------- ---------------
Update-AzureVM 99210143-e36c-4838-bc10-01837b5292a8 Succeeded
EndPointとは仮想マシンが外部からの接続を受け入れるためのポートフォワーディングで、公開ポートと内部
ポートを接続することでポート間の転送を実現します。ただ、実際はIPアドレスベースでの細かいアクセス制御
をしたいわけで、それは今のところManagementポータルからできません。
実現するにはACLと呼ばれる制御リストを作成し、それをEndPointに読み込ませるようにします。
以下は、jazvm01という仮想マシンに、 1.115.192.184/32からのSSHを許可するという設定です。
PS C:> Get-AzureEndpoint -VM $vm
LBSetName :
LocalPort : 22
Name : SSH
Port : 22
Protocol : tcp
Vip : 168.63.200.224
ProbePath :
ProbePort : 0
ProbeProtocol :
ProbeIntervalInSeconds :
ProbeTimeoutInSeconds :
EnableDirectServerReturn :
Acl : {SSH}
PS C:> Get-AzureAclConfig -VM $vm -EndpointName SSH
RuleId : 0
Order : 1
Action : Permit
RemoteSubnet : 1.115.192.184/32
Description : SSH
まとめ
PowerShellを利用することで、Azure操作を自動化する
ことが可能です。
また、EndPoint設定のようにManagementポータルから
設定できないものも、PowerShellからなら設定が可能な
場合があります。(その逆もありけどw)
ぜひPowerShellでのAzure操作やってみてください。

PowerShell de Azure