web-dev-qa-db-ja.com

インポート済みのモジュールを編集する

私のpowershellモジュール(MyModule.psm1)をインポートする前に、それに1つの関数を記述しました。

Function T1()
{
    Write-Host "T1 is just called" -ForegroundColor red
}

私のMyModule.psd1

@{
    PowerShellVersion = '2.0'
    PowerShellHostName = ''
    PowerShellHostVersion = '2.0'
    RequiredModules = @()
    ScriptsToProcess = @()
    NestedModules = @()
    FunctionsToExport = '*'
    CmdletsToExport = '*'
    VariablesToExport = '*'
    ModuleList = @()
    FileList = @()
}

これは、両方のファイルを次の場所にコピーしたときに正常にインポートされます。

C:\Users\fwaheed\Documents\WindowsPowerShell\Modules\MyModule

また、PowerShellセッションでT1を実行できます。しかし、今私は同じモジュールに新しい関数を追加したかった:

Function T2()
{
    Write-Host "Its now T2.." -ForegroundColor red
}

PowerShellセッションを再起動した後でも、T2は認識されませんが、T1はまだ機能しています。すでにインポートされているモジュールを編集して、変更をすぐに利用できるようにするにはどうすればよいですか。

28
Farrukh Waheed

モジュールがインポートされると、モジュールがメモリに読み込まれるため、その変更は認識されません。ただし、私は常にRemove-Module fooに続いてImport-Module fooを実行して新しい関数をロードすることができました。

つまり、PSD1ファイルは正しく表示されません。 ModuleToProcessフィールドを 'MyModule.psm1'に設定する必要があります。次に、Import-Module MyModuleまたはImport-Module .\mymodule.psd1を実行すると、PowerShellは関連するMyModule.psm1ファイルを検索してロードします。それが原因で、PowerShellがキャッシングしているキャッシュを実行しているのでしょうか?

29
Keith Hill

使用 -ForceコマンドとImport-Moduleとリロードします。

47
Alex Kwitny