Background Info
我目前正在使用INI文件系统在客户端(桌面PowerShell表单)和服务器之间传递请求/变量 .
目前,系统通过PowerShell表单工作,创建一个INI文件,该文件被放入服务器上的文件夹中 . 每隔5分钟在运行PowerShell脚本的服务器上设置计划任务 . 该脚本读入文件夹中的所有INI文件,并根据INI文件内容对它们进行不同的处理 .
Question
我想复制我上面的INI文件系统,但使用某种请求系统 . PowerShell是否有内置的方法使用请求队列系统或类似的东西将请求/变量(客户端到服务器)发送到另一个脚本?
干杯,对此有任何建议 .
1 回答
如果您的服务器运行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目录(请参阅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文件放在目录中,然后唤醒服务器 . 有关同步原语(如Mutexes和Semaphores),请参阅System.Threading命名空间 .
正如你所看到的,有很多选择,但它们都有权衡 .