繁体   English   中英

如何在同一脚本中编写PowerShell脚本和C#代码

[英]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 )看起来很有希望,尤其是RunspacePipeline

以下是一些用法的良好示例: 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.

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