[英]ScriptBuilder in inlined C# in PowerShell (2.0 and above)
[英]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.