C# не запускает скрипт PowerShell

Я хочу вызвать скрипт PowerShell из моего проекта на C#, но он не будет работать.

Когда я запускаю код, я не получаю никаких ошибок (или я не знаю, где их найти). Я также попытался запустить скрипт из cmd и скрипт работает нормально.

Моя политика выполнения не ограничена, так что это не проблема.

Я дважды проверил пути, так что это тоже не проблема.

Код C#:

string scriptPath = @"C:\Users\jmiha\Desktop\test.ps1";
var parameters = new List<String>();
parameters.Add("test");
PowerShell ps = PowerShell.Create();
ps.AddScript(scriptPath);
ps.AddParameters(parameters);
ps.Invoke();

Скрипт PowerShell:

param(
    [Parameter(Mandatory = $true)]
    [String]$param
)
Add-Content 'c:\users\jmiha\desktop\test.txt' $param

Когда я открываю test.txt, он пуст.

1 ответ

Решение

AddScript предназначен для произвольного кода, а не синтаксиса команды / параметра. Вы могли бы использовать что-то вроде

ps.AddScript("Test-Path C:\temp").Invoke()

и это работает.

Если вы хотите связать параметры и тому подобное, вам нужно использовать AddCommand который позволяет вам взаимодействовать с командами так, как будто они являются объектами, и привязывать ваш параметр:

using (PowerShell powershell = PowerShell.Create())
    powershell
        .AddCommand(@"C:\Temp\test.ps1")
        .AddParameter("param", "TEST")
        .Invoke()

PS документация System.Management.Automation.dll это ужасно

Другие вопросы по тегам