ja-JP/about_Modules.help.txt
|
TOPIC about_Modules 簡単な説明 PowerShell モジュールのインストール、インポート、および使用方法を 説明します。 詳細な説明 PowerShell はコマンドシェルであり、スクリプト言語でもあります。PowerShell のコマンドは、スクリプト、関数、またはコマンドレットとして実装されます。 この言語には、処理の構造と論理を提供するキーワードや、変数、プロバイダー、 エイリアスなどのその他のリソースが含まれます。 モジュールは、コマンドレット、プロバイダー、関数、変数、その他のリソースを 含めることができる、自己完結型で再利用可能な単位です。既定では、PowerShell はモジュールのコマンドを初めて使うときに、インストール済みモジュールを 自動的に読み込みます。自動モジュール読み込みの動作は、変数 $PSModuleAutoLoadingPreference を使って構成できます。詳しくは about_Preference_Variables を参照してください。 PowerShell セッション中に、モジュールを手動で読み込みまたは読み込み解除する こともできます。モジュールを読み込みまたは再読み込みするには Import-Module を使います。モジュールを読み込み解除するには Remove-Module コマンドレットを 使います。 PowerShell には基本的なモジュールのセットが含まれています。だれでも C# または PowerShell スクリプト言語自体を使って新しいモジュールを作成できます。C# で コンパイル済み .NET アセンブリとして記述されたモジュールはネイティブ モジュールと呼ばれます。PowerShell で記述されたモジュールはスクリプト モジュールと呼ばれます。 この記事は PowerShell モジュールの使用方法を説明します。PowerShell モジュール の作成方法については、Writing a PowerShell Module を参照してください。 注: PowerShell 3.0 より前は、コマンドレットとプロバイダーは PowerShell スナップインにパッケージ化されていました。PowerShell 3.0 以降では、 Microsoft.PowerShell.Core スナップインが既定ですべてのセッションに追加 されます。これは PowerShell に残っている唯一のスナップインです。他のすべての スナップインはモジュールに変換されました。新しいスナップインの作成は サポートされなくなりました。 既定のモジュールの場所 PowerShell はモジュールを次の既定の場所に格納します。 - Windows の場合 - 全ユーザースコープ - $Env:ProgramFiles\PowerShell\Modules - 現在のユーザースコープ - $HOME\Documents\PowerShell\Modules - PowerShell に同梱されるモジュール - $PSHOME\Modules - Linux と macOS の場合 - 全ユーザースコープ - /usr/local/share/powershell/Modules - 現在のユーザースコープ - $HOME/.local/share/powershell/Modules - PowerShell に同梱されるモジュール - $PSHOME/Modules 既定では、現在のユーザーの Modules フォルダーは存在しません。Install-Module または Install-PSResource を使って CurrentUser スコープにモジュールを インストールすると、これらのコマンドレットが現在のユーザーの Modules フォルダーを作成します。フォルダーが存在しない場合は手動で作成できます。 現在のユーザー用の Modules フォルダーを作成するには、次のコマンドを使います。 $folder = New-Item -Type Directory -Path $HOME\Documents\PowerShell\Modules これらの場所は $Env:PSModulePath 環境変数に自動的に含まれます。既定の モジュールの場所について詳しくは、about_PSModulePath を参照してください。 モジュールの自動読み込み インストール済みモジュールのコマンドを初めて実行すると、PowerShell はその モジュールを自動的にインポート (読み込み) します。モジュールは $Env:PSModulePath 環境変数で指定された場所に格納されている必要があります。 モジュールの自動読み込みにより、セットアップやプロファイルの構成なしで モジュールのコマンドを使えます。次の各例は、Get-CimInstance を含む CimCmdlets モジュールをセッションにインポートします。 - コマンドの実行 Get-CimInstance Win32_OperatingSystem - コマンドの取得 Get-Command Get-CimInstance - コマンドのヘルプの取得 Get-Help Get-CimInstance Get-Command をワイルドカード文字 (*) と共に使う場合、PowerShell はモジュール をインポートしません。ワイルドカードを使って、セッションで不要かもしれない モジュールを読み込まずに、コマンドを検出できます。 モジュールの手動インポート モジュールの手動インポートは、モジュールが $Env:PSModulePath 環境変数で 指定された場所にインストールされていない場合、またはモジュールがパッケージ化 されたモジュールではなくスタンドアロンの .dll や .psm1 ファイルとして提供 される場合に必要です。 また、PowerShell プロバイダーを使うコマンドはモジュールを自動的にインポート しません。たとえば WSMan: ドライブを必要とする Get-PSSessionConfiguration コマンドレットなどのコマンドを使う場合は、 WSMan: ドライブを含む Microsoft.WSMan.Management モジュールをインポートする ために Import-Module コマンドレットを実行する必要があるかもしれません。 セッションでのモジュールのインポート方法を変更したい場合もあります。 たとえば Import-Module の Prefix パラメーターは、モジュールからインポート されるコマンドレットの名詞部分に固有のプレフィックスを追加します。NoClobber パラメーターは、セッション内の既存のコマンドを隠したり置き換えたりする コマンドをモジュールが追加するのを防ぎます。詳しくは「名前の競合の管理」を 参照してください。 次の例は BitsTransfer モジュールを現在のセッションにインポートします。 Import-Module BitsTransfer $Env:PSModulePath にないモジュールをインポートするには、モジュールフォルダー への完全修飾パスを使います。たとえば C:\ps-test ディレクトリの TestCmdlets モジュールをセッションに追加するには、次のように入力します。 Import-Module C:\ps-test\TestCmdlets モジュールフォルダーに含まれていないモジュールファイルをインポートするには、 コマンド内でモジュールファイルへの完全修飾パスを使います。たとえば C:\ps-test ディレクトリの TestCmdlets.dll モジュールを追加するには、次の ように入力します。 Import-Module C:\ps-test\TestCmdlets.dll セッションへのモジュールの追加について詳しくは、Import-Module を参照して ください。 セッションごとに開始時にモジュールをインポートする Import-Module コマンドは、モジュールを現在の PowerShell セッションに インポートします。開始するすべての PowerShell セッションにモジュールを インポートするには、PowerShell プロファイルに Import-Module コマンドを 追加します。 プロファイルについて詳しくは、about_Profiles を参照してください。 公開済みモジュールのインストール 公開済みモジュールは、PowerShell ギャラリーなどの登録済みリポジトリから 入手できるモジュールです。PowerShellGet モジュールと Microsoft.PowerShell.PSResourceGet モジュールは、PowerShell モジュールの 検索、インストール、登録済みリポジトリへの公開のためのコマンドレットを 提供します。 PowerShellGet モジュールは PowerShell 5.0 以降に含まれています。 Microsoft.PowerShell.PSResourceGet モジュールは PowerShell 7.4 以降に含まれ、 PowerShell の推奨パッケージマネージャーです。 Microsoft.PowerShell.PSResourceGet は、古いバージョンの PowerShell でも PowerShellGet と並べてインストールできます。PowerShell ギャラリーから モジュールをインストールするには、Install-Module または Install-PSResource コマンドレットを使います。 Get-Command Install-Module, Install-PSResource 詳しくは PowerShellGet Overview を参照してください。 モジュールの手動インストール 別のフォルダーからモジュールの内容をコピーして、モジュールを手動で インストールできます。そのフォルダーは、ローカルマシン上の別の場所にあっても、 別のマシンにインストールされていてもかまいません。モジュールを手動で インストールするには、モジュールフォルダー全体を $Env:PSModulePath に含まれる 新しい場所にコピーします。 PowerShell では Copy-Item コマンドレットを使います。たとえば次のコマンドを 実行して、C:\PSTest から MyModule フォルダーをコピーします。 $modulePath = $HOME\Documents\PowerShell\Modules\MyModule Copy-Item -Path C:\PSTest\MyModule\* -Destination $modulePath -Recurse モジュールは任意の場所にインストールできますが、既定のモジュールの場所に インストールすると管理が容易になります。 インストール済みモジュールの検索 Get-Module コマンドレットは、現在の PowerShell セッションに読み込まれている PowerShell モジュールを取得します。 Get-Module 一覧表示されるモジュールには、$Env:PSModulePath だけでなく、任意の場所から インポートされたモジュールが含まれることがあります。 $Env:PSModulePath にインストールされているモジュールを一覧表示するには、 次のコマンドを使います。 Get-Module -ListAvailable このコマンドは、現在のセッションにインポートされたモジュールだけでなく、 $Env:PSModulePath にインストールされているすべてのモジュールを取得します。 このコマンドは、他の場所にインストールされているモジュールは一覧表示しません。 詳しくは Get-Module を参照してください。 モジュール内のコマンドの一覧表示 Get-Command コマンドレットを使って、利用可能なすべてのコマンドを検索します。 Get-Command コマンドレットのパラメーターを使って、モジュール、名前、名詞 などでコマンドをフィルター処理できます。 モジュール内のすべてのコマンドを検索するには、次のように入力します。 Get-Command -Module <module-name> たとえば BitsTransfer モジュールのコマンドを検索するには、次のように入力 します。 Get-Command -Module BitsTransfer Get-Command コマンドレットについて詳しくは、Get-Command を参照してください。 モジュールの削除 モジュールを削除すると、そのモジュールが追加したコマンドがセッションから 削除されます。たとえば次のコマンドは、現在のセッションから BitsTransfer モジュールを削除します。 Remove-Module BitsTransfer モジュールの削除は、モジュールのインポート操作を逆転させます。モジュールの 削除は、モジュールをアンインストールするわけではありません。詳しくは Remove-Module を参照してください。 コマンドはモジュールとスナップインからセッションに追加できます。モジュールは、 コマンドレット、プロバイダー、関数などのあらゆる種類のコマンドや、変数、 エイリアス、PowerShell ドライブなどの項目を追加できます。スナップインは コマンドレットとプロバイダーだけを追加できます。 セッションからモジュールを削除する前に、次のコマンドを使って、削除したい モジュールを判別します。 たとえば次のコマンドを使って、Get-Date と Get-Help コマンドレットのソースを 検索します。 Get-Command Get-Date, Get-Help -All | Select-Object -Property Name, CommandType, Module ,PSSnapIn Get-Date には 2 つのソースがあります。1 つは関数で、もう 1 つは Microsoft.PowerShell.Utility モジュールのコマンドレットです。モジュールは Remove-Module を使って削除できます。関数を削除するには、Function: ドライブ から削除できます。 Remove-Item Function:Get-Date Function: ドライブについて詳しくは、about_Function_Provider を参照して ください。 名前の競合の管理 名前の競合は、セッション内の複数のコマンドが同じ名前を持つときに発生します。 モジュールをインポートすると、そのモジュール内のコマンドがセッション内の コマンドや項目と同じ名前を持つ場合に名前の競合が発生します。 Import-Module は、現在のセッション内のコマンドを隠したり置き換えたりする コマンドを追加することがあります。名前の競合により、コマンドが隠されたり 置き換えられたりすることがあります。コマンドの置き換えは、インポートした モジュールにセッション内の既存のコマンドと同じ名前のコマンドが含まれる場合に 発生します。新しくインポートされたコマンドが既存のコマンドより優先されます。 たとえばセッションに同じ名前の関数とコマンドレットが含まれる場合、PowerShell は既定で関数を実行します。セッションに同じ名前で同じ種類のコマンド (たとえば 同じ名前の 2 つのコマンドレット) が含まれる場合、既定では最も新しく追加された コマンドを実行します。 優先順位規則の説明や隠されたコマンドの実行方法を含む詳細については、 about_Command_Precedence を参照してください。 隠されたコマンドや置き換えられたコマンドは、コマンド名を修飾することで 実行できます。コマンド名を修飾するには、実行したいバージョンのコマンドを 含むモジュールの名前を追加します。例: Microsoft.PowerShell.Utility\Get-Date モジュール名のプレフィックスを付けて Get-Date を実行すると、 Microsoft.PowerShell.Utility モジュールのバージョンが実行されることが 保証されます。 名前の競合を検出するには、Get-Command コマンドレットの All パラメーターを 使います。既定では、Get-Command はコマンド名を入力したときに実行される コマンドだけを取得します。All パラメーターは、セッション内で指定した名前を 持つすべてのコマンドを取得します。 名前の競合を防ぐには、Import-Module コマンドレットの NoClobber または Prefix パラメーターを使います。Prefix パラメーターは、インポートされるコマンドの 名前にプレフィックスを追加して、セッション内で一意にします。NoClobber パラメーターは、セッション内の既存のコマンドを隠したり置き換えたりする コマンドをインポートしません。 Import-Module の Alias、Cmdlet、Function、Variable パラメーターを使って、 インポートしたいコマンドだけを選択し、セッションで名前の競合を引き起こす コマンドを除外することもできます。 モジュールの作成者は、モジュールマニフェストの DefaultCommandPrefix プロパティを使ってすべてのコマンド名に既定のプレフィックスを追加することで、 名前の競合を防げます。Prefix パラメーターの値は DefaultCommandPrefix の値 より優先されます。 関連項目 about_Command_Precedence about_Group_Policy_Settings Get-Command Get-Help Get-Module Import-Module Remove-Module Install-Module Install-PSResource ---- 原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP |