繁体   English   中英

从内联C#调用Powershell流程

[英]Call to powershell process from inlined C#

我有一个执行以下内联C#代码的PowerShell脚本:

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();
  }
}

但不幸的是,它不起作用。 它实际上只是挂在invoke调用中。

事实证明,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");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM