Windows10にAzure PowerShell をインストールしてみた


自分のwindows10 環境にAzure powershell をインストールしてみました。

#環境
以下自前PCの環境です。
・windows10 
OSバージョン/ビルド番号
Microsoft Windows [Version 10.0.19042.1165]
※Dosコマンドの「ver」で確認。

PS環境

```
PS C:\WINDOWS\system32> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      19041  1151
```


要件：
PowerShell バージョン 5.0 以降のメジャーバージョンが必要のようです。
windows10であれば大丈夫みたいです。

#準備

###PowerShellのバージョン確認
1.[スタート] メニューを開き、「Windows PowerShell」と入力

2.インストールされているPowerShellのバージョンを確認する
コマンド:$PSVersionTable.PSVersion

```
PS C:\WINDOWS\system32> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      19041  1151
```



###ExecutionPolicyの設定値確認
PowerShellでスクリプト実行するために「ExecutionPolicy」の設定値が「RemoteSigned」になっている必要があるため、まずはその値の確認と、必要なら変更をします。

・以下確認コマンド・当方PCでの実行結果

```:RemoteSigned以外
PS C:\WINDOWS\system32> Get-ExecutionPolicy
Restricted
```
ExecutionPolicyの値を「RemoteSigned」へ変更。以下コマンドを実施

```
Set-ExecutionPolicy RemoteSigned
```
すると、、

```
PS C:\WINDOWS\system32> Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"):
```

[Y] はい(Y) を選択し、再度「ExecutionPolicy」を確認する

```
PS C:\WINDOWS\system32> Get-ExecutionPolicy
RemoteSigned
PS C:\WINDOWS\system32>
```
「RemoteSigned」へ変更されている


#Azure PowerShellのAzモジュールのインストール
Azモジュールは、PowerShell ギャラリーと呼ばれるグローバル リポジトリから入手できる。
PowerShell ギャラリーからモジュールをインストールするには、管理者特権の PowerShell シェルが必要

▼手順
以下のMicrosoftページより引用
https://docs.microsoft.com/ja-jp/learn/modules/automate-azure-tasks-with-powershell/5-create-resource-interactively?pivots=windows

>#####1.[スタート] メニューを開き、「Windows PowerShell」と入力。

>#####2.[Windows PowerShell] アイコンを右クリックし、[管理者として実行] を選択します。

>#####3.[ユーザー アカウント制御] ダイアログで、[はい] を選択します。

>#####4.次のコマンドを入力して、Enter キーを押します。

```
PS C:\WINDOWS\system32> Install-Module -Name Az -AllowClobber -SkipPublisherCheck
```

・コマンドでは NuGet を利用してコンポーネントを取得します。以下のようにインストールした NuGet のバージョンによっては、最新バージョンの NuGet をダウンロードしてインストールするように求められる場合がある。

```
続行するには NuGet プロバイダーが必要です
PowerShellGet で NuGet ベースのリポジトリを操作するには、'2.8.5.201' 以降のバージョンの NuGet
プロバイダーが必要です。NuGet プロバイダーは 'C:\Program Files\PackageManagement\ProviderAssemblies' または
'C:\Users\*****\AppData\Local\PackageManagement\ProviderAssemblies' に配置する必要があります。'Install-PackageProvider
-Name NuGet -MinimumVersion 2.8.5.201 -Force' を実行して NuGet プロバイダーをインストールすることもできます。今すぐ
PowerShellGet で NuGet プロバイダーをインストールしてインポートしますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"):
```
[Y] はい(Y) で続行


既定では、PowerShell ギャラリーは、PowerShellGet 用の信頼できるリポジトリとしては構成されないよう。 以下のようにPSGallery の初回使用時には、次のプロンプトが表示されるよう。

```
信頼されていないリポジトリ
信頼されていないリポジトリからモジュールをインストールしようとしています。このリポジトリを信頼する場合は、Set-PSReposit
ory コマンドレットを実行して、リポジトリの InstallationPolicy の値を変更してください。'PSGallery'
からモジュールをインストールしますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"):
```
[Y] はい(Y)で続行。

#インストール後の確認
Azモジュールがインストールされたことを確認する

```
PS C:\WINDOWS\system32> Get-InstalledModule -Name Az

Version    Name                                Repository           Description
-------    ----                                ----------           -----------
6.4.0      Az                                  PSGallery            Microsoft Azure PowerShell - Cmdlets to manage r...
```
#Azure コマンドレットをインポート
PowerShell では、起動時に中心的なコマンドレットのみが既定で読み込まれる。 Azure で使用する必要があるコマンドレットは読み込まれないので PowerShellの開始時にコマンドレットを手動でインポートする。

```
PS C:\WINDOWS\system32> Import-Module Az
```
#Azure PowerShellのバージョン確認方法

```
Get-InstalledModule -Name Az -AllVersions
```
結果例

```
Version    Name                                Repository           Description
-------    ----                                ----------           -----------
6.4.0      Az                                  PSGallery            Microsoft Azure PowerShell - Cmdlets to manage r...
```


#Azureへの接続確認
Azure コマンドを実行する前に認証する必要があります。 Connect-AzAccount コマンドレットを実行する

```
PS C:\WINDOWS\system32> Connect-AzAccount
```
#サブスクリプションの操作
特定のサブスクリプションに対してコマンドを実行するように Azure PowerShell を構成する
・ アクティブなサブスクリプションを確認する。
```get-AzContext```

・アクティブなサブスクリプションが違った場合の操作。アカウントのサブスクリプションの一覧表示
```get-AzSubscription```

表示例

```
Get-AzSubscription

Name                               Id                      TenantId                        State
----                               --                      --------                        -----
Subscription1                      yyyy-yyyy-yyyy-yyyy     aaaa-aaaa-aaaa-aaaa             Enabled
Subscription2                      xxxx-xxxx-xxxx-xxxx     aaaa-aaaa-aaaa-aaaa             Enabled
Subscription3                      zzzz-zzzz-zzzz-zzzz     bbbb-bbbb-bbbb-bbbb             Enabled
```


・操作したいサブスクリプションIDを指定して変更
```Select-AzSubscription -SubscriptionId 'サブスクリプションのID'```


#参考文献
以下参考にさせてもらった文献です。
[microsoft learn](https://docs.microsoft.com/ja-jp/learn/modules/automate-azure-tasks-with-powershell/5-create-resource-interactively?pivots=windows)
[Azure PowerShellのインストール手順（Azモジュール）及びコマンド一覧の確認方法](https://rainbow-engine.com/azure-powershell-install/)

#さいごに
閲覧ありがとうございました。2回目の投稿です。少し記事を書くことに慣れてきたのか記事を書くスピードが少しあがったような気がします。本記事が皆さんの参考になりましたら幸いです。