Azure PowerShell でスクリプトを使用して Azure リソースを作成する
PowerShell では、対話モードでコマンドを記述し、すぐに実行できます。
顧客関係管理 (CRM) の例の全体的な目標は、仮想マシンを含む 3 つのテスト環境を作成することであることを思い出してください。 リソース グループを使用して、VM が確実に別々の環境に整理されるようにします (ユニット テスト用に 1 つ、統合テスト用に 1 つ、受け入れテスト用に 1 つ)。 リソース グループを作成する必要があるのは 1 回だけであるため、このユース ケースでは、PowerShell の対話モードを使用することをお勧めします。
PowerShell にコマンドを入力すると、PowerShell はコマンドを "コマンドレット" と照合した後、要求されたアクションを実行します。 まず、使用できる一般的なコマンドをいくつか見てから PowerShell 用の Azure サポートのインストールについて確認します。
PowerShell コマンドレットとは
PowerShell コマンドはコマンドレットと呼ばれています。 コマンドレットは 1 つの機能を操作するコマンドです。 コマンドレットという用語は、"小さなコマンド" を意味するためのものです。慣例により、コマンドレットの作成者は、コマンドレットをシンプルで単一の目的用に保つことが推奨されます。
基本の PowerShell 製品には、セッションやバックグラウンド ジョブなどの機能で使用できるコマンドレットが付属します。 他の機能を操作するコマンドレットを得るために、PowerShell インストールにモジュールを追加できます。 たとえば、サードパーティ モジュールには、FTP と連動するモジュール、オペレーティング システムを管理するモジュール、ファイル システムにアクセスするモジュールなどがあります。
コマンドレットは、動詞と名詞の名前付け規則に従います。たとえば、Get-Process
、Format-Table
、Start-Service
などです。 動詞の選択にも規則があります。たとえば、データの取得は "get"、データの挿入または更新は "set"、データの書式設定は "format"、宛先への直接出力は "out" になります。
コマンドレットの作成者には、コマンドレットごとにヘルプ ファイルを含めることをお勧めします。 Get-Help
コマンドレットを実行すると、コマンドレットのヘルプ ファイルが表示されます。 たとえば、Get-ChildItem
コマンドレットのヘルプを表示するには、Windows PowerShell セッションで次のステートメントを入力します。
Get-Help -Name Get-ChildItem -Detailed
PowerShell モジュールとは
コマンドレットは "モジュール" に付属しています。 PowerShell モジュールは、利用可能な各コマンドレットを処理するコードを含むダイナミックリンク ライブラリ (DLL) です。 PowerShell にコマンドレットを読み込む場合は、そのコマンドレットが含まれるモジュールを読み込みます。 Get-Module
コマンドを使用して、読み込まれたモジュールのリストを取得することができます。
Get-Module
このコマンドの出力は、次のようになります。
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 3.1.0.0 Microsoft.PowerShell.Management {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Con...
Manifest 3.1.0.0 Microsoft.PowerShell.Utility {Add-Member, Add-Type, Clear-Variable, Compare-Object...}
Binary 1.0.0.1 PackageManagement {Find-Package, Find-PackageProvider, Get-Package, Get-Pack...
Script 1.0.0.1 PowerShellGet {Find-Command, Find-DscResource, Find-Module, Find-RoleCap...
Script 2.0.0 PSReadline {Get-PSReadLineKeyHandler, Get-PSReadLineOption, Remove-PS...
Az PowerShell モジュールとは
Az は、Azure 機能で使用できるコマンドレットを含む Azure PowerShell モジュールの正式名称です。 数百単位のコマンドレットが含まれ、あらゆる Azure リソースのほぼすべての面を制御できます。 リソース グループ、ストレージ、仮想マシン、Microsoft Entra ID、コンテナー、機械学習などを操作できます。 Az モジュールは、GitHub で入手できるオープンソースのコンポーネントです。
Note
-AzureRM
形式を使用した Azure PowerShell コマンドを見るか使用したことがあるかもしれません。 Az PowerShell モジュール で AzureRM PowerShell モジュールのすべての機能およびその他を利用できるようになったため、2024 年 2 月 29 日に AzureRM PowerShell モジュールは廃止になります。 サービスの中断を回避するために、2024 年 2 月 29 日までに、AzureRM PowerShell モジュールを使用するスクリプトを更新して、Az PowerShell モジュールを使用するようにしてください。 スクリプトを自動的に更新するには、 クイックスタート ガイドに従ってください。
Az PowerShell モジュールをインストールします。
Az PowerShell モジュールは、PowerShell ギャラリーと呼ばれるグローバル リポジトリから入手できます。 Install-Module
コマンドレットを使用して、ローカル コンピューター上にモジュールをインストールすることができます。
最新の Azure Az PowerShell モジュールをインストールするには、次のコマンドを実行します。
[スタート] メニューを開き、「PowerShell」と入力します。
PowerShell アイコンを選択します。
次のコマンドを入力し、Enter キーを押します。
Install-Module -Name Az -Scope CurrentUser -Repository PSGallery
前のコマンドは、現在のユーザーにモジュールをインストールします (Scope
パラメーターで制御)。
このコマンドは、NuGet を使用してコンポーネントを取得します。 そのため、インストールしたバージョンによっては、最新バージョンの NuGet をダウンロードしてインストールするように求められる場合があります。
NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet
provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\<username>\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running
'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install and import
the NuGet provider now?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
「Y」と入力して、Enter キーを押します。
既定では、PowerShell ギャラリーは、PowerShellGet 用の信頼できるリポジトリとしては構成されません。 信頼されていないリポジトリからインストールを実行するたびに、モジュールをインストールするかどうかを確認するメッセージが出力に表示されます。
You are installing the modules from an untrusted repository. If you trust this repository, change its
InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from
'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"):
「Y」または「A」と入力し、Enter キーを押します。
スクリプトの実行に失敗しました
セキュリティの構成によっては、Import-Module
が失敗し、次のような出力が表示される場合があります。
import-module : File C:\Program Files\PowerShell\Modules\az\6.3.0\Az.psm1 cannot be loaded
because running scripts is disabled on this system. For more information, see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ import-module Az
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [Import-Module], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess,Microsoft.PowerShell.Commands.ImportModuleCommand
まったく応答せずに失敗する場合もあります。 その場合は、Ctrl+C キーを押してプログラムを停止します。
どちらの動作も、通常、実行ポリシーが "Restricted" であることを示します。つまり、外部ソース (PowerShell ギャラリーを含む) からダウンロードしたモジュールは実行できません。 これは、コマンドレット Get-ExecutionPolicy
を実行することで確認できます。 コマンドレットが "Restricted" を返す場合は、次のようになります。
Set-ExecutionPolicy
コマンドレットを使用して、ポリシーを "RemoteSigned" に変更します。Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
アクセス許可を求められます。
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): Y
「Y」または「A」と入力し、Enter キーを押します。
コマンド プロンプトで、キーボードの上矢印を使用し、Azure に対して
Install-Module
コマンドを再実行します。
Az PowerShell モジュールの読み込みが進行していることを確認できます。 完了すると、Import-Module
を使用してコマンドレットを読み込むことができるようになります。
Linux または macOS への Azure PowerShell のインストールには、同じコマンドを使用します。
ターミナルで、次のコマンドを実行して PowerShell を起動します。
pwsh
PowerShell プロンプトで次のコマンドを実行して Azure PowerShell をインストールします。
Install-Module -Name Az -Scope CurrentUser -Repository PSGallery -Force
PSGallery からのモジュールを信頼するかどうかの確認を求められたら、[はい] または [すべてはい] で答えます。
PowerShell モジュールを更新する
Azure PowerShell モジュールのバージョンの 1 つが既にインストールされていることを示す警告またはエラー メッセージが表示される場合があります。 その場合は、次のコマンドを発行して最新バージョンに更新します。
Update-Module -Name Az
Install-Module
コマンドレットと同じように、モジュールの信頼の確認を求められたら [はい] または [すべてはい] で答えます。 問題がある場合は、Update-Module
コマンドを使用してモジュールを再インストールすることもできます。
例:Azure PowerShell を使用してリソース グループを作成する方法
Azure モジュールをインストールしたら、Azure を使用して作業を開始できます。 ここでは一般的なタスク (リソース グループの作成) を行います。 ご存知のように、関連リソースをまとめて管理するにはリソース グループを使用します。 新しいリソース グループの作成は、新しい Azure ソリューションを開始するときに行う最初のタスクの 1 つです。
実行する手順は次の 4 つです。
Azure コマンドレットをインポートします。
ご利用の Azure サブスクリプションに接続します。
リソース グループを作成します。
正常に作成できたことを確認します。
次の図は、この手順の概要を示します。
各手順は異なるコマンドレットに対応しています。
Azure コマンドレットをインポートする
PowerShell 3.0 以降では、モジュール内のコマンドレットを使用すると、モジュールが自動的に読み込まれます。 既定であるモジュール自動読み込みの設定を変更していない限り、PowerShell モジュールを手動でインポートする必要はなくなりました。
接続する
Azure PowerShell のローカル インストールを使用している場合、Azure コマンドを実行する前に認証する必要があります。 Connect-AzAccount
コマンドレットを実行すると、Azure 認証情報が求められ、Azure サブスクリプションに接続されます。 さまざまなオプション パラメーターがありますが、対話型プロンプトのみが必要な場合、パラメーターは必要ありません。
Connect-AzAccount
サブスクリプションを操作する
Azure の利用が初めての場合、所有しているサブスクリプションは 1 つのみと思われます。 しかし、Azure をしばらく利用している場合は、既に複数の Azure サブスクリプションを作成している可能性があります。 特定のサブスクリプションに対してコマンドを実行するように Azure PowerShell を構成することができます。
これは一度に 1 つのサブスクリプションでのみ行うことができます。 アクティブなサブスクリプションを判別するには、Get-AzContext
コマンドレットを使用します。 正しいものではない場合は、別のコマンドレットを使用してサブスクリプションを変更できます。
Get-AzSubscription
コマンドで、アカウントのすべてのサブスクリプション名のリストを取得します。選択するサブスクリプションの名前を渡して、そのサブスクリプションを変更します。
Set-AzContext -Subscription '00000000-0000-0000-0000-000000000000'
サブスクリプション ID を検索する必要がある場合、Azure portal に移動し、ホーム ページで [サブスクリプション] を選択します。
すべてのリソース グループのリストを取得する
アクティブなサブスクリプションのすべてのリソース グループのリストを取得できます。
Get-AzResourceGroup
より簡潔なリストを表示するには、パイプ '|' を使用して Get-AzResourceGroup
から Format-Table
コマンドレットに出力を送信できます。
Get-AzResourceGroup | Format-Table
次のような画面が出力されます。
ResourceGroupName Location ProvisioningState Tags TagsTable ResourceId
----------------- -------- ----------------- ---- --------- ----------
cloud-shell-storage-southcentralus southcentralus Succeeded /subscriptions/00000000-0000-0000...
ExerciseResources eastus Succeeded /subscriptions/00000000-0000-0000...
リソース グループを作成する
ご存知のように、Azure でリソースを作成する場合は、管理の目的のために、必ずリソース グループにリソースを配置します。 リソース グループは、多くの場合、新しいアプリケーションを開始するときに最初に作成するものの 1 つです。
New-AzResourceGroup
コマンドレットを使用して、リソース グループを作成することができます。 名前と場所を指定する必要があります。 この名前はサブスクリプション内で一意である必要があります。 この場所は、リソース グループのメタデータが保存される場所を決定します (これはコンプライアンス上の理由から重要となる場合があります)。 "米国西部"、"北ヨーロッパ"、"インド西部" などの文字列を使用して、場所を指定します。 ほとんどの Azure コマンドレットと同様に、New-AzResourceGroup
には多くのオプション パラメーターがあります。 ただし、中心的な構文は次のようになります。
New-AzResourceGroup -Name <name> -Location <location>
Note
ここでは、リソース グループの作成をユーザーの代わりに行うアクティブな Azure サンドボックスで作業を行うことに注意してください。 自分自身のサブスクリプションで作業を行いたい場合は、前述のコマンドを使用してください。
リソースを確認する
Get-AzResource
により、Azure リソースがリストされます。これは、作成されたリソースと、リソース グループの作成が成功したことを確認するためにここで役に立ちます。
Get-AzResource
Get-AzResourceGroup
コマンドと同様に、Format-Table
コマンドレットを使用してより簡潔なリストを表示できます。
Get-AzResource | Format-Table
これで特定のリソース グループに絞り込み、そのグループに関連付けられているリソースのみをリストすることもできます。
Get-AzResource -ResourceGroupName ExerciseResources
Azure 仮想マシンを作成します。
PowerShell で実行できるもう 1 つの一般的なタスクとして、VM を作成することがあります。
Azure PowerShell では、仮想マシンを作成するための New-AzVm
コマンドレットが提供されます。 コマンドレットには多くのパラメーターがあり、それを使用して数多くの VM 構成設定を処理することができます。 ほとんどのパラメーターに適切な既定値があるため、指定する必要があるのは次の 5 つのみです。
- ResourceGroupName: 新しい VM を配置する必要があるリソース グループ。
- Name:Azure での VM の名前。
- 場所: VM がプロビジョニングされる必要がある地理的な場所。
- Credential:VM 管理者アカウント用のユーザー名とパスワードが含まれているオブジェクト。 ここでは
Get-Credential
コマンドレットを使用します。 このコマンドレットは、ユーザー名とパスワードの指定を要求し、それを資格証明オブジェクトにパッケージ化します。 - イメージ: VM に使用するオペレーティング システム イメージ。通常は、Linux ディストリビューションまたは Windows Server です。
New-AzVm
-ResourceGroupName <resource group name>
-Name <machine name>
-Credential <credentials object>
-Location <location>
-Image <image name>
前述の例に示したように、これらのパラメーターをコマンドレットに直接与えることができます。 あるいは、Set-AzVMOperatingSystem
、Set-AzVMSourceImage
、Add-AzVMNetworkInterface
、Set-AzVMOSDisk
などの他のコマンドレットを使用して、仮想マシンを構成することもできます。
Get-Credential
コマンドレットと -Credential
パラメーターを一緒に使用する例を以下に示します。
New-AzVM -Name MyVm -ResourceGroupName ExerciseResources -Credential (Get-Credential) ...
AzVM
サフィックスは、PowerShell の VM ベースのコマンドに固有のものです。 使用できるものは他にもいくつかあります。
コマンド | 説明 |
---|---|
Remove-AzVM |
Azure VM を削除します |
Start-AzVM |
停止している VM を起動します |
Stop-AzVM |
実行中の VM を停止します |
Restart-AzVM |
VM を再起動します |
Update-AzVM |
VM の構成を更新します |
例: VM の情報を取得する
Get-AzVM -Status
コマンドを使用して、サブスクリプション内の VM をリストすることができます。 このコマンドに -Name
プロパティを含めることによって、特定の VM の入力もサポートされます。 ここでは、それを PowerShell 変数に割り当てます。
$vm = Get-AzVM -Name MyVM -ResourceGroupName ExerciseResources
興味深いことは、これで VM が、やりとりできる "オブジェクト" になったことです。 たとえば、そのオブジェクトに変更を加えてから、Update-AzVM
コマンドを使用してその変更を Azure にプッシュして戻すことができます。
$ResourceGroupName = "ExerciseResources"
$vm = Get-AzVM -Name MyVM -ResourceGroupName $ResourceGroupName
$vm.HardwareProfile.vmSize = "Standard_DS3_v2"
Update-AzVM -ResourceGroupName $ResourceGroupName -VM $vm
PowerShell の対話モードは、1 回限りのタスクに適しています。 この例では、プロジェクトの有効期間中は同じリソース グループを使うので、対話形式で作成するのが妥当です。 このタスクでは多くの場合、スクリプトを記述してそのスクリプトを 1 回だけ実行するより、対話モードを使う方が簡単で速くなります。