【问题标题】:Pipelining between PowerShell and C# ASP.NETPowerShell 和 C# ASP.NET 之间的流水线
【发布时间】:2015-08-18 21:51:49
【问题描述】:

我很难将数据从 PowerShell 脚本传送到 C# 程序。

Thanks to this answer I was given,我想出了一个在两个 PowerShell 脚本Sender.ps1Receiver.ps1)之间传递数据的可行解决方案。

问题是,这个脚本在翻译成C#代码时不起作用。 即使我通过PowerShell 类在C# 中调用Receiver.ps1,它仍然不起作用。

This answer to a similar question 让我相信管道的命名空间不一样,但是当我尝试将 Global 添加到每个管道的开头时,它什么也没做。同样,如果我作为 PowerShell 脚本运行,它可以在两个 .ps1 中运行,但是如果我从 C# 调用其中一个脚本,或者将其直接转换为 C#,它会完全停止工作。

有人知道 Windows 中的命名空间和流水线吗?


Sender.ps1:不与C#程序交互,除了通过管道发送数据

## Establish Pipe
  $pipe = New-Object System.IO.Pipes.NamedPipeClientStream("Global\\.pipe\brokenPipe");
  $pipe.Connect();
  $stream = New-Object System.IO.StreamWriter($pipe);

## Communicate through Pipe
  SendStuff();

## Close Pipe
  $stream.Dispose();
  $pipe.Dispose();

Receiver.ps1: 用于从管道读取的 PowerShell 程序。 工作如果我右键单击并以 PowerShell 运行。 不起作用如果我通过 C# 的 PowerShell 调用它,它只会挂在 WaitForConnection()。 C# 程序正确调用脚本,我用一个充满信息的虚拟文件(C# 正确读取)对此进行了测试。由于某种原因,当它通过我的 C# 应用程序运行时,管道停止工作

## Establish Pipe
  $pipe = new-object System.IO.Pipes.NamedPipeServerStream("Global\\.pipe\brokenPipe");
  $pipe.WaitForConnection();
  $stream = new-object System.IO.StreamReader($pipe);

## Communicate through Pipe
  ReadStuff();

## Close Pipe
  $stream.Dispose();
  $pipe.Dispose();

C# 接收器函数:我用它来代替PowerShell.Create(),但这也不起作用(尽管它与Receiver.ps1 的代码完全相同。

void PipeListener(){
## Establish Pipe
  var pipe = new System.IO.Pipes.NamedPipeServerStream("Global\\.pipe\brokenPipe");
  pipe.WaitForConnection();
  var stream = new System.IO.StreamReader(pipe);

## Communicate through Pipe
  ReadStuff();

## Close Pipe
  stream.Dispose();
  pipe.Dispose();
}

【问题讨论】:

  • 全局命名空间前缀是Global\ ,而不是Global\\ 。您不需要在 Powershell 中转义反斜杠。同样,Powershell:Global\pipename,C#:@"Global\pipename""Global\\pipename"
  • 谢谢@Mitch,这确实是问题所在。如果您将此作为官方答案发布,我会为您接受。

标签: c# asp.net windows powershell named-pipes


【解决方案1】:

全局命名空间前缀是Global\,而不是Global\\。您不需要在 Powershell 中转义反斜杠。

  • Powershell:Global\pipename
  • C#:@"Global\pipename""Global\\pipename"

【讨论】:

  • 谢谢。我在 PowerShell 中转义了反斜杠……谈谈一个菜鸟的错误!
猜你喜欢
  • 2015-11-10
  • 1970-01-01
  • 2021-07-26
  • 2011-06-07
  • 1970-01-01
  • 2018-02-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
相关资源
最近更新 更多