Azure学習を始めると、VMひとつ作るにも `az vm create` と `New-AzVM` の2通りの方法が出てきて戸惑う。
この記事では、Azure CLIとPowerShell(Az モジュール)のコマンド体系・実行環境・構文の違いを、Linux VM構築の実践手順を通じて比較します。
どちらを日常操作の主軸に置くべきか、Linuxエンジニア視点の判断軸も示します。
この記事のポイント
・Azure CLIはLinux/Mac/Windowsで動くシェル向けツール
・PowerShell Az モジュールはWindows PowerShell文化圏の構文体系
・VM作成は az vm create(1行)vs New-AzVM(数十行)で記述量が大きく違う
・Linuxサーバー運用ならAzure CLIを主軸、WindowsAD連携ならPowerShellを使い分ける
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Azure CLIとPowerShellの違い(実行環境とコマンド体系)
Azure VMを操作するツールは大きく2系統に分かれる。Azure CLIは、Pythonで実装されたクロスプラットフォームのコマンドラインツールだ。
bash・zsh・PowerShellの上でも動き、`az` コマンドひとつで Azure のほぼすべての操作を実行できる。
Linux/Macを日常環境にするエンジニアにとって最も馴染みやすい。
PowerShell(Az モジュール)は、Microsoft製のタスク自動化シェル上で動くAzureモジュール群だ。
`New-AzVM`・`Get-AzVM`・`Remove-AzVM` のように、PowerShell標準の「動詞-名詞」構文でAzureリソースを操作する。
Windows ServerのActive Directory管理をPowerShellで行うチームは、同じ言語体系でAzure操作も書ける利点がある。
| 項目 | Azure CLI | PowerShell (Az) |
|---|---|---|
| 実行環境 | bash / zsh / sh / PowerShell 上 | PowerShell 7+ / Windows PowerShell |
| インストール | curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash |
Install-Module -Name Az |
| ログイン | az login |
Connect-AzAccount |
| VM作成 | az vm create(1コマンド) |
New-AzVM(事前にNIC/ディスク等を準備) |
| コマンド補完 | bash-completion 標準対応 | Tab補完あり(PSReadLine依存) |
| シェルスクリプト統合 | bash変数・パイプと自然に組み合わせ可 | PowerShellスクリプト(.ps1)内で使う |
az vm createでLinux VMを構築する(Azure CLI手順)
実行環境: Rocky Linux 9.4 / Ubuntu 24.04 LTS + Azure CLI 2.63.0 で動作確認済み。1. Azure CLIのインストールと確認
Ubuntu/Debianの場合、公式スクリプトで一発インストールできる。# Azure CLIインストール(Ubuntu/Debian系) curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash # バージョン確認 az --version
azure-cli 2.63.0 core 2.63.0 telemetry 1.1.0 Extensions: ...
2. ログインとサブスクリプション確認
# ブラウザ経由でログイン az login # 現在のサブスクリプション確認 az account show --query "{name:name, id:id, state:state}" -o table
Name Id State ----------------- ------------------------------------ ------- MySubscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Enabled
3. リソースグループとVNetの作成
# リソースグループ作成 az group create --name rg-demo --location japaneast # 仮想ネットワーク作成 az network vnet create --resource-group rg-demo --name vnet-demo --address-prefix 10.1.0.0/16 --subnet-name subnet-frontend --subnet-prefix 10.1.1.0/24
4. az vm createでVM作成
Azure CLIの強みは `az vm create` 1コマンドで、NIC・パブリックIP・OSディスクをまとめて作成できる点だ。az vm create --resource-group rg-demo --name vm-demo-linux --image Ubuntu2204 --size Standard_B2s --vnet-name vnet-demo --subnet subnet-frontend --admin-username azureuser --generate-ssh-keys --public-ip-sku Standard
{ "fqdns": "", "id": "/subscriptions/xxxx/resourceGroups/rg-demo/providers/Microsoft.Compute/virtualMachines/vm-demo-linux", "location": "japaneast", "macAddress": "00-22-48-xx-xx-xx", "powerState": "VM running", "privateIpAddress": "10.1.1.4", "publicIpAddress": "20.xxx.xxx.xxx", "resourceGroup": "rg-demo", "zones": "" }
5. SSH接続確認
# publicIpAddress の値でSSH接続 ssh azureuser@20.xxx.xxx.xxx # 接続後にOS確認 lsb_release -a
No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.4 LTS Release: 22.04 Codename: jammy
az vm create 1コマンドが裏でNIC・パブリックIP・NSG・OSディスクを自動生成してくれるため、手順が非常にシンプルだ。Azure CLIでのVM構築の詳細はAzureハンズオン講座(azure.linuxmaster.jp)でも体系的に解説している。
New-AzVMでLinux VMを構築する(PowerShell手順)
同じVMをPowerShellのAz モジュールで作成する手順を示す。Azure CLIと異なり、各リソースを個別に作成してVMに紐づける設計になっている。
1. Az モジュールのインストール
PowerShell 7.x がインストール済みの環境で実行する。# Az モジュールのインストール(要管理者権限) Install-Module -Name Az -AllowClobber -Scope CurrentUser # バージョン確認 Get-Module -Name Az -ListAvailable | Select-Object Name, Version
2. Connect-AzAccountでログイン
Connect-AzAccount # サブスクリプション確認 Get-AzSubscription | Select-Object Name, Id, State
3. New-AzVMでVM作成
PowerShellでは、NIC・サブネット・VNetを先に変数に格納してからVMを作成するパターンが一般的だ。# リソースグループ作成 $rg = "rg-demo-ps" $location = "japaneast" New-AzResourceGroup -Name $rg -Location $location # VNetとサブネット作成 $subnetConfig = New-AzVirtualNetworkSubnetConfig ` -Name "subnet-frontend" ` -AddressPrefix "10.2.1.0/24" $vnet = New-AzVirtualNetwork ` -Name "vnet-demo-ps" ` -ResourceGroupName $rg ` -Location $location ` -AddressPrefix "10.2.0.0/16" ` -Subnet $subnetConfig # パブリックIPとNIC作成 $pip = New-AzPublicIpAddress ` -Name "pip-vm-ps" ` -ResourceGroupName $rg ` -Location $location ` -AllocationMethod Static ` -Sku Standard $nic = New-AzNetworkInterface ` -Name "nic-vm-ps" ` -ResourceGroupName $rg ` -Location $location ` -SubnetId $vnet.Subnets[0].Id ` -PublicIpAddressId $pip.Id # VM設定オブジェクト作成 $vmConfig = New-AzVMConfig -VMName "vm-demo-ps" -VMSize "Standard_B2s" # OS・認証情報の設定 $cred = Get-Credential # ユーザー名とパスワードを入力 $vmConfig = Set-AzVMOperatingSystem ` -VM $vmConfig ` -Linux ` -ComputerName "vm-demo-ps" ` -Credential $cred # イメージ・NIC設定 $vmConfig = Set-AzVMSourceImage ` -VM $vmConfig ` -PublisherName "Canonical" ` -Offer "0001-com-ubuntu-server-jammy" ` -Skus "22_04-lts-gen2" ` -Version "latest" $vmConfig = Add-AzVMNetworkInterface -VM $vmConfig -Id $nic.Id # VM作成実行 New-AzVM -ResourceGroupName $rg -Location $location -VM $vmConfig
RequestId IsSuccessStatusCode StatusCode ReasonPhrase --------- ------------------- ---------- ------------ True OK OK
4. Get-AzVMでVM確認
Get-AzVM -ResourceGroupName $rg -Name "vm-demo-ps" | Select-Object Name, Location, @{N="Size";E={$_.HardwareProfile.VmSize}}
Name Location Size ---- -------- ---- vm-demo-ps japaneast Standard_B2s
Azure CLIとPowerShellの比較と使い分け判断軸
どちらのツールも機能差はほぼないが、チームの技術スタックと運用環境によって選択が変わる。| 判断基準 | 推奨ツール | 理由 |
|---|---|---|
| Linux/Macが日常環境 | Azure CLI | bash変数・パイプと組み合わせやすい |
| Windows Server + Active Directory 連携 | PowerShell (Az) | AD管理と同一言語体系で統一できる |
| シェルスクリプト自動化 | Azure CLI | az ... --query でJMESPath抽出が容易 |
| PowerShell DSC / Desired State Configuration | PowerShell (Az) | インフラ設定管理と統合しやすい |
| 対話的なVM作成・確認 | どちらでも可 | 手順の短さではAzure CLIが優位 |
| Terraform・Ansibleとの組み合わせ | Azure CLI | CLIプロバイダーが豊富 |
特にbashスクリプトによる定期バックアップや自動プロビジョニングには、Azure CLIの方が自然に書ける。
よくあるエラーと対処
「az: command not found」が出る
Azure CLIがインストールされていないか、PATHが通っていない状態だ。# PATHを確認 echo $PATH | tr ':' ' ' | grep -i azure # 手動でパスを通す(インストール先が /opt/az/bin の場合) export PATH=$PATH:/opt/az/bin echo 'export PATH=$PATH:/opt/az/bin' >> ~/.bashrc
「New-AzVM : The term is not recognized」が出る
Az モジュールがインポートされていない。PowerShellを再起動するか、明示的にインポートする。Import-Module Az # モジュールが見つからない場合は再インストール Install-Module -Name Az -Force -AllowClobber
「az vm create」でリソースグループが見つからないエラー
`--resource-group` に指定した名前が存在しないか、サブスクリプションが切り替わっている場合に発生する。# 現在のサブスクリプション確認 az account show --query name -o tsv # リソースグループの存在確認 az group exists --name rg-demo
PowerShellでSSHキー認証でなくパスワード認証になってしまう
`New-AzVM` はデフォルトでパスワード認証になる。SSH公開鍵を指定するには `Set-AzVMOperatingSystem` の `-DisablePasswordAuthentication` と `Add-AzVMSshPublicKey` を追加する必要がある。Azure CLIの `--generate-ssh-keys` のような「1オプションで完結」する機能はPowerShellにはないため、この点ではCLIの方がシンプルだ。
まとめ
| やりたいこと | コマンド(Azure CLI) | コマンド(PowerShell Az) |
|---|---|---|
| ログイン | az login |
Connect-AzAccount |
| リソースグループ作成 | az group create --name rg --location eastus |
New-AzResourceGroup -Name rg -Location eastus |
| VNet作成 | az network vnet create --name vnet ... |
New-AzVirtualNetwork -Name vnet ... |
| Linux VM作成 | az vm create --name vm --image Ubuntu2204 ... |
New-AzVM -ResourceGroupName rg ... |
| VM一覧確認 | az vm list -o table |
Get-AzVM | Select-Object Name, Location |
| VM削除 | az vm delete --name vm --resource-group rg --yes |
Remove-AzVM -Name vm -ResourceGroupName rg |
理由は3つ。1行でVM作成が完結すること・bashスクリプトとシームレスに統合できること・`--query` オプションで出力の加工が容易なことだ。
PowerShellはWindowsServerチームやDSCを使う環境で真価を発揮する。
チームの環境に合わせて使い分け、両方を読めるようにしておくと、どのAzure構築ドキュメントでも戸惑わなくなる。
AzureのVM構築から運用・監視まで、実機ハンズオン形式で学べる講座を用意しています。
>> Azure実践ハンズオン講座の詳細はこちら
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:Azureテナントとサブスクリプションの違いを体系的に解説|az CLIで階層構造を確認する手順
- この記事の属するカテゴリ:Azureへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます