Вызовите процесс powershell из встроенного C # - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть сценарий PowerShell, который выполняет некоторый встроенный код C #, например:

Add-Type -ReferencedAssemblies $Assem -TypeDefinition $Source -Language CSharp
[AnalyzeHelper.AnalyzeDirectories]::CheckPath("XXX")

В этом коде C # я хотел бы вывести его на выход PowerShell.Итак, в моем C # я реализовал:

public static void CheckPath(string path)
{
    WriteOutput("Begin CheckPath");
}

private static void WriteOutput(string text)
{
  using (PowerShell powerShellInstance = PowerShell.Create())
  {
    powerShellInstance.AddCommand("Write-Host").AddParameter("string", text).Invoke();
  }
}

Но, к сожалению, это не работает.Это на самом деле просто повесить в вызове вызова.

1 Ответ

0 голосов
/ 12 декабря 2018

Оказывается, что PowerShell поддерживает делегатов, поэтому решение было довольно простым.Я звонил так:

[Action[string]]$action = {param($message) Write-Host "$message"}
Add-Type -ReferencedAssemblies $Assem -TypeDefinition $Source -Language CSharp
[AnalyzeStringLibraries.AnalyzeStrings]::CheckPath("XXX", $action)

Тогда в C # я могу сделать так:

public static void CheckPath(string path, Action<string> writeToHost)
{
    writeToHost("Begin CheckPath");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...