私の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
はまだ機能しています。すでにインポートされているモジュールを編集して、変更をすぐに利用できるようにするにはどうすればよいですか。
モジュールがインポートされると、モジュールがメモリに読み込まれるため、その変更は認識されません。ただし、私は常にRemove-Module foo
に続いてImport-Module foo
を実行して新しい関数をロードすることができました。
つまり、PSD1ファイルは正しく表示されません。 ModuleToProcess
フィールドを 'MyModule.psm1'に設定する必要があります。次に、Import-Module MyModule
またはImport-Module .\mymodule.psd1
を実行すると、PowerShellは関連するMyModule.psm1
ファイルを検索してロードします。それが原因で、PowerShellがキャッシングしているキャッシュを実行しているのでしょうか?
使用 -Force
コマンドとImport-Module
とリロードします。