【发布时间】:2019-05-13 09:22:57
【问题描述】:
我有一个 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();
}
}
但不幸的是,它不起作用。它实际上只是挂在调用调用中。
【问题讨论】:
-
为什么不直接将字符串作为 C# 代码的结果返回并使用 powershell 本身输出?
-
该示例非常简化,因为我在 C# 部分中有更多逻辑,并且希望从那里输出几个日志语句。所以它不仅仅是一个字符串,而是几个。
-
不应该是
powerShellInstance.AddCommand("Write-Host").AddParameter(text).Invoke();吗? -
刚试了下,还是不行。但我发现我可以改为委托样式,这是我的目的的解决方案。
标签: c# powershell tfs continuous-integration vnext