2011-12-01 33 views
5

私はC#からpowershellスクリプトを実行しようとしています。スクリプトに文字列を渡すのに問題はありませんが、PowerShellスクリプトに配列を渡そうとすると例外がスローされます。ここ は、C#のコードである:ここでC#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(); 

は、PowerShellスクリプトです:

param([string[]] $reponseCollection) 
$a = $responseCollection[0] 

このコードは、それがスロー実行するたびに:

Cannot index into a null array. 

私は、コードを実行することを知っていますpowershellスクリプトは、文字列をpowershellスクリプトに渡すときに正しいですが、完全にテストされています。

答えて

5

、あなたはPowerShellの配列形式の文字列としてPowerShellのための配列を渡す必要があると思います。

私が気づくのは、スクリプトのパラメータに$reponseCollectionがあるということだけです。レスポンスにsが指定されていません。あなたがここにそれを入力するのを間違えない限り、それが理由になります。

Powershellは、存在しない変数を割り当てる/使用するときに(通常)気にしないので、文字列で動作するように見えるかもしれません。しかし、null /存在しない変数にインデックスを付けると、エラーがスローされます。

+0

これは問題だとは思えません。問題があった場所を絞り込むのに数時間かかりました。 – firthh

-2

私はそれが私のために完全に正常に動作、すなわち、

string test = "('1','2','3','4')"; 
+0

いいえ:(同じエラー – firthh

関連する問題