2017-12-20 11 views
0

アセンブリをロードしてPowerShellスクリプトからC#コードを呼び出すことは可能です。しかし、C#コードとPowerShellスクリプトの間で値を受け渡す方法はありますか?同じスクリプトでPowerShellスクリプトとC#コードをコーディングする方法

私の電源スクリプトには$pathという変数があります。私はそれを私のC#コードに渡したいと思います。そしてC#コードは$パスを使用します。 C#コードでいくつかのことをした後、スクリプトに値を返します。これは可能ですか?もしそうなら、どうしたらいいですか?私は、私のパワーシェルでサードパーティ製のdllとそのdll上のすべての1つまたは2つのパブリックメソッドをロードして、何らかのタスクを完了する必要があります。

私の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) 
     { 

     } 
    } 
"@; 
+0

[C#を使用してPowerShellからデータを返す](https://stackoverflow.com/q/28844580/1630171)の重複が考えられます。 –

+1

なぜこれをやりたいですか? –

+0

私はC#コードで書かれたサーバーを持っています。そのseverタスクはpsスクリプトによってやり直すのは複雑です。私はそのサーバーコードを呼び出す必要があります。しかし、私はスクリプトからいくつかの価値を渡す必要があります。 – masiboo

答えて

0

C#

以上で

https://stackoverflow.com/a/22384009/3546415


にPS値を取得するための一般的な意味では、System.Management.AutomationNuget Required)が有望であり、特にRunspacePipelineと思われます。ここで

は、使用のいくつかの良い例です:this oneよう https://msdn.microsoft.com/en-us/library/ee706576(v=vs.85).aspx

何かがあなたが望むものに似ているようです。

PowerShell Classを使用して、PS変数値を設定するためにC#モジュールからPSコマンドを実行することもできます。


また、interopについて心配することなく、ファイルシステムや環境変数を操作することで、ハッキングすることができます。このパラダイムに続いて、memory mapped fileを使用して変数をより幅広いアプリケーションセットで共有することもできます。 Powershell側はsomething like thisになります。オブジェクトの場合、serialization

関連する問題