0

c# app から powershell script に文字列を渡そうとしています。

エラーが発生し続けます:「引数を受け入れる位置パラメーターが見つかり'$null'
ません。どうすればよいですか?

私のC#コード:

  public void PowerShell()
    {
        RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();
        Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
        runspace.Open();
        RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);

        Pipeline pipeline = runspace.CreatePipeline();

        String scriptfile = @"c:\test.ps1";

        Command myCommand = new Command(scriptfile, false);

        CommandParameter testParam = new CommandParameter("username", "serverName");

        myCommand.Parameters.Add(testParam);


        pipeline.Commands.Add(myCommand);
        Collection<PSObject> psObjects;
        psObjects = pipeline.Invoke(); <---error- "A positional parameter cannot be found that accepts argument '$null'" 
        runspace.Close();

    }

私のパワーシェルコード:

 Out-Host  $username
4

1 に答える 1

0

PS スクリプトにはパラメーターがありません。変数を使用するだけです。したがって、代わりにこれを試してください:

Param($username)
Write-Output $username

Out-Host は、単に出力ストリームに何かを書き込むのではなく、param を呼び出しスコープに出力しようとするため、受け入れられないことに注意してください。

また、実行空間で変数を設定できるため、パラメーターなしでスクリプトで使用できます。

runspace.SessionStateProxy.SetVariable("username", "SomeUser");

(runspace.Open() の後、pipeline.Invoke() の前に実行する必要があります)

于 2013-04-14T06:36:40.517 に答える