6

と の 2 つの PowerShell プログラムを実行しているProducer.ps1としConsumer.ps1ます。

2 つのファイル間でクライアントとサーバーの関係を確立する方法はあります.ps1か?

具体的には、含まれるログイン情報をProducer.ps1出力します。2 つのオブジェクト間にリスナーと名前付きパイプPSObjectを確立して、これを直接 に渡す方法はありますか?PSObjectProducer.ps1Consumer.ps1


(: 2 つのファイルは、それぞれ別の Windows ユーザーとして実行する必要があるため、組み合わせることはできません。通信するための 1 つの可能な解決策はPSObject、text/xml ファイルに書き込み、クライアントにそのファイルを読み取って消去させることですが、資格情報が公開されるので、私はむしろこれをしたくありません.私はあなたが持っているどんな提案にもオープンです)

4

1 に答える 1

7

あなたが要求していることを行う方法を説明するこのリンクを見つけました: https://gbegerow.wordpress.com/2012/04/09/interprocess-communication-in-powershell/

テストしたところ、2 つの個別の Powershell セッション間でデータを渡すことができました。

サーバ側:

$pipe=new-object System.IO.Pipes.NamedPipeServerStream("\\.\pipe\Wulf");
'Created server side of "\\.\pipe\Wulf"'
$pipe.WaitForConnection(); 

$sr = new-object System.IO.StreamReader($pipe); 
while (($cmd= $sr.ReadLine()) -ne 'exit') 
{
 $cmd
}; 

$sr.Dispose();
$pipe.Dispose();

クライアント側:

$pipe = new-object System.IO.Pipes.NamedPipeClientStream("\\.\pipe\Wulf");
 $pipe.Connect(); 

$sw = new-object System.IO.StreamWriter($pipe);
$sw.WriteLine("Go"); 
$sw.WriteLine("start abc 123"); 
$sw.WriteLine('exit'); 

$sw.Dispose(); 
$pipe.Dispose();
于 2015-08-17T18:22:19.443 に答える