在Powershell进程之间共享变量\数据

时间:2014-06-10 13:54:34

标签: powershell

我想提出一种机制,通过该机制,我可以在不同的Powershell流程之间共享“数据”。这是为了实现一种作业系统,一个功能可以在一个Powershell过程中运行,完成,然后有人将其状态传递给另一个(不同的)Powershell过程运行的函数......

我想我理想情况下喜欢psjob会在会话之间分享,但这似乎不可能。

我可以想到实现这一点的一些肮脏方法(比如O / S环境变量),但是我错过了一种半优雅的方式吗?

例如:

Function giveMeNumber
{
  $return_vlaue =  Get-Random -Minimum -100 -Maximum 100
  Return $return_vlaue
}

我有什么方法可以让这个函数将它存储在某处,然后从另一个Powershell会话中获取它(不使用数据库)。

干杯。

1 个答案:

答案 0 :(得分:1)

Keith提到的质量保证是指使用MSMQ,这是一种消息排队功能,可选择在桌面设备,移动设备和移动设备上使用。来自Microsoft的服务器操作系统。

默认情况下,它不会在桌面操作系统上运行,因此您必须确保已启动相应的服务。除非你想要一些非常强大的东西,否则对我来说似乎有点严重的矫枉过正。

当然,此类任务的最常见选择是简单的共享文件。

或者,您可以在要接受外部信息的每个作业中创建TCP侦听器。虽然我知道这是可能的,但我自己并没有在PowerShell中完成此操作。 Node.JS将是一个更熟悉的环境或Python。如果共享文件可以完成这项工作,似乎有点过头了!

另一种方法是使用注册表。虽然你可能会考虑作弊,因为它实际上是一个数据库(非常简单和简单的排序)。

我实际上不确定环境变量是否可行,因为我知道它们可能对父环境范围很挑剔(例如,在cmd中设置env变量不会使其在cmd范围之外可用

更新:Doh,错过了几个!其中一些非常明显。 Microsoft有一个list

  • 剪贴板
  • COM
  • 数据复制
  • DDE
  • 文件映射
  • 邮筒
  • RPC
  • Windows套接字

Pipes是我想要记住的那个。 Windows套接字类似于TCP侦听器。