Vorrei passare un array associativo da C# a Powershell. Come esempio Vorrei eseguire questa linea powershell di codice:Passaggio di un array associativo da C# a Powershell
PS C:\> get-command | select name, @{N="Foo";E={"Bar"}} -first 3
Name Foo
---- ---
Add-Content Bar
Add-History Bar
Add-Member Bar
mi vuoi fare questo attraverso una pipeline di distinti Comandi anziché un singolo comando contrassegnata come script. Ecco il codice:
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.Add("get-command");
Command c = new Command("select-object");
List properties = new List();
properties.Add("name");
properties.Add("@{N=\"Foo\";E={\"Bar\"}}");
c.Parameters.Add("Property", properties.ToArray());
c.Parameters.Add("First", 3);
pipeline.Commands.Add(c);
pipeline.Commands.Add("Out-String");
Collection retval = pipeline.Invoke();
runspace.Close();
StringBuilder stringBuilder = new StringBuilder();
foreach (PSObject obj in retval)
Console.WriteLine(obj.ToString());
Ma questo array associativo viene passata come parametro a Select-Object non viene analizzato correttamente. Questo è ciò che viene fuori l'altro lato:
PS C:\test> c:\test\Bin\Debug\test.exe
Name @{N="Foo";E={"Bar"}}
---- --------------------
Add-Content
Add-History
Add-Member
Cosa c'è di sbagliato con il modo Sto installando i parametri di comando Select-Object?
tipo su 'Mananagement', anche "l'errore CS0117: 'System.Management.Automation.ScriptBlock' non contiene una definizione per 'Crea'" - a parte questo, funziona alla grande – xcud
ah, devi usare v1 powershell (il creare statico è su v2). scusa! – x0n
Questo è quello che ho capito. Soluzione accettata comunque. Ho adattato ciò che hai fornito per ottenere ciò di cui avevo bisogno e l'ho applicato alla vera app. Funziona alla grande. Il migliore di sempre. – xcud