Azure PowerShell でスクリプトを作成して保存する
多くの場合、複雑なタスクや反復的なタスクの管理にはかなりの時間がかかります。 組織は、コストを削減してエラーを回避するためにこれらのタスクを自動化したいと考えます。
自動化は、カスタマー リレーションシップ マネジメント (CRM) 会社の例で重要です。 そのため、継続的に削除して再作成する必要がある、複数の Linux Virtual Machines (VM) で自分のソフトウェアをテストします。 毎回手動で VM を作成するのに対して、あなたは、PowerShell スクリプトを使用して VM の作成を自動化したいと考えています。
VM を作成する主な操作以外にも、スクリプトには他にいくつかの要件があります。
- 複数の VM を作成するため、ループ内に作成を配置する必要があります。
- 3 つの異なるリソース グループで VM を作成する必要があるため、そのリソース グループの名前をパラメーターとしてスクリプトに渡す必要があります。
このセクションでは、これらの要件を満たす Azure PowerShell スクリプトを記述して実行する方法を説明します。
PowerShell スクリプトとは
PowerShell スクリプトは、コマンドと制御コンストラクトを含むテキスト ファイルです。 コマンドはコマンドレットの呼び出しのことです。 制御コンストラクトでは、PowerShell によって提供されるループ、変数、パラメーター、コメントなどの機能をプログラミングします。
PowerShell スクリプト ファイルには .ps1
ファイル拡張子が付いています。 任意のテキスト エディターでこれらのファイルを作成して保存することができます。
ヒント
Windows で PowerShell スクリプトを記述する場合は、Windows PowerShell Integrated Scripting Environment (ISE) を使用できます。 このエディターでは、構文の色分けなどの機能と利用可能なコマンドレットの一覧が提供されます。
次のスクリーンショットは、Windows PowerShell Integrated Scripting Environment (ISE) でサンプル スクリプトを使用して Azure に接続し、Azure で仮想マシンを作成する様子を示しています。
スクリプトを記述したら、前にドットとバックスラッシュが付いたファイルの名前を渡して、PowerShell コマンド ラインから実行します。
.\myScript.ps1
PowerShell 手法
PowerShell には、一般的なプログラミング言語で見られる多くの機能があります。 変数の定義、ブランチとループの使用、コマンド ライン パラメーターのキャプチャ、関数の記述、コメントの追加などを行うことができます。 このスクリプトには、変数、ループ、パラメーターの 3 つの機能が必要です。
変数
前のユニットでご覧になったように、PowerShell では変数をサポートしています。 $
を使用して、変数と =
を宣言し、値を割り当てます。 例:
$loc = "East US"
$iterations = 3
変数でオブジェクトを保持することができます。 たとえば、次の定義では、Get-Credential コマンドレットによって返されるオブジェクトに adminCredential 変数が設定されます。
$adminCredential = Get-Credential
変数に格納されている値を取得するには、次のように $
プレフィックスとその名前を使用します。
$loc = "East US"
New-AzResourceGroup -Name "MyResourceGroup" -Location $loc
ループ
PowerShell には、For
、Do...While
、For...Each
などのいくつかのループ構造があります。 ここではコマンドレットを一定の回数実行するため、For
ループが最適です。
次は、中心的な構文の例です。 この例では 2 回反復され、毎回 i の値を出力します。 "より小さい" には -lt
、"以下" には -le
、"等しい" には -eq
、"等しくない" には -ne
など比較演算子が記述されています。
For ($i = 1; $i -lt 3; $i++)
{
$i
}
パラメーター
スクリプトを実行するときに、コマンド ラインで引数を渡すことができます。 パラメーターごとに名前を指定でき、スクリプトで値を抽出するのに役立ちます。 例:
.\setupEnvironment.ps1 -size 5 -location "East US"
スクリプト内で、変数に値をキャプチャします。 この例では、パラメーターは名前と一致します。
param([string]$location, [int]$size)
コマンド ラインでは名前を省略することができます。 例:
.\setupEnvironment.ps1 5 "East US"
スクリプト内では、パラメーターに名前がない場合の照合に位置を使用します。
param([int]$size, [string]$location)
これらのパラメーターを入力として受け取り、ループを使用して、特定のパラメーターから一連の VM を作成できます。 次で試してみます。
PowerShell と Azure PowerShell を組み合わせることで、Azure の自動化に必要なツールがすべて提供されます。 CRM の例では、スクリプトを汎用的にするためのパラメーターとコードの繰り返しを避けるためのループを使用して、複数の Linux VM を作成することができます。 このスクリプトを使用すると、以前は複雑だった操作を 1 つの手順で実行できます。