Я новичок в stackoverflow, так что простите за любое странное форматирование.Я знаю, что эта ветка старая, но у меня сама эта проблема была сегодня, и я не смог найти явного решения в Интернете, поэтому решил, что поделюсь решением одного из моих коллег и меня.
Хитрость в том, что если вы вызываете реальный скрипт (например, «C: \ scripts \ sendEmail.ps1»), вам нужно передать параметры так же, как если бы вы запускали скриптиз командной строки.В моем коде ниже скажем, что peopleName = "Joe" и PersonEmail = "Joe@yahoo.com".Я предполагаю, что taskRun.Task.Script - это полный путь к сценарию PS.
Если вы печатаете myCommand, он должен читать «C: \ scripts \ sendEmail.ps1 -Имя Джо -Эмайл Джо @ yahoo.com "где -Name и -Email будут соответствовать параметрам $ Name и $ Email в sendEmail.ps1 (убедитесь, что вы правильно настроили параметры в своем скрипте PS!)
myCommand.Parameters.Add () WONВ этом случае T РАБОТАЕТ, поскольку предполагается, что ваша команда является действительной командой, а не полным сценарием.myCommand.Parameters.Add () работает в этом случае: если вы написали var myCommand = new Command ("gwmi Win32_Bios");и затем поместите myCommand.Parameters.Add ("computerName", "myComputer");и myCommand.Parameters.Add ("учетные данные", "мой пароль");где «myComputer» и «myPassword» являются жестко запрограммированными строками, вы получите команду «gwmi win32_Bios -computerName myComputer -credential myPassword», которая должна выполняться нормально (она не будет возвращать данные, как я их написал, нобудет правильно передавать параметры).
Извините, что это так долго, но я хотел, чтобы это было ясно, потому что я боролся с этой проблемой в течение достаточно долгого времени.Полный код ниже.К вашему сведению, вам не нужна runspaceConfiguration для создания объекта Runspace.
var runspaceConfiguration = RunspaceConfiguration.Create();
var runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
var pipeline = runspace.CreatePipeline();
var myCommand = new Command(String.Format("{0} -Name {1} -Email {2}", taskRun.Task.Script, personsName, personsEmail), true);
pipeline.Commands.Add(myCommand);
var result = pipeline.Invoke().FirstOrDefault();