передача параметра в файл сценария powershell из среды C # - PullRequest
2 голосов
/ 24 января 2012

Я понимаю, что тема выглядит слишком обыденно, и есть посты, посвященные многим таким вопросам.Я не нашел то, что именно искал и, следовательно, этот пост.

Я вызываю файл powershell с компьютера A, который будет выполняться на удаленном компьютере (компьютере 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 'helper.ps1' | out-null";мне нужно передать несколько параметров (например, имя пользователя из среды c #: useralias) в этот файл helper.ps1 для обработки.Кто-нибудь может направить меня к правильному способу сделать это?

TIA, Manish

Ответы [ 2 ]

0 голосов
/ 25 января 2012

Хорошо, вот решение, которое сработало для меня.

оно берет свои биты от решения Кейта.хитрость заключается в том, чтобы выставить переменные из c #, используя

runspace.SessionStateProxy.SetVariable("PSuseralias", this.useralias);

, теперь используя $ PSuseralias как

string scripttext5 = "Invoke-Command -Session $s -FilePath 'helper.ps1' -Args  $PSuseralias;

, это делает трюк.

0 голосов
/ 24 января 2012

Если имя пользователя и имя пользователя получены с локального компьютера, вы можете сделать это следующим образом:

string scripttext5 = "Invoke-Command -Session $s -FilePath 'helper.ps1' -Args " + 
                      username + "," + useralias + " | Out-Null";

Это предполагает, что ваш файл helper.ps1 принимает как минимум два параметра.Если это так, то значения переменных C # username и useralias будут присвоены первым двум параметрам.

...