0

背景信息

我目前正在使用 INI 文件系统在客户端(桌面 PowerShell 表单)和服务器之间传递请求/变量。

目前,系统通过 PowerShell 表单创建一个 INI 文件,该文件被放入服务器上的文件夹中。在服务器上设置了一个计划任务,每 5 分钟运行一次 PowerShell 脚本。该脚本读取文件夹中的所有 INI 文件,并根据 INI 文件内容对它们进行不同的处理。

问题

我想复制上面的 INI 文件系统,但使用某种请求系统。PowerShell 是否具有使用请求队列系统或类似工具将请求/变量(客户端到服务器)发送到另一个脚本的内置方式?

对此的任何建议将不胜感激,干杯。

4

1 回答 1

0

如果您的服务器运行 Windows Server,那么您可以使用 MSMQ。它内置于 Windows Server 操作系统(2003、2008、2012)中。有可以从 PS 脚本中使用的 .NET 类。这是一个概述页面: http: //msdn.microsoft.com/en-us/library/windows/desktop/ms711472 (v=vs.85).aspx 。有 VB 和 VBScript 代码示例,应该很容易翻译成 PS。

服务器上的应用程序将创建一个队列并将其注册到 Actice Directory(请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms707115(v=vs.85).aspx)。

您在客户端上的应用程序需要找到队列(请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms701440(v=vs.85).aspx

双方都需要打开队列,服务器端以接收访问权限打开队列,客户端以发送访问权限打开队列。(参见http://msdn.microsoft.com/en-us/library/windows/desktop/ms700132(v=vs.85).aspx

客户端发送到队列(参见http://msdn.microsoft.com/en-us/library/windows/desktop/ms699823(v=vs.85).aspx

服务器端从队列中读取(http://msdn.microsoft.com/en-us/library/windows/desktop/ms701293(v=vs.85).aspx)。然后它执行 INI 文件中的请求。

OP 没有说明客户是否需要响应。如果需要响应,那么据我所知,将使用另一个队列 - 响应队列。

如果 MSMQ 不是一个选项,您可以使用 .NET TCP 推出您拥有的解决方案。如果这不是一个选项,那么可能是 WCF(Windows 通信基础),但这需要使用 C# 或 VB。.NET 远程处理是一项较旧的技术,但可能比 WCF 更易于使用。

也许您可以使用 powershell 作业,其中作业带有 INI 文件。该作业与您的服务器脚本在同一台机器上执行,并将 ini 文件放在一个目录中,然后唤醒服务器。请参阅 System.Threading 命名空间,了解 Mutexes 和 Semaphores 等同步原语。

如您所见,有很多选择,但它们都有权衡。

于 2013-07-11T01:22:55.527 回答