Azure PowerShellとは?
Azure PowerShellは、PowerShellからAzureリソースを直接操作するために設計されたモジュール群です。これは、対話的なコマンドライン操作と、自動化されたスクリプト実行の両方に対応しています。
Azure PowerShellは、Azure Resource Manager(ARM)のREST APIを呼び出すことで、PowerShellの構文を用いて、仮想マシンの作成やネットワークの設定、ストレージの管理といったAzure上のほぼすべての操作をプログラム的に実行できます。
Windows、Linux、macOSの各プラットフォームで利用でき、PCにローカルインストールして使用するだけでなく、ブラウザからPowerShellにアクセスできるAzure Cloud Shellや、隔離された環境を構築できるDockerコンテナ内でも実行可能です。
PowerShellの概要
PowerShellは、Microsoftによって開発された、クロスプラットフォーム対応のコマンドラインツールです。PowerShellの主な特徴として、オブジェクト指向の設計とコマンドレットがあります。
オブジェクト指向の設計
一般的なシェル(WindowsのコマンドプロンプトやLinuxのBashなど)では、コマンド間のデータの受け渡しはプレーンテキストで行われます。これにより、あるコマンドの出力を次のコマンドで利用する(パイプライン)際には、文字列のパースが必要となり、処理が煩雑になります。
一方PowerShellでは、コマンド間で受け渡されるのは.NETオブジェクトです。.NETオブジェクトは、構造化されたプロパティと、そのデータを操作するためのメソッドを含んでいます。
例えば、仮想マシンを表すオブジェクトには、「名前」「状態」「IPアドレス」といったプロパティが含まれており、パイプライン処理を行う際にこれらの情報に直接アクセスできます。この設計により、スクリプトの信頼性と可読性が向上しています。
コマンドレット
PowerShellで使用されるコマンドは、コマンドレットと呼ばれます。コマンドレットは、以下のように動詞-名詞という標準化された命名規則に従っており、直感的で発見しやすいのが特徴です。
- Get-Process: 実行中のプロセスを取得する
- Stop-Service: サービスを停止する
このように、PowerShellは単なるコマンド実行環境ではなく、システムの管理と自動化を効率的に行うために設計されています。
次のセクションからは、Azure PowerShellについて詳しくご紹介します。
Azure PowerShellの主な機能
Azure PowerShellは、PowerShellの基盤の上に、Azureリソースを管理するための機能を提供しています。ここでは、その主要な機能について解説します。

Azure Cloud ShellからAzure PowerShellを使用する様子 (参考:Microsoft)
リソースの包括的な管理
Azure PowerShellは、Azureのコントロールプレーンとデータプレーンの両方を操作するコマンドレットを提供します。
- コントロールプレーン操作:サブスクリプション内のリソースを管理する操作です。例えば、仮想マシン(VM)の作成、リソースグループの削除、ネットワーク設定の変更などが含まれます。
- データプレーン操作:リソースのインスタンスの機能を制御する操作です。例えば、ストレージアカウントにファイルをアップロードしたり、データベースでクエリを実行したりすることが含まれます。
両方を操作するアプローチがあるため、インフラ管理から日常的なタスクまで、Azure操作のほぼ全範囲を自動化することが可能です。
スクリプティング
Azure PowerShellは、反復的で複雑なタスクを自動化することができます。手動操作では時間と手間がかかり、ヒューマンエラーが発生しやすい作業も、スクリプト化することで正確に実行できます。
豊富なモジュール
Azure PowerShellは、Azureの各サービスに対応する複数のモジュールで構成されています。
これにより、必要な機能だけを選択的に利用できます。以下に主要なモジュールとその役割を示します。
モジュール名 | 管理対象のAzureサービス | 利用例 |
|---|---|---|
AzAccounts | 認証、サブスクリプション、テナント | Azureへのログイン、アクティブなサブスクリプションの設定 |
AzCompute | 仮想マシン、スケールセット、ディスク | VMの作成、起動、停止、サイズ変更 |
AzStorage | ストレージアカウント、BLOB、ファイル、キュー | ストレージアカウントの作成、BLOBストレージへのファイルアップロード |
AzNetwork | 仮想ネットワーク、ネットワークセキュリティグループ、ロードバランサー | ネットワークルールの構成、IPアドレスの管理 |
AzResources | リソースグループ、ARMテンプレート、タグ | リソースグループの管理、リソースへのタグ付け |
AzWebsites | App Service、Web Apps | Webアプリケーションのデプロイと管理 |
Azure CLIとの違い
Azureのコマンドラインツールとして、Azure PowerShellの他にAzure CLIも提供されています。
どちらを選択するかは、ユーザーの経験や作業環境によって異なります。以下に両者の特徴をまとめた表を示します。
特徴 | Azure PowerShell | Azure CLI |
|---|---|---|
ベース言語・構文 |
|
|
対応プラットフォーム | 設計当初はWindowsのみ、現在はクロスプラットフォーム対応 (Windows,macOS, Linux) | 設計当初からクロスプラットフォーム対応、Linux/macOS環境で好まれる |
出力形式 | .NETオブジェクト | JSON文字列 |
コマンド操作 | オブジェクト指向のため、リッチな対話的操作 | 簡潔なコマンドで迅速な操作 |
Azure PowerShellの料金
Azure PowerShell自体のインストール・利用は無料です。
ただし、Azure PowerShellから作成・操作するAzureリソース(仮想マシン、ストレージ、データベースなど)には、通常のAzure利用料金が発生します。
- ツール利用料:無料(インストールや実行に課金なし)
- リソース利用料:Azureの課金ルールに従って計算(従量課金または予約制など)
- 試用環境:Azure無料アカウントでは、一定の無料クレジットや無料枠を利用可能
例:Azure PowerShellからVMを作成すると、そのVMの稼働時間やディスク容量に応じた料金がAzure側で発生します。
※2025年8月時点の情報です。最新の情報はAzure PowerShellの公式ドキュメントからご確認ください。
Azure PowerShellの利用手順
それでは、Azure PowerShellを利用するための手順をステップごとにご説明します。
ローカルPC、Azure Cloud Shell、Dockerコンテナの3通りで利用する手順をご紹介します。
ローカルPCの場合
まずは、ローカルPC(Windows)にインストールする手順を示します。macOS、Linuxでも同様の手順でインストールできます。
1. PowerShellの起動
現在、PowerShellはWindowsに標準搭載されています。「Windowsキー」を押し、「スタート」から「PowerShell」を検索して起動します。

PowerShellの起動
2. PowerShellのバージョンの確認
以下のコマンドを実行してPowerShellのバージョンを確認しましょう。
```PowerShell
$PSVersionTable.PSVersion
```

PowerShellのバージョンの確認
PowerShellのバージョンが5.1(Majorが5、Minorが1)未満の場合は、以下のコマンドを実行してアップグレードしましょう。
```PowerShell
winget install --id Microsoft.PowerShell --source winget
```
3. Azure PowerShellのインストール
以下のコマンドを実行し、Azure PowerShellをインストールしましょう。インストール完了まで少し時間がかかりますが、エラーメッセージが出力されなければ成功です。
```PowerShell
Install-Module -Name Az -Repository PSGallery -Force
```
4. Azureアカウントにサインイン
以下のコマンドを実行し、リソースの管理を行うAzureアカウントにサインインしましょう。
```PowerShell
Connect-AzAccount
```

Azureアカウントにサインイン
上記のステップでローカルPCからAzure PowerShellの利用が可能になります。
Azure Cloud Shell
1. Azure Cloud Shellにアクセス
まずはAzure Cloud Shell公式サイトにアクセスし、「PowerShell」を選択します。

Azure Cloud Shellにアクセス
2. ストレージアカウントの接続(任意)
続いて、ストレージアカウントを接続するか確認するウィンドウが表示されます。必要に応じてストレージアカウントをマウントしましょう。

ストレージアカウントの接続(任意)
設定が完了すると、PowerShellが起動します。Azure Cloud Shellには、Azure PowerShellがプリインストールされているため、上記のステップですぐに利用可能です。
Dockerコンテナ
1. Azure PowerShellのDockerイメージを取得
ターミナルを起動し、以下のコマンドを実行してAzure PowerShellのDockerイメージを取得しましょう。
```bash
docker pull mcr.microsoft.com/azure-powershell
```

Azure PowerShellのDockerイメージを取得
2. Dockerコンテナを起動
以下のコマンドを実行してAzure PowerShellのDockerコンテナを起動しましょう。
```bash
docker run -it mcr.microsoft.com/azure-powershell
```
3. Azureアカウントにサインイン
以下のコマンドを実行し、リソースの管理を行うAzureアカウントにデバイス認証でサインインしましょう。
```bash
Connect-AzAccount -UseDeviceAuthentication
```

デバイス認証でAzureアカウントにサインイン
表示されたURLにアクセスし、9桁のコードを入力することでサインインできます。
上記のステップでDockerコンテナからAzure PowerShellの利用が可能になります。
Azure PowerShellの活用デモ
Azure PowerShellを活用することでAzure上の様々な操作が可能になりますが、このセクションでは「Azure OpenAI Serviceのリソースを作成し、作成したリソースを確認する」というデモを行います。
まずは利用手順のセクションに従ってAzure PowerShellを設定します。
次に以下のコマンドを実行し、Azure OpenAI Serviceのリソースを作成します。
```PowerShell
New-AzCognitiveServicesAccount `
-ResourceGroupName "#リソースグループ名" `
-Name "#リソース名" `
-Type "OpenAI" `
-SkuName "S0" `
-Location "East US"
```
実行が完了したので以下のコマンドで確認すると、結果が表示され、正しくリソースが作成できていることが分かりました。
```PowerShell
Get-AzCognitiveServicesAccount -ResourceGroupName "#リソースグループ名"
```

リソースの作成結果
Azure PowerShellの使い方のコツ
Azure PowerShellを効率的に使うためには、いくつかのベストプラクティスを取り入れることが有効です。ここでは、実務に役立つコツをご紹介します。
データの効率的なフィルタリング
Azure環境では、数百、数千のリソースを扱う場合もあります。大量のデータから必要な情報だけを抽出する技術は重要です。
- Where-Object:コマンドレットが返すオブジェクトのコレクションを、特定のプロパティ値に基づいて絞り込むために使用します。
- Select-Object:オブジェクトが持つ多数のプロパティの中から、必要なものだけを選択して表示を整形します。
例:WestUSリージョンにあり、サイズが`Standard_D2s`のVMの名前と電源状態だけを表示する
```PowerShell
Get-AzVM -ResourceGroupName "MyResourceGroup" -Location "WestUS" |
Where-Object { $_.HardwareProfile.VmSize -eq 'Standard_D2s' } |
Select-Object -Property Name, @{Name='PowerState'; Expression={$_.PowerState}}
```
上記のように、コマンドをパイプラインで繋ぎ、段階的にデータを絞り込んでいくのがPowerShellの基本的なフィルタリングです。
また、「Get-*」コマンドレットが提供する「-Name」や「-ResourceGroupName」などのパラメータを活用し、不要なデータを取得しないように心がけることも重要です。
「-WhatIf」による操作の事前確認
リソースの変更や削除といった操作を行う前に、そのコマンドが実行された場合に何が起こるかをプレビューできる「-WhatIf」パラメータは重要な安全機能です。
例:リソースグループを削除する前に、どのリソースが削除されるかを確認する
```PowerShell
Remove-AzResourceGroup -Name "MyCriticalResourceGroup" -WhatIf
```
上記のようなコマンドを実行するとメッセージが表示され、実行される操作の概要が示されます。本番環境での操作前には、`-WhatIf`を付けて実行することが推奨されます。
Try-Catchによるエラーハンドリング
スクリプトが予期せぬエラーで中断してしまうことを防ぎ、安定した自動化を実現するためには、Try-Catchブロックを活用しましょう。
- Tryブロック:エラーが発生する可能性のあるコードを囲みます。
- Catchブロック:Tryブロック内でエラーが発生した場合に実行されるコードを記述します。
例:存在しない可能性のあるVMの情報を取得しようとする
```PowerShell
try {
$vm = Get-AzVM -ResourceGroupName "MyResourceGroup" -Name "NonExistentVM" -ErrorAction Stop
Write-Host "VM $($vm.Name) の状態は $($vm.PowerState) です。"
}
catch {
Write-Warning "VMの取得に失敗しました。エラー: $($_.Exception.Message)"
}
```
上記のように「$_.Exception.Message」を使用すると、具体的なエラーメッセージを取得できます。
Azure PowerShellの活用シーン
Azure PowerShellは、ビジネス上の課題を解決するためのツールとして多様なシーンで活用できます。以下に3つの具体的なユースケースをご紹介します。
コスト管理のための自動スケジュール
テスト環境のVMは、業務時間外や休日には不要である場合が多いです。これらのVMを夜間や週末に自動的に停止し、翌朝に起動させることで、コンピューティングコストを削減できます。
特定のタグが付与されたVMをフィルタリングし、一括で状態を変更するスクリプトをAzure PowerShellで作成できます。この処理は、Azure AutomationのRunbook(実行可能なスクリプト)として実装し、スケジュール機能と組み合わせることが有効です。
リソースの自動ライフサイクル管理
サンドボックス環境や一時的なプロジェクトでは、不要になったリソースが放置されることが問題となります。Azure PowerShellを活用することで、リソースのライフサイクルを自動で管理できます。
例えば、「expireOn」というタグにリソースの有効期限日を設定するルールを設け、Azure PowerShellで実行可能なスクリプトを作成します。
そして、Azure Automationで毎日スクリプトを実行することで、「expireOn」タグの日付が過去になっているリソースを自動的に削除できます。
セキュリティ設定の自動チェック
企業のセキュリティポリシーがAzure環境全体で遵守されているか、手動で確認するのは困難です。例えば、全てのストレージアカウントで安全な通信(HTTPS)が有効になっているかを定期的にチェックする必要があります。
サブスクリプション内のストレージアカウントをフィルタリングし、「EnableHttpsTrafficOnly」というタグを取得するスクリプトを作成することで、HTTPS通信が無効になっているものをリストアップすることができます。
Azure PowerShell利用時の注意点
Azure PowerShellは有用なツールですが、効果的に利用するためにはいくつかの注意点を理解する必要があります。最後に、主な注意点を解説します。
破壊的変更の確認
Microsoftは、PowerShellモジュールのアップグレードの際に、コマンドレット名の変更、パラメータの削除、出力オブジェクトの構造変更などの破壊的変更を導入することがあります。
本番環境でスクリプトを安定して運用するためには、以下の対策が重要です。
- モジュールバージョンの固定
Azure Functionsのrequirements.psd1ファイルや、CI/CDエージェントのセットアップスクリプトで、使用するPowerShellモジュールのバージョンを明示的に指定しましょう。
- 公式ドキュメントの確認
新しいメジャーバージョンへアップグレードする前に、公式ドキュメントを参照し、スクリプトへの影響を確認しましょう。
- Previewモジュールの回避
Previewモジュールは新機能のテスト用であり、破壊的変更が頻繁に発生する可能性があるため、本番環境での使用は避けましょう。
PowerShell実行ポリシーの確認
PowerShellには、悪意のあるスクリプトの実行を防ぐためのセキュリティ機能として実行ポリシーが存在します。
Windowsクライアントでは、デフォルトでRestricted(スクリプト実行不可)に設定される場合があるため、スクリプトを実行する前に実行ポリシーを確認しましょう。
以下のコマンドを実行することで確認可能です。
```PowerShell
Get-ExecutionPolicy -List
```
以下に、主要な実行ポリシーとその意味を示します。
ポリシー | 意味 |
|---|---|
Restricted |
|
RemoteSigned |
|
Unrestricted |
|
Bypass | 何もブロックされず、確認画面も非表示 |
安全な資格情報の取り扱い
スクリプト内に資格情報をハードコーディングすることは、不正アクセスや情報漏洩といったセキュリティリスクにつながります。
資格情報を安全に取り扱うためには、シークレットや証明書をAzure Key Vaultに安全に保管し、スクリプト実行時にマネージドIDを使用して動的に取得するといった手法が推奨されます。
まとめ
本記事では、Azure PowerShellの基本的な概要から、主な機能、利用手順、活用例、注意点までを詳しく解説しました。
Azure PowerShellは、PowerShellの基盤を活用してAzureリソースを効率的に管理するためのツールです。
Azure PowerShellを使用することで、リソースの包括的な管理やスクリプトによる自動化が可能となり、業務効率を向上させることができます。
また、ローカルPC、Azure Cloud Shell、Dockerコンテナなど、さまざまな環境で利用可能であり、柔軟性の高いツールです。本記事でご紹介したコツや注意事項も参考に、Azure PowerShellを活用してAzureリソースの管理を最適化しましょう。
東京エレクトロンデバイスは企業のAzure導入を支援しています。お問い合わせはこちら




