簡體   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