Ich habe ein Skript, das ich interaktiv von der PowerShell-Eingabeaufforderung verwenden möchte. Das Skript muss ein lokales Skriptmodul verwenden.Wie kann ich ein PowerShell-Modul in einem Skript verwenden, ohne das Modul in der Benutzersitzung zu belassen?
Ich kann nicht sehen, wie das Modul zu importieren/verwenden, so dass es nicht in der aktuellen Sitzung geladen bleibt.
Beispiel
A-Modul (mymodule.psm1) ...
function Test-Method
{
write-host "Test-Method invoked"
}
... und ein Skript (script.ps1)
Import-Module .\MyModule
Test-Method
nun das Skript ausgeführt an der PowerShell-Eingabeaufforderung ...
PS C:\temp> Get-Module | % {$_.Name}
Microsoft.PowerShell.Management
Microsoft.PowerShell.Utility
PS C:\temp> .\script.ps1
Test-Method invoked
PS C:\temp> Get-Module | % {$_.Name}
Microsoft.PowerShell.Management
Microsoft.PowerShell.Utility
MyModule
Wie kann mein Skript MyModule.psm1 importieren und verwenden, ohne dass es in der aktuellen Sitzung des Aufrufers geladen wird? Bedenkt man, dass der Aufruf das Modul bereits importiert hat und nicht möchte, dass es vom Skript entladen wird (das Entfernen des Moduls nach Abschluss des Skripts ist also nicht wirklich gut genug).
Ich habe als Dot-Sourcing das Modul, anstatt zu importieren, aber ich mag das Modul für die in PowerShell Import-Module vs Dot Sourcing
Das ist mehr oder weniger wo ich hin musste. Für mich ist es nicht gut, PowerShell als (traditionelle) Shell zu benutzen - soweit ich sicher war, dass mir etwas fehlte. –
Wofür steht "ipmo"? Das habe ich noch nie gesehen und Google hilft nicht zu viel. – jpmc26
@ jpmc26 'ipmo' ist ein Alias für' Import-Module'. –