Передача и доступ к параметрам Powershell из C # - PullRequest
0 голосов
/ 02 декабря 2011

Я пытаюсь передать параметры скрипту Powershell из класса C #.Я запускаю скрипт, используя Process.Start.

string powerShellLocation = @"C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe";
ProcessStartInfo psi = new ProcessStartInfo(powerShellLocation);
psi.Arguments = String.Format("{0} {1}", scriptPath, "some_parameter");

. Выше не работает.Может кто-нибудь подскажите пожалуйста как этого добиться?

Ответы [ 3 ]

1 голос
/ 02 декабря 2011

Вам необходимо установить имя параметра. Примерно так должно работать:

string parameters = string.Format("-FILE {0} -parameter1 \"{1}\"", psFilePath, parameter1Value);
Process powershell = new Process()
{
     StartInfo = new ProcessStartInfo("powershell.exe", parameters)
      {
           UseShellExecute = false,
           RedirectStandardOutput = true,
           RedirectStandardError = true
      }
};
0 голосов
/ 27 июня 2012

Вы установили политику выполнения неограниченно или на что-то, что позволяет выполнять сценарий.По умолчанию Powershell устанавливает неограниченные сценарии для предотвращения запуска вредоносных сценариев.

Запускайте эту команду от имени администратора, когда работает powershell:

Get-ExecutionPolicy
0 голосов
/ 02 декабря 2011

То, что у вас есть, будет работать. Вы не упомянули, что вы имели в виду под above does not work и каков ваш сценарий.

Я пробовал код C # с помощью скрипта Powershell:

param([string]$a)

write-host "test"
write-host $a

и он дал вывод:

test
some_parameter

как и ожидалось. Нет необходимости указывать -File и -paramter1, как указано в других ответах, но это будет зависеть от того, что делает ваш скрипт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...