我正在尝试将c#app中的字符串传递给我的powershell脚本。
我一直在发错:“找不到接受参数'$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();
}
我的powershell代码:
Out-Host $username
答案 0 :(得分:0)
你的PS脚本没有参数,它只是使用变量。所以,试试这个:
Param($username)
Write-Output $username
请注意,Out-Host在你的情况下是不可接受的,因为它试图将param输出到调用范围,而不是简单地将一些内容写入输出流。
此外,您可以在运行空间中设置变量,因此它将在没有参数的脚本中可用:
runspace.SessionStateProxy.SetVariable("username", "SomeUser");
(必须在runspace.Open()之后和pipeline.Invoke()之前完成