Как передать параметры командлету из C#

У меня есть несколько сценариев powershell, которые я хочу вызывать из С#.

Из командной строки я бы сделал это:

Import-Module c:\provisioning\newModule.psm1 –Force
Get-MTMailbox -customerID custid0001

Это работает и дает правильный результат.

Я хочу вызывать свои сценарии из С#:

InitialSessionState initial = InitialSessionState.CreateDefault();
initial.ImportPSModule(new string[] { "C:\\provisioning\\newModule.psm1" });
RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
Runspace runspace = RunspaceFactory.CreateRunspace(initial);
runspace.Open();

PowerShell ps = PowerShell.Create();
ps.Runspace = runspace;
ps.AddCommand("Get-MTMailbox").AddArgument("-customerID custid0001");
// Also tried this. Still ignored.
//ps.AddParameter("-customerID", "custid0001");
ps.Invoke();
Collection<PSObject> results = ps.Invoke();
foreach (PSObject psObject in results)
{
    Console.Write("Result: "+psObject.ToString());
    if (psObject.BaseObject is System.Collections.Hashtable)
    {
        Hashtable ht = (Hashtable) psObject.BaseObject;
        foreach (DictionaryEntry keypair in ht)
        {
            Console.WriteLine(keypair.Key+" "+keypair.Value); 
        }

    }
}

Команда выполняется, но мои аргументы всегда игнорируются.

Я очень новичок в С#, поэтому, возможно, я не знаю, что искать.

Как правильно передать аргументы командлету на С#?


person Megasaur    schedule 16.09.2014    source источник


Ответы (1)


попробуйте с этим:

ps.AddParameter("customerID", "custid0001");

Вам не нужно - для указания имени аргумента

person CB.    schedule 16.09.2014