Frage

Ich habe einige Arbeit Hosting-Powershell getan und haben viel gelesen getan, aber ich seltsame Verhalten sehe und es macht mich frage mich, ob ich den Wirt nicht verstehen, wie ich dachte, ich tat.

Ich schaffe eine Runspace mit RunspaceFactory:

var runSpace = RunspaceFactory.CreateRunspace() 

ich unter Verwendung der gleichen Runspace während der Ausführung meiner Gastgeber. Wenn ich den Host zum ersten Mal starten rufe ich einen Befehl Import-Module:

var pipeline = runSpace.CreatePipeline();
var psCommand = new Command("Import-Module");
psCommand.Parameters.Add("Name", directory + "MyModule");
pipeline.Commands.Add(psCommand);
pipeline.Invoke();

„Verzeichnis“ ist ein Verzeichnis, das nicht das Standardmodulverzeichnis ist. Ich kann die gleiche Import-Modul-Befehl mit der exakt gleichen Syntax in einem Powershell-Befehlsfenster verwenden und es funktioniert gut. Der Befehl erscheint erfolgreich in meinem benutzerdefinierten Host zu vervollständigen. Später in der Ausführung ich versuche, ein Cmdlet innerhalb des Moduls zu nennen:

var pipeline = runSpace.CreatePipeline();
var psCommand = new Command("Get-Stuff");
pipeline.Commands.Add(psCommand);
var stuff = pipeline.Invoke();

Aber auf invoke bekomme ich die Ausnahme, dass "Get-Stuff" ist kein cmdlet..etc.

Mein Verständnis war das ein Runspace diese Art des Zustandes beibehalten würde. Ist dies nicht der Fall? Ich habe eine Vielzahl erfolgreich in einem anderen Projekt erstellt. Die beiden wichtigsten Unterschiede sind, dass das Host den Standardmodulverzeichnis nutzt (Documents \ Modules \) und ich rufe die CreateRunspace () -Methode wie folgt aus:

var Runspace = Runspace.CreateRunspace (Custom);

Muss ich eine PSHost definieren Lage sein Zustand zu halten?

War es hilfreich?

Lösung

Dies war tatsächlich ein Problem mit dem Verzeichnis des Moduls ein nachgestellten mit „\“.

Import-Module -Name "D: \ aaa \ Modules \ XYD \". Ist ungültig

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top