Azureのリソースをコマンドラインで操作/管理する方法の1つとして「Azure PowerShell」がある。そのインストールや各種バージョンの確認、アップデートの方法と注意点を紹介しよう。
対象:Azure PowerShell(PowerShell用Azモジュール)、Windows 10/11
「Azure」で開発したり、作成したリソースを改修したりする際、自動化などのためにコマンドラインで作業したいことはないだろうか?
それには複数の方法が提供されている。その中から本Tech TIPSでは、「Azure PowerShell」をWindows 10/11搭載PCにセットアップする手順を紹介したい。これにより、手元のWindows 10/11からPowerShellのコマンドレットでAzureのリソースをデプロイしたり管理したりできるようになる。
「Azure PowerShell」という表記を見ると、PowerShellのAzure向けエディションというように受け止めても不思議ではない。しかし実態は、そうではない。
「Azure PowerShell」とは、ベースとなる「PowerShell」にAzure専用モジュール「Az」を組み込んで、Azureを操作するコマンドレットや関数などが使えるようにした環境を指す。Azure専用PowerShellが用意されているのではなく、PowerShellの「モジュール」という拡張機能を利用して、PowerShell上でAzureも操作できるようにしているのだ。
「Az」モジュールは、Windows 10/11標準装備の「PowerShell 5.1」と、執筆時点で最新の「PowerShell 7」のどちらにもインストールできる。ただ、PowerShell 5.1では使えないAzure用コマンドレットも散見される。そのため、特に理由がなければ、PowerShell 7をインストールして、そこにAzモジュールをインストールするのがよい。本記事でも、PowerShell 7を前提に解説する。
PowerShell 7が未インストールであれば、Azモジュールより先にインストールしておく。
PowerShell 7をインストールするには、複数の方法がある。以下ではその概要を紹介しよう。具体的な手順はTech TIPS「『最新版をインストールせよ』とPowerShell起動時に叱られたときの対処法」を参照していただきたい。
Windows 10/11に搭載されているパッケージ管理ツール「Winget」を以下のように実行すると、PowerShell 7をインストールできる。
winget install --id Microsoft.Powershell --source winget
途中でUAC(ユーザーアカウント制御)のダイアログが表示されるので、[はい]ボタンをクリックしてインストールを進める。
WingetでインストールしたPowerShellは、以下のコマンドラインで最新版にアップデートできる。
winget upgrade powershell
Microsoft Storeアプリを起動して、「powershell」というテキストを検索して見つかった中から、発行者が「Microsoft Corporation」であり、かつプレビュー(Preview)版でない製品版を見つける。あとは他のアプリと同じ手順でインストールできる。
Microsoft Storeからインストールすると、新版がリリースされると自動的にアップグレードされるため、手動でバージョンアップする手間をかけずに済む。
コマンドラインでもMicrosoft StoreからPowerShell 7をインストールできる。それには前述のWingetコマンドで、以下のようにオプションを指定すればよい。
winget install Powershell --source msstore
WingetコマンドやMicrosoft Storeアプリが利用できない環境では、以下のGitHubのページから.MSI形式のインストーラーをダウンロードして実行すると、PowerShell 7をインストールできる。
インストール後のアップデートにはWindows Updateを利用できる。Windows Updateで「その他のMicrosoft製品の更新プログラムを受け取る」というオプションを「オン」にすると、Windows Updateによるアップデート時にPowerShellの最新版もリストアップされて更新できるようになる。
PowerShell 7をインストールすると、[スタート]メニューや「Windowsターミナル」アプリに「PowerShell 7」または「PowerShell」というアプリが登録される(黒っぽいアイコンが関連付けられている)。よく似た「Windows PowerShell」(青っぽいアイコン)の方は、Windows 10/11標準装備のPowerShell(バージョン5.1)なので間違えないように注意しよう。
バージョン7の方のPowerShellを起動したら、次の「$PSVersionTable」という自動変数の内容を表示させるとバージョンを確認できる。
$PSVersionTable
PowerShellのバージョンは、この「PSVersion」プロパティに格納されている。
Azure PowerShellを利用するための前提条件には、PowerShellの「実行ポリシー(Execution Policy)」を「RemoteSigned」に設定することが含まれている。
実行ポリシーを確認するには、PowerShell 7上で以下のように「Get-ExecutionPolicy」コマンドレットを実行する。
Get-ExecutionPolicy -List
出力された一覧表で、「CurrentUser」「LocalMachine」がともに「RemoteSigned」以外であれば、以下のように「Set-ExecutionPolicy」コマンドレットを実行し、サインイン中のユーザーの実行ポリシーを「RemoteSigned」に変更する。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
もし「MachinePolicy」「UserPolicy」が「Undefined」以外に設定されている場合は、そのPCまたは所属ネットワークのシステム管理者が実行ポリシーを制限しているので、そのシステム管理者に相談や確認をした方がよい。
Azure PowerShellをインストールする、すなわちAzモジュールをPowerShellに組み込むには、以下のように「Install-Module」コマンドレットを実行する。このとき、インターネット上のサイトからモジュールがダウンロードされるので、インターネットに接続できる環境で実行する必要がある。
Install-Module -Name Az -Repository PSGallery -Force
「PSGallery」は「PowerShellギャラリー」を指していて、PowerShellのモジュールなどがまとまっている「リポジトリ」の1つである。上記のコマンドレットを実行すると、インターネット経由でAzモジュールがダウンロードされるので、インターネット接続は必須だ。
もし上の画面のように「PSGallery」が見つからない、というエラーが発生したら、次の「Register-PSRepository」コマンドレットを実行してリポジトリ設定を修復してからインストールを再実行する。
Register-PSRepository -Default
Azモジュールのインストール完了には、数分という単位で時間がかかる。これはAzureの多種多様なリソースを操作するためのパッケージが大量に含まれているからだ。そのため、インストールは時間に余裕があるときにした方が無難だろう。
PowerShellにAzモジュールがインストールされているかどうかは、次の「Get-InstalledModule」コマンドレットでバージョンなどが表示されるかどうかで確認できる。
Get-InstalledModule az
未インストールの場合は、以下の画面のようにエラーが赤文字で表示される。
インストール済みなら、Azモジュールの主要なプロパティが表形式で表示される。その[Version]列にAzモジュールのバージョンが記載されているはずだ。
Azモジュールでは、Microsoftによって新機能の追加や不具合の修正などが施された新版がときどきリリースされる。
そのため、ローカルのWindows 10/11環境でAzモジュールを最新に維持するには、以下の「Update-Module」コマンドレットをときどき実行してアップデートする必要がある。
Update-Module -Name Az -Force
もし上の画面のような警告メッセージ(「WARNING」から始まる黄色のテキスト)が表示されたら、いったんシステムを再起動するか、サインアウトしてサインインし直すかした後で、Update-Moduleコマンドレットを再実行した方がよい。
■関連リンク
Copyright© Digital Advantage Corp. All Rights Reserved.