我想提出一种机制,通过该机制,我可以在不同的Powershell流程之间共享“数据”。这是为了实现一种作业系统,一个功能可以在一个Powershell过程中运行,完成,然后有人将其状态传递给另一个(不同的)Powershell过程运行的函数......
我想我理想情况下喜欢psjob会在会话之间分享,但这似乎不可能。
我可以想到实现这一点的一些肮脏方法(比如O / S环境变量),但是我错过了一种半优雅的方式吗?
例如:
Function giveMeNumber
{
$return_vlaue = Get-Random -Minimum -100 -Maximum 100
Return $return_vlaue
}
我有什么方法可以让这个函数将它存储在某处,然后从另一个Powershell会话中获取它(不使用数据库)。
干杯。
答案 0 :(得分:1)
Keith提到的质量保证是指使用MSMQ,这是一种消息排队功能,可选择在桌面设备,移动设备和移动设备上使用。来自Microsoft的服务器操作系统。
默认情况下,它不会在桌面操作系统上运行,因此您必须确保已启动相应的服务。除非你想要一些非常强大的东西,否则对我来说似乎有点严重的矫枉过正。
当然,此类任务的最常见选择是简单的共享文件。
或者,您可以在要接受外部信息的每个作业中创建TCP侦听器。虽然我知道这是可能的,但我自己并没有在PowerShell中完成此操作。 Node.JS将是一个更熟悉的环境或Python。如果共享文件可以完成这项工作,似乎有点过头了!
另一种方法是使用注册表。虽然你可能会考虑作弊,因为它实际上是一个数据库(非常简单和简单的排序)。
我实际上不确定环境变量是否可行,因为我知道它们可能对父环境范围很挑剔(例如,在cmd中设置env变量不会使其在cmd范围之外可用
更新:Doh,错过了几个!其中一些非常明显。 Microsoft有一个list:
Pipes是我想要记住的那个。 Windows套接字类似于TCP侦听器。