我知道主题行看起来太平凡了,有些帖子解决了很多这样的问题。我没有找到我正在寻找的东西,因此这篇文章。
我正在调用机器A中的powershell文件,以便在远程机器(机器B)上执行。
//这是代码段:
Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
Pipeline pipeline = runspace.CreatePipeline();
string scripttext = "$secpasswd = ConvertTo-SecureString '222_bbbb' -AsPlainText –Force";
string scripttext1 = "$mycreds = New-object -typename System.Management.Automation.PSCredential('TS-TEST-09\\Administrator',$secpasswd)";
string scripttext2 = "$s = New-PSSession -ComputerName TS-TEST-09 -Credential $mycreds";
**string scripttext5 = "Invoke-Command -Session $s -FilePath 'helper.ps1' | out-null";**
pipeline.Commands.AddScript(scripttext);
pipeline.Commands.AddScript(scripttext1);
pipeline.Commands.AddScript(scripttext2);
pipeline.Commands.AddScript(scripttext5);
Collection<PSObject> results = pipeline.Invoke();
现在排队了 string scripttext5 =“Invoke-Command -Session $ s -FilePath'shelper.ps1'| out-null”; 我必须将一些参数(例如,来自c#environment:useralias的用户名)传递给此helper.ps1文件进行处理。任何人都可以指导我这样做的正确方法吗?
TIA, 和Manish
答案 0 :(得分:0)
如果用户名和useralias来自本地计算机,那么您可以这样做:
string scripttext5 = "Invoke-Command -Session $s -FilePath 'helper.ps1' -Args " + username + "," + useralias + " | Out-Null";
这假设您的helper.ps1文件至少需要两个参数。如果是这样,那么C#变量username
和useralias
的值将被分配给前两个参数。
答案 1 :(得分:0)
好的,所以这是适用于我的解决方案。
从Keith的解决方案中获取它的位数。诀窍是使用
从c#中公开变量runspace.SessionStateProxy.SetVariable("PSuseralias", this.useralias);
现在使用$ PSuseralias作为
string scripttext5 = "Invoke-Command -Session $s -FilePath 'helper.ps1' -Args $PSuseralias;
这就是诀窍。