PowerShell Gallery での始め方

PowerShell Galleryは、初心者でも経験豊富なユーザーでも、すべてのPowerShellニーズの究極の目的地です。そして良いニュースは、PowerShellコミュニティによって作成された豊富なドキュメント、スクリプト、モジュール、その他のリソースの大規模なコレクションがあることです。

このチュートリアルでは、PowerShell Galleryからリソースを見つけてダウンロードしてインストールする方法を学びます。

今日はスクリプトのゲームを向上させるためにチューニングしてください!

前提条件

このチュートリアルは実践的なデモンストレーションになります。操作方法を確認するには、PowerShell 5.1以降がインストールされたシステムが必要です。このチュートリアルでは、PowerShell 5.3がインストールされたWindows 10を使用していますが、他のバージョンのWindowsとPowerShellでも動作するはずです。

.NET Frameworkのインストール

PowerShell Galleryに飛び込む前に、まずPowerShell Galleryとやり取りする方法が必要です。.NET Frameworkがその主要な方法です。

最初に.NET Frameworkをインストールする必要があります。これはPowerShellGetモジュールに必須です。PowerShellGetモジュールには、少なくとも.NET Framework v4.5+が必要です。PowerShellGetモジュールを使用すると、PowerShellアーティファクトを検出、インストール、更新、公開できます。

しかし、このチュートリアルでは、.NET Framework v4.8をインストールします。

? .NET Framework v4.8 がすでにシステムにインストールされている可能性があります。その場合は、このステップをスキップできます。ただし、.NET Frameworkの古いバージョンがある場合はアンインストールし、新しいバージョンにアップグレードしてください。

.NET Frameworkをインストールするには、以下の手順に従ってください:

1. 好きなウェブブラウザを開き、公式.NET Frameworkダウンロードページに移動します。

2. 次に、.NET Framework 4.8 Developer Packをダウンロードするリンクをクリックし、ndp48-devpack-enuに類似したファイルをダウンロードします。このファイルは、NET Frameworkバージョン4.8のインストーラーパッケージです。

Downloading .NET Framework 4.8

3. ダウンロードが完了するのを待ち、ダウンロードしたファイルをダブルクリックして.NET Frameworkインストーラーを起動します。

Launching the .NET Framework installer

? .NET Frameworkのインストールで問題が発生している場合は、[互換性モード]でインストールファイルを実行してみてください。

4. ライセンス条件に同意するために下のチェックボックスをオンにし、インストールボタンをクリックして.NET Framework 4.8をインストールします。

Accepting the license terms and conditions

以下に、システムの構成によっては数分かかる場合がある、インストールの進行状況が表示されます。

Viewing the installation progress

5. インストールが完了したら、閉じるボタンをクリックしてインストーラーを閉じてください。

Finishing the .NET Framework installation

6. 最後に、管理者として PowerShell を開く そして、以下の[Start-Process]コマンドを実行してプログラムの追加または削除アプリケーション (appwiz.cpl) を開きます。このアプリケーションを使用して、システムにインストールされているプログラムのリストを表示できます。

Start-Process "appwiz.cpl”

インストールされたプログラムのリストに .NET Framework 4.8 のエントリが表示されます。以下のように表示されます。

Verifying the .NET Framework 4.8 installation

PowerShellGet モジュールのインストール

.NET Framework をインストールして実行したら、PowerShell ギャラリーのコアコンポーネントである PowerShellGet モジュールをインストールできます。

PowerShellGetのバージョン(1.0.0.1)は、Windows PowerShell 5.1にプリインストールされていますが、機能が制限されています。Windows PowerShell 5.1またはそれ以前を使用している場合は、PowerShell Galleryの更新された機能を検討してください。最新バージョンは、執筆時点で3.0.17-beta17です。

PowerShellGetモジュールをインストールするには、以下の手順に従ってください:

1. 以下のコマンドを実行します。このコマンドは出力を生成しませんが、PowerShellセッションでTransport Layer Security (TLS) 1.2を有効にします。TLSは、インターネットを介して送信されるデータを暗号化するセキュリティプロトコルです。

TLS 1.2を有効にすることは重要です。なぜならPowerShellはデフォルトでTLS 1.2を使用するように構成されていないからです。このコマンドは、System.Net.ServicePointManagerオブジェクトのSecurityProtocolをTLS 1.2(Tls12)に設定します。これにより、TLS 1.2以上を使用してPowerShell Galleryにアクセスできるようになります。

[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12

? この変更は現在のPowerShellセッションにのみ適用されます。ただし、PowerShellプロファイルに上記のコマンドを追加することで、常にTLS 1.2を使用するようにPowerShellを構成できます。

次に、以下のInstall-PackageProviderコマンドを実行して、NuGetパッケージプロバイダーをインストールしてください。NuGetパッケージプロバイダーを使用すると、NuGetパッケージリポジトリからパッケージをインストールおよび管理できます。このリポジトリは、.NETプラットフォーム向けのオープンソースパッケージの中央リポジトリです。

NuGetパッケージプロバイダーは、PowerShell Galleryからモジュールをインストールするための[Install-Module]コマンドを使用する前に必要です。なぜなら、PowerShell Galleryの多くのモジュールはNuGetパッケージとして配布されているからです。

Install-PackageProvider -Name NuGet -Force
Installing the NuGet package provider

インストールされたら、NuGet APIを活用できます。NuGet APIを使用すると、NuGetパッケージリポジトリにアクセスして、そのリポジトリと対話できるツールやアプリケーションを作成できます。どのように対話するか?さまざまなタスクを実行することができます。例えば、パッケージの検索、インストール、および更新です。

一般的に、クライアントとサーバーの機能に応じて、要件に応じて使用できるNuGet APIのバージョンは2つあります。

Version Description Usage
v2 Uses XML as the data format for communication between the client and server.

This version is based on the original NuGet API introduced in 2011 and is the legacy version of the API.

The v2 API is recommended if you use an older version of NuGet or a client or server that does not support the v3 API.

This version is supported by all versions of NuGet and is compatible with older clients and servers.

v3 Uses JSON as the data format for communication between the client and server. This version was introduced in 2013 as an improvement over the v2 API and included many new features and improvements.

Many new features included are support for side-by-side package installation, improved search capabilities, and large package support.

The v3 API is recommended if you use a newer NuGet version. The v3 API is faster and more efficient than the v2 API.

This version is not supported by older versions of NuGet and may not be compatible with older clients and servers.

? 一般的に、NuGet API v3が最も最新の機能と機能を提供するため、お勧めです。

3. 以下の Set-PSRepository コマンドを実行し、出力は提供されませんが、PowerShell ギャラリー (PSGallery) リポジトリを信頼されたパッケージソースとして設定します。これにより、PowerShell ギャラリーからモジュールをインストールできるようになります。

Set-PSRepository -Name PSGallery -InstallationPolicy Trusted -ErrorAction Stop

4. 今度は、以下の Install-Module コマンドを実行して、PowerShellGet モジュールの最新バージョン (-AllowPrerelease) をインストールします。

Install-Module -Name PowerShellGet -AllowPrerelease -Force
Installing the latest version of PowerShellGet

5. 最後に、以下の Get-InstalledModule コマンドを実行して、PowerShellGet モジュールが正常にインストールされているかを確認します。

Get-InstalledModule PowerShellGet

インストールされた PowerShellGet モジュールがリストされ、PSGallery がリポジトリになっていれば、正常にインストールされています。

Verifying the PowerShellGet module installation

PowerShell ギャラリーからモジュールを発見する

PowerShellGet モジュールをインストールしたので、PowerShell ギャラリーからモジュールを検索してインストールできます。これにより、PowerShell 環境の機能を拡張し、複雑なタスクを効率的に自動化できます。

PowerShellギャラリーでモジュールを検索するには、Find-Moduleコマンドレットを使用できます。このコマンドレットは、モジュール名、バージョン、またはタグなどの指定された検索条件に一致するモジュールをPowerShellギャラリーで検索します。

1. 以下のFind-Moduleコマンドを実行して、AzureRMに一致する名前のモジュールをPowerShellギャラリーで検索します。

Find-Module -Name AzureRM

以下の出力には、PowerShellギャラリーで名前がAzureRMと一致するモジュールが1つだけ表示されます。各モジュールの名前、バージョン、リポジトリなどの基本情報も表示できます。

Discovering modules from the PowerShell Gallery

2. 次に、以下のいずれかのコマンドを実行して、-Tagを使用してキーワードAzureを使用してモジュールを検索します。 -Tagパラメータは大文字と小文字を区別しないため、azureまたはAzureをタグキーワードとして使用できます。

モジュールにタグを使用する理由は何ですか? タグは、モジュールに関連付けられたキーワードやラベルであり、PowerShellギャラリー内のコンテンツと機能を説明します。

たとえば、モジュールがAzureクラウドプラットフォームに関連している場合、Azureキーワードをタグ付けできます。これにより、Azure関連のリソースに興味を持つユーザーがAzureタグを検索してモジュールを簡単に見つけて探すことができます。

Find-Module -Tag 'Azure'
Find-Module -Tag 'azure'

PowerShell Galleryは、多くの作者によって提供されるリソースの幅広いリポジトリです。そして、Azureのような人気のキーワードに関連する多くのモジュールがあります。

その結果、キーワードやタグに一致するモジュールの長いリストが表示されます。以下のスクリーンショットに示すように。

Searching for modules in the PowerShell Gallery using a tag

? 関連するリソースを見つけるのを早めるために、タグを使用して関連するモジュールをグループ化することもできます。たとえば、Hyper-VやVMwareなどの仮想化技術に関連するモジュールをグループ化するために、Virtualizationというタグを使用します。

3. 次のコマンドを実行して、Find-Moduleコマンドレットのパラメータを組み合わせて特定のモジュールを絞り込み、検索します。

以下のコマンドは、次のパラメータを考慮してPowerShell Galleryからモジュールを検索します:

  • -Name – 特定の名前Az.Computeのモジュールを検索します。

  • -TagAzureおよびMicrosoftというタグが付いているモジュールを検索します。
Find-Module -Name 'Az.Compute' -Tag 'Azure', 'Microsoft’
Filtering module search results

モジュールのインストールと更新

興味のあるモジュールを見つけたら、そのモジュールをインストールするのは数回のキーストロークで済みます。PowerShell Galleryからモジュールをダウンロードしてローカルシステムにインストールするために、Install-Moduleコマンドレットを使用できます。

1. 以下のコマンドを実行して、PowerShell GalleryからAz.Computeモジュールをダウンロードしてインストールします。

成功した場合、このコマンドは出力を生成しませんが、次のステップでインストールが確認できます。

Install-Module -Name 'Az.Compute'

2. 次に、Get-InstalledModuleコマンドを実行して、Az.Computeモジュールがシステムにインストールされているかを確認します。

Get-InstalledModule -Name 'Az.Compute'
Verifying a module installation

? または、パラメータなしでGet-InstalledModuleコマンドレットを実行すると、システムにインストールされたすべてのモジュールのリストが表示されます。ただし、インストールされたモジュールが多すぎる場合、リストをスクロールする際に目が痛くなる可能性があるので注意してください。

Listing all installed modules

3. 以下のUpdate-Moduleコマンドを実行します。このコマンドは出力を提供しませんが、特定のモジュール(つまり、Az.Compute)の最新バージョンを検索し、更新します。

インストールされたモジュールの更新には、バグ修正、新機能、その他の改善が含まれる場合があります。

Update-Module -Name Az.Compute

PowerShellモジュールのアンインストール

システムからモジュールを削除する必要がある場合があります。たとえば、もうモジュールが必要ない場合や問題がある場合です。

システムからモジュールをアンインストールするには、Uninstall-Moduleコマンドレットを使用します。このコマンドレットはモジュールとそのすべてのファイルをシステムから削除し、実質的にアンインストールします。

? モジュールをアンインストールする際には、その影響を慎重に考慮してください。モジュールのアンインストールによって、モジュールに依存する他のプログラムやスクリプトが壊れるなど、予期しない結果が生じる可能性があります。

以下のUninstall-Moduleコマンドを実行して、システムから特定のモジュール(Az.Compute)をアンインストールします。このコマンドは、アンインストールが成功した場合は出力を生成しません。

Uninstall-Module -Name Az.Compute

? 他のプログラムやスクリプトが現在そのモジュールを使用している場合、Uninstall-Moduleコマンドレットはエラーをスローし、アンインストールは失敗します。

結論

PowerShellモジュールは、PowerShell環境に機能を追加する強力なツールです。そして、このチュートリアルではPowerShellギャラリーと共に、わずかなコマンドでモジュールを見つけてインストールすることができます。

PowerShellギャラリーを活用し、PowerShellスクリプトやワークフローをカスタマイズして強化するためのPowerShellモジュールを見つけましょう!

Source:
https://adamtheautomator.com/powershell-gallery/