PowerShell über C# - PSArgumentException

Marshel87

Grünschnabel
Hallo alle miteinander^^
Bin ein blutiger Programmieranfänger und tüftel gerade an einem kleinen Programm, welches mir vorbestimmte Befehle in PowerShell ausführt... bei mir klappt das mit folgendem Code auch schon ganz gut :)

Code:
using System;
using System.Text;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.Management.Automation.Host;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Runspace myRunSpace = RunspaceFactory.CreateRunspace();
            myRunSpace.Open();

            //1. Befehlsaufruf

            Pipeline pipeLine = myRunSpace.CreatePipeline();
            Command myCommand = new Command("Get-Command");
            pipeLine.Commands.Add(myCommand);
            Collection<PSObject> commandResults = pipeLine.Invoke();


            foreach (PSObject cmdlet in commandResults)
            {
                string cmdletName = cmdlet.Properties["Name"].Value.ToString();
                Console.WriteLine(cmdletName);
            }

            Console.WriteLine();


            //2. Befehlsaufruf

            Pipeline pipeLine2 = myRunSpace.CreatePipeline();
            Command myCommand2 = new Command("Get-ChildItem");
            pipeLine2.Commands.Add(myCommand2);
            Collection<PSObject> commandResults2 = pipeLine2.Invoke();

            foreach (PSObject cmdlet in commandResults2)
            {
                string cmdletName = cmdlet.Properties["Name"].Value.ToString();
                Console.WriteLine(cmdletName);
            }

            Console.ReadLine();
        }
    }
}


Ist halt erstmal nur der Funktion halber, damit ich sehe dass es auch funktioniert *gg* richtig gearbeitet wird da später dann mit wenn alles läuft.
nur mein problem ist jetzt... ich habe die benötigte DLL für einen PowerShell zugriff als reference angegeben, und zwar die System.Management.Automation.dll.
Laut meinen informationen reicht es wenn ich die DLL und die .exe in einen ordner packe um sie auszuführen.
schicke ich nun die .exe und die .dll an einen anderen rechner und führe sie dort aus bekomme ich diese Exception mit der ich leider nichts anfangen kann...

"Unbehandelte Ausnahme: System.Management.Automation.Runspaces.PSSnapInException:
An error occurred when loading the system Windows PowerShell snap-ins. Please c
ontact Microsoft Support Services. ---> System.Management.Automation.PSArgumentE
xception: Unable to access Windows PowerShell registry information. ....usw."

kann mir wohl jemand weiterhelfen was ich falsch gemacht oder vergessen habe?

danke schonmal :)
MfG
Marcel
 
Meinem Wissen entsprechend, muss die PowerShell auf dem Zielrechner schon auch installiert sein.

Zu deinem Beitrag: Bitte halte dich an unsere Netiquette. Diese schreibt vor (ist übrigens bei der Eingabe des Beitrages fett zu lesen), dass auf eine korrekte Grammatik und Rechtschreibung (inkludiert Groß- und Kleinschreibung) zu achten ist.
 
PowerShell ist auf dem Zielrechner auch installiert.. war auch meine erste Vermutung, aber ist definitiv drauf.

(Ja sorry^^ Normal achte ich da nur bei Briefen und wichtigen Mails drauf :rolleyes: Macht der Gewohnheit ;) )
 
Zurück