[英]How to code PowerShell script and C# code in the same script
我知道可以通过加载程序集从PowerShell脚本调用C#代码。 但是在C#代码和PowerShell脚本之间是否有任何方法可以传递和接收值。
假设我的超级脚本中有一个$path
变量。 我想将其传递给我的C#代码。 C#代码将使用$ path。 在c#代码中做了一些工作之后,它将向脚本返回一些值。 这可能吗? 如果是,该怎么办? 我必须在我的Power Shell中加载第三方dll,并在该dll上加载所有一两个公共方法才能完成某些任务。
我的PowerShell脚本代码:
$scriptpath = $MyInvocation.MyCommand.Path;
$cureentDir = Split-Path $scriptpath;
$isSasDir = $cureentDir -match "mydir";
$requiredFile = "Core.dll";
$myPowersehllVal = "has value for c# code";
我的C#代码:
$Source = @"
using System.Net;
public class ExtendedWebClient : WebClient
{
String myPowersehllVal;
public int Timeout;
protected override WebRequest GetWebRequest(System.Uri address)
{
}
}
"@;
用于将PS值导入C#
https://stackoverflow.com/a/22384009/3546415
从更一般的意义上讲, System.Management.Automation ( 需要Nuget )看起来很有希望,尤其是Runspace和Pipeline 。
以下是一些用法的良好示例: https : //msdn.microsoft.com/zh-cn/library/ee706576(v=vs.85).aspx
喜欢的东西, 这一次似乎类似于你想要的东西。
或者也许只是使用PowerShell类从C#模块执行PS命令来设置PS变量值。
另外,您不必担心互操作性,可以通过处理文件系统和/或环境变量来进行破解。 遵循此范例,您甚至可以使用内存映射文件,并与更多应用程序共享变量。 Powershell方面将是这样 。 对于对象,请序列化 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.