Ich baue ein Modul, das ein Cmdlet exportiert, das ich über mein Profil zur Verfügung stellen möchte. Die Implementierung dieses Cmdlets ist auf mehrere Implementierungsdateien verteilt, die Implementierungsfunktionen enthalten, die ich nicht öffentlich zugänglich machen möchte. Also verwende ich Export-ModuleMember, um sie zu verstecken.Powershell Moduldesign - Export-ModuleMember
get_something.psm1
import-module .\get_something_impl.psm1
function Get-Something {
[cmdletbinding()]
Get-SomethingImplementation
}
Export-ModuleMember -Function Get-Something
ich dann get_something.psm1 zu meinem Profil hinzufügen. Durch den Export nur Get-Something bleiben alle meine Implementierungsfunktionen "privat".
Das Problem, das ich bei dem Verwenden des Export-ModuleMember-Befehls erfahre, muss ich ein Modul in meinen Implementierungsdateien jedes Mal importieren, wenn ich eine Funktion darin benötige. Angenommen, ich habe ein Modul person.psm1 mit einer Get-Person-Funktion, die ich in allen Implementierungsdateien aufrufen muss. Jetzt muss ich person.psm1 in jede einzelne Datei importieren, die ich Get-Person aufrufen muss. Dies ist ein Ergebnis der Verwendung von Export-ModuleMember -Function Get-Something. Ohne sie müsste ich person.psm1 nur einmal importieren und es wäre verfügbar.
Im Wesentlichen blockiert Export-ModuleMember nicht nur meine Implementierung nach außen, es blockiert es von meiner eigenen Implementierung.
Wird dies als normaler Aspekt beim Design von Powershell-Modulen erwartet und betrachtet?