Get-Module

現在のセッションにインポート済みの、またはインポート可能なモジュールを取得します。

構文

Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-All]
   [<CommonParameters>]
Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-ListAvailable]
   [-Refresh]
   -CimSession <CimSession>
   [-CimResourceUri <Uri>]
   [-CimNamespace <String>]
   [<CommonParameters>]
Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-ListAvailable]
   [-Refresh]
   -PSSession <PSSession>
   [<CommonParameters>]
Get-Module
   [[-Name] <String[]>]
   [-FullyQualifiedName <ModuleSpecification[]>]
   [-All]
   [-ListAvailable]
   [-Refresh]
   [<CommonParameters>]

説明

このコマンドレットは Get-Module 、PowerShell セッションにインポートされた、またはインポートできる PowerShell モジュールを取得します。 返される Get-Module モジュール オブジェクトには、モジュールに関する重要な情報が含まれています。 モジュール オブジェクトを他のコマンドレット (コマンドレットなど) にImport-ModuleRemove-Moduleパイプすることもできます。

パラメーターがない場合は、 Get-Module 現在のセッションにインポートされたモジュールを取得します。 インストールされているすべてのモジュールを取得するには、 ListAvailable パラメーターを指定します。

Get-Module はモジュールを取得しますが、インポートされません。 Windows PowerShell 3.0 以降では、モジュールでコマンドを使用するとモジュールが自動的にインポートされますがGet-Module、コマンドによって自動インポートはトリガーされません。 コマンドレットを使用して、モジュールをセッションに Import-Module インポートすることもできます。

Windows PowerShell 3.0 以降では、リモート セッションからローカル セッションにモジュールをインポートできます。 この方法では、PowerShell の暗黙的リモート処理機能が使用され、コマンドレットの使用と Import-PSSession 同等です。 別のセッションからインポートされたモジュールでコマンドを使用する場合、コマンドはリモート セッションで暗黙的に実行されます。 この機能を使用すると、ローカル セッションからリモート コンピューターを管理できます。

また、Windows PowerShell 3.0 以降では、コマンドレット定義 XML (CDXML) ファイルでコマンドレットが定義されている共通情報モデル (CIM) モジュールを使用Get-ModuleImport-Moduleおよびインポートできます。 この機能を使用すると、C++ で記述されたコマンドレットなど、非マネージド コード アセンブリに実装されているコマンドレットを使用できます。

これらの新機能により、これらのコマンドレットは、 Get-Module Windows オペレーティング システムを実行するコンピューターや Import-Module 他のオペレーティング システムを実行するコンピューターを含む異種企業を管理するための主要なツールになります。

PowerShell と PowerShell リモート処理が有効になっている Windows オペレーティング システムを実行するリモート コンピューターを管理するには、リモート コンピューターに PSSession を作成し、 PSSession パラメーター Get-Module を使用して PSSession の PowerShell モジュールを取得します。 モジュールをインポートし、現在のセッションでインポートしたコマンドを使用すると、リモート コンピューターの PSSession で暗黙的にコマンドが実行されます。 この戦略を使用して、リモート コンピューターを管理できます。

同様の方法を使用して、PowerShell リモート処理が有効になっていないコンピューターを管理できます。 これには、Windows オペレーティング システムを実行していないコンピューターや、PowerShell を使用しているが PowerShell リモート処理が有効になっていないコンピューターが含まれます。

まず、リモート コンピューターで CIM セッションを作成します。 CIM セッションは、リモート コンピューター上の Windows Management Instrumentation (WMI) への接続です。 次に、CIM セッションから CIM モジュールを取得するには 、CIMSession パラメーター Get-Module を使用します。 コマンドレットを使用して CIM モジュールを Import-Module インポートし、インポートしたコマンドを実行すると、コマンドはリモート コンピューターで暗黙的に実行されます。 この WMI と CIM の戦略を使用して、リモート コンピューターを管理できます。

例 1: 現在のセッションにインポートされたモジュールを取得する

Get-Module

このコマンドは、現在のセッションにインポートされているモジュールを取得します。

例 2: インストールされているモジュールと使用可能なモジュールを取得する

Get-Module -ListAvailable

このコマンドは、コンピューターにインストールされていて現在のセッションにインポートできるモジュールを取得します。

Get-Moduleは、$env:PSModulePath 環境変数で指定されたパスで使用可能なモジュールを探します。 PSModulePath の詳細については、「about_Modules」および「about_Environment_Variables」を参照してください。

例 3: エクスポートされたすべてのファイルを取得する

Get-Module -ListAvailable -All

このコマンドは、すべての利用可能なモジュールのすべてのエクスポートされたファイルを取得します。

例 4: 完全修飾名でモジュールを取得する

$FullyQualifedName = @{ModuleName="Microsoft.PowerShell.Management";ModuleVersion="3.1.0.0"}
Get-Module -FullyQualifiedName $FullyQualifedName | Format-Table -Property Name,Version

Name                             Version
----                             -------
Microsoft.PowerShell.Management  3.1.0.0

このコマンドは、完全修飾パラメーターを使用してモジュールの完全修飾名を指定して、Microsoft.PowerShell.Management モジュールを取得します。 その後、コマンドはコマンドレットに結果を Format-Table パイプ処理して、結果を列見出しとして 名前バージョン を持つテーブルとして書式設定します。

例 5: モジュールのプロパティを取得する

Get-Module | Get-Member -MemberType Property | Format-Table Name

Name
----
AccessMode
Author
ClrVersion
CompanyName
Copyright
Definition
Description
DotNetFrameworkVersion
ExportedAliases
ExportedCmdlets
ExportedCommands
ExportedFormatFiles
ExportedFunctions
ExportedTypeFiles
ExportedVariables
ExportedWorkflows
FileList
Guid
HelpInfoUri
LogPipelineExecutionDetails
ModuleBase
ModuleList
ModuleType
Name
NestedModules
OnRemove
Path
PowerShellHostName
PowerShellHostVersion
PowerShellVersion
PrivateData
ProcessorArchitecture
RequiredAssemblies
RequiredModules
RootModule
Scripts
SessionState
Version

このコマンドは、返される PSModuleInfo オブジェクトのプロパティを Get-Module 取得します。 モジュール ファイルごとに 1 つのオブジェクトがあります。

プロパティを使用して、モジュール オブジェクトを書式設定したり、フィルター処理したりできます。 プロパティの詳細については、「 PSModuleInfo プロパティ」を参照してください。

出力には、Windows PowerShell 3.0 で導入された AuthorCompanyName などの新しいプロパティが含まれます。

例 6: すべてのモジュールを名前でグループ化する

Get-Module -ListAvailable -All | Format-Table -Property Name, Moduletype, Path -Groupby Name

Name: AppLocker

Name      ModuleType Path
----      ---------- ----
AppLocker   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\AppLocker\AppLocker.psd1


   Name: Appx

Name ModuleType Path
---- ---------- ----
Appx   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Appx\en-US\Appx.psd1
Appx   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Appx\Appx.psd1
Appx     Script C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Appx\Appx.psm1


   Name: BestPractices

Name          ModuleType Path
----          ---------- ----
BestPractices   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\BestPractices\BestPractices.psd1


   Name: BitsTransfer

Name         ModuleType Path
----         ---------- ----
BitsTransfer   Manifest C:\Windows\system32\WindowsPowerShell\v1.0\Modules\BitsTransfer\BitsTransfer.psd1

このコマンドは、インポートされたすべてのモジュール ファイルと使用可能なモジュール ファイルの両方を取得し、モジュール名でグループ化します。 これにより、それぞれのスクリプトによってエクスポートされるモジュール ファイルを確認できます。

例 7: モジュール マニフェストの内容を表示する

これらのコマンドは、Windows PowerShell BitsTransfer モジュールのモジュール マニフェストの内容を表示します。

モジュールにはマニフェスト ファイルを含める必要はありません。 マニフェスト ファイルがある場合、マニフェスト ファイルはバージョン番号を含めるためだけに必要です。 ただし、マニフェスト ファイルは、多くの場合、モジュール、その要件、およびその内容に関する有用な情報を提供します。

# First command
$m = Get-Module -list -Name BitsTransfer

# Second command
Get-Content $m.Path

@ {
    GUID               = "{8FA5064B-8479-4c5c-86EA-0D311FE48875}"
    Author             = "Microsoft Corporation"
    CompanyName        = "Microsoft Corporation"
    Copyright          = "Microsoft Corporation. All rights reserved."
    ModuleVersion      = "1.0.0.0"
    Description        = "Windows PowerShell File Transfer Module"
    PowerShellVersion  = "2.0"
    CLRVersion         = "2.0"
    NestedModules      = "Microsoft.BackgroundIntelligentTransfer.Management"
    FormatsToProcess   = "FileTransfer.Format.ps1xml"
    RequiredAssemblies = Join-Path $psScriptRoot "Microsoft.BackgroundIntelligentTransfer.Management.Interop.dll"
}

最初のコマンドは、BitsTransfer モジュールを表す PSModuleInfo オブジェクトを取得します。 オブジェクトを変数に $m 保存します。

2 番目のコマンドでは、コマンドレットを Get-Content 使用して、指定したパス内のマニフェスト ファイルの内容を取得します。 ここでは、ドット付き表記を使用してマニフェスト ファイルへのパスを取得し、オブジェクトの Path プロパティに格納しています。 出力には、モジュール マニフェストの内容が表示されます。

例 8: モジュール ディレクトリ内のファイルを一覧表示する

dir (Get-Module -ListAvailable FileTransfer).ModuleBase

Directory: C:\Windows\system32\WindowsPowerShell\v1.0\Modules\FileTransfer
Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        12/16/2008  12:36 PM            en-US
-a---        11/19/2008  11:30 PM      16184 FileTransfer.Format.ps1xml
-a---        11/20/2008  11:30 PM       1044 FileTransfer.psd1
-a---        12/16/2008  12:20 AM     108544 Microsoft.BackgroundIntelligentTransfer.Management.Interop.dll

このコマンドは、モジュールのディレクトリ内のファイルを一覧表示します。 これは、インポートの前にモジュールの内容を確認するためのもう 1 つの方法です。 モジュールによっては、ヘルプ ファイルやモジュールについて記述した ReadMe ファイルが含まれている場合があります。

例 9: コンピューターにインストールされているモジュールを取得する

$s = New-PSSession -ComputerName Server01

Get-Module -PSSession $s -ListAvailable

これらのコマンドは、Server01 コンピューターにインストールされているモジュールを取得します。

最初のコマンドでは、このコマンドレットを New-PSSession 使用して、Server01 コンピューターに PSSession を作成します。 このコマンドは、 PSSession を $s 変数に保存します。

2 番目のコマンドでは、 PSSession パラメーターと ListAvailable パラメーター Get-Module を使用して、$s変数の PSSession 内のモジュールを取得します。

他のセッションからコマンドレットにモジュールを Import-Module パイプする場合は、 Import-Module 暗黙的なリモート処理機能を使用して、モジュールを現在のセッションにインポートします。 これは、コマンドレットの使用と Import-PSSession 同じです。 現在のセッションに含まれるモジュールのコマンドレットを使用することができますが、これらのコマンドレットを使用するコマンドは、実際にはリモート セッションで実行されます。 詳細については、次のトピックを参照してください。 Import-Module および Import-PSSession

例 10: Windows オペレーティング システムを実行しないコンピューターを管理する

この例のコマンドを使用すると、Windows オペレーティング システムを実行していないリモート コンピューターのストレージ システムを管理できます。 この例では、コンピューターの管理者によってモジュール検出用の WMI プロバイダーがインストールされているため、CIM コマンドでプロバイダー用の既定値を使用できます。

$cs = New-CimSession -ComputerName RSDGF03
Get-Module -CimSession $cs -Name Storage | Import-Module
Get-Command Get-Disk

CommandType     Name                  ModuleName
-----------     ----                  ----------
Function        Get-Disk              Storage

Get-Disk

Number Friendly Name              OperationalStatus          Total Size Partition Style
------ -------------              -----------------          ---------- ---------------
0      Virtual HD ATA Device      Online                          40 GB MBR

最初のコマンドでは、コマンドレットを New-CimSession 使用して RSDGF03 リモート コンピューターにセッションを作成します。 このセッションは、リモート コンピューター上の WMI に接続します。 このコマンドは、CIM セッションを変数に $cs 保存します。

2 番目のコマンドは、変数内の CIM セッションを $cs 使用して、RSDGF03 コンピューターでコマンドを実行 Get-Module します。 ここでは、Name パラメーターを使用して、Storage モジュールを指定しています。 このコマンドは、パイプライン演算子 (|) を使用して Storage モジュールを Import-Module コマンドレットに送信し、それをローカル セッションにインポートします。

3 番目のコマンドは、 Get-Command Storage モジュールの Get-Disk コマンドでコマンドレットを実行します。 CIM モジュールをローカル セッションにインポートすると、PowerShell は CIM モジュールを表す CDXML ファイルを PowerShell スクリプトに変換します。これは、ローカル セッションの関数として表示されます。

4 番目のコマンドは、コマンドを Get-Disk 実行します。 コマンドはローカル セッションで入力されますが、暗黙的にインポート先のリモート コンピューター上で実行されます。 コマンドは、リモート コンピューターからオブジェクトを取得してローカル セッションに返します。

パラメーター

-All

このコマンドレットは、入れ子になったモジュール、マニフェスト (.psd1) ファイル、スクリプト モジュール (.psm1) ファイル、バイナリ モジュール (.dll) ファイルなど、各モジュール フォルダー内のすべてのモジュールを取得することを示します。 このパラメーターを指定しない場合は、 Get-Module 各モジュール フォルダー内の既定のモジュールのみを取得します。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CimNamespace

CIM モジュールを公開する代替 CIM プロバイダーの名前空間を指定します。 既定値は、モジュール検出用の WMI プロバイダーの名前空間です。

Windows オペレーティング システムを実行していないコンピューターやデバイスから CIM モジュールを取得するには、このパラメーターを使用します。

このパラメーターは Windows PowerShell 3.0 で導入されました。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CimResourceUri

CIM モジュールの代替の場所を指定します。 既定値は、リモート コンピューター上のモジュール探索 WMI プロバイダーのリソース URI です。

Windows オペレーティング システムを実行していないコンピューターやデバイスから CIM モジュールを取得するには、このパラメーターを使用します。

このパラメーターは Windows PowerShell 3.0 で導入されました。

Type:Uri
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CimSession

リモート コンピューター上の CIM セッションを指定します。 CIM セッションを含む変数、または CIM セッションを取得するコマンド ( Get-CimSession コマンドなど) を入力します。

Get-Module では、CIM セッション接続を使用してリモート コンピューターからモジュールを取得します。 コマンドレットを使用 Import-Module してモジュールをインポートし、現在のセッションでインポートしたモジュールのコマンドを使用すると、コマンドは実際にリモート コンピューターで実行されます。

このパラメーターを使用すると、Windows オペレーティング システムを実行していないコンピューターやデバイス、PowerShell を使用しているが PowerShell リモート処理が有効になっていないコンピューターからモジュールを取得できます。

CimSession パラメーターは、CIMSession 内のすべてのモジュールを取得します。 ただし、インポートできるのは、CIM ベースのモジュールとコマンドレット定義 XML (CDXML) ベースのモジュールのみです。

Type:CimSession
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-FullyQualifiedName

ModuleSpecification オブジェクトの形式でモジュールの名前を指定します。 これらのオブジェクトについては、MSDN ライブラリの ModuleSpecification コンストラクター (ハッシュテーブル) の「解説」セクションで説明されています。 たとえば、 FullyQualifiedName パラメーターは、次の形式で指定されたモジュール名を受け取ります。

  • @{ModuleName = "modulename";ModuleVersion = "version_number"}
  • @{ModuleName = "modulename";ModuleVersion = "version_number";Guid = "GUID"}

ModuleNameModuleVersion は必須ですが、Guid は省略可能です。

Name パラメーターと同じコマンドで完全修飾名パラメーターを指定することはできません。

Type:ModuleSpecification[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ListAvailable

このコマンドレットがインストールされているすべてのモジュールを取得することを示します。 Get-Module は、 PSModulePath 環境変数にリストされているパス内のモジュールを取得します。 このパラメーターを指定しない場合、 Get-ModulePSModulePath 環境変数に一覧表示され、現在のセッションに読み込まれているモジュールのみを取得します。 ListAvailable は、PSModulePath 環境変数に含まれていないモジュールが現在のセッションに読み込まれている場合でも、これらのモジュールに関する情報を返しません。

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

このコマンドレットが取得するモジュールの名前または名前パターンを指定します。 ワイルドカード文字を使用できます。 名前 Get-Moduleをパイプでパイプすることもできます。 Name パラメーターと同じコマンドで完全修飾名パラメーターを指定することはできません。

名前 は、モジュール GUID を値として受け入れることができません。 GUID を指定してモジュールを返すには、代わりに FullyQualifiedName を 使用します。

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-PSSession

指定したユーザー管理 PowerShell セッション (PSSession) 内のモジュールを取得します。 セッションを含む変数、セッションを取得するコマンド (コマンドなど Get-PSSession )、またはセッションを作成するコマンド (コマンドなど) を New-PSSession 入力します。

セッションがリモート コンピューターに接続されている場合は、 ListAvailable パラメーターを指定する必要があります。

Get-ModulePSSession パラメーターを使用するコマンドは、コマンドレットをInvoke-Command使用して PSSession でコマンドを実行Get-Module -ListAvailableすることと同じです。

このパラメーターは Windows PowerShell 3.0 で導入されました。

Type:PSSession
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Refresh

このコマンドレットが、インストールされているコマンドのキャッシュを更新することを示します。 コマンドのキャッシュは、セッションの開始時に作成されます。 これにより、コマンドレットは Get-Command 、セッションにインポートされていないモジュールからコマンドを取得できます。

このパラメーターは、セッションが開始された時点からモジュールの内容が変化する開発およびテスト シナリオ用に用意されています。

コマンドで Refresh パラメーターを指定する場合は、 ListAvailable を指定する必要があります。

このパラメーターは Windows PowerShell 3.0 で導入されました。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

String

モジュール名をこのコマンドレットにパイプできます。

出力

PSModuleInfo

このコマンドレットは、モジュールを表すオブジェクトを返します。 ListAvailable パラメーターを指定すると、Get-Module同じプロパティとメソッドを持つ PSModuleInfo オブジェクトの型である ModuleInfoGrouping オブジェクトを返します。

メモ

  • Windows PowerShell 3.0 以降では、PowerShell に含まれるコア コマンドはモジュールにパッケージ化されています。 例外は、スナップイン (PSSnapin) である Microsoft.PowerShell.Core です。 既定では、Microsoft.PowerShell.Core スナップインのみがセッションに追加されます。 モジュールは最初の使用時に自動的にインポートされ、コマンドレットを Import-Module 使用してインポートできます。

  • Windows PowerShell 3.0 以降では、PowerShell でインストールされるコア コマンドはモジュールにパッケージ化されています。 Windows PowerShell 2.0 およびそれ以降のバージョンの PowerShell で古いスタイルのセッションを作成するホスト プログラムでは、コア コマンドはスナップイン (PSSnapins) にパッケージ化されます。 例外は Microsoft.PowerShell.Core です。これは常にスナップインです。 また、コマンドレットによって New-PSSession 開始されたリモート セッションは、コア スナップインを含む古いスタイルのセッションです。

    コア モジュールを使用して新しいスタイルのセッションを作成する CreateDefault2 メソッドの詳細については、MSDN ライブラリの CreateDefault2 メソッド を参照してください。

  • Get-Module は、PSModulePath 環境変数 ($env: PSModulePath ) の値に格納されている場所にあるモジュールのみを取得します。 コマンドレットの Path パラメーターを使用して他の Import-Module 場所にモジュールをインポートできますが、コマンドレットを Get-Module 使用してモジュールを取得することはできません。

  • また、PowerShell 3.0 以降では、新しいプロパティがオブジェクト Get-Module に追加され、モジュールがインポートされる前でも簡単に学習できるようになりました。 インポートする前にすべてのプロパティが設定されます。 これには、モジュールがエクスポートするコマンドを一覧表示する ExportedCommandsExportedCmdletsおよび ExportedFunctions プロパティが含まれます。

  • ListAvailable パラメーターは、適切な形式のモジュール 、つまり、モジュール フォルダーの名前と同じ基本名を持つ少なくとも 1 つのファイルを含むフォルダーのみを取得します。 ベース名は、ファイル名拡張子のない名前です。 異なる名前のファイルを含むフォルダーはコンテナーと見なされますが、モジュールとは見なされません。

    .dll ファイルとして実装されているが、モジュール フォルダーに囲まれていないモジュールを取得するには、 ListAvailable パラメーターと All パラメーターの両方を指定します。

  • CIM セッション機能を使用するには、リモート コンピューターにおいて、WS-Management リモート処理と Common Information Model (CIM) 標準の Microsoft 実装である Windows Management Instrumentation (WMI) が必要です。 さらに、モジュール検出用の WMI プロバイダーまたは同じ基本機能を備えた代替 WMI プロバイダーもコンピューターに必要です。

    CIM セッション機能は、Windows オペレーティング システムを実行していないコンピューターと、PowerShell が有効になっているが PowerShell リモート処理が有効になっていない Windows コンピューターで使用できます。

    CIM パラメーターを使用して、PowerShell リモート処理が有効になっているコンピューターから CIM モジュールを取得することもできます。 これには、ローカル コンピューターが含まれます。 ローカル コンピューターで CIM セッションを作成すると、PowerShell は WMI ではなく DCOM を使用してセッションを作成します。