Sto tentando di eseguire uno script PowerShell da C#. Non ho problemi a passare le stringhe allo script, tuttavia quando provo a passare un array allo script PowerShell viene lanciata un'eccezione. ecco il codice C#:C# che passa una matrice a uno script PowerShell
string [] test = {"1","2","3","4"};
RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.ApartmentState = System.Threading.ApartmentState.STA;
runspace.ThreadOptions = PSThreadOptions.UseCurrentThread;
runspace.Open();
RunspaceInvoke invoker = new RunspaceInvoke();
invoker.Invoke("Set-ExecutionPolicy Unrestricted");
Pipeline pipeline = runspace.CreatePipeline();
Command myCmd = new Command(@"C:\test.ps1");
CommandParameter param = new CommandParameter("responseCollection", test);
myCmd.Parameters.Add(param);
pipeline.Commands.Add(myCmd);
// Execute PowerShell script
Collection<PSObject> results = pipeline.Invoke();
Ecco lo script PowerShell:
param([string[]] $reponseCollection)
$a = $responseCollection[0]
Ogni volta che questo codice viene eseguito getta:
Cannot index into a null array.
So che il codice per eseguire il Lo script di powershell è corretto quando si passano le stringhe allo script di PowerShell, è stato accuratamente testato.
Non riesco a credere che questo fosse il problema. Mi ci sono volute ore per restringere semplicemente il problema. – firthh