在C#Windows服务应用程序中运行PowerShell脚本

时间:2013-06-28 20:09:49

标签: c# visual-studio-2010 powershell

我真的不是在这里要求任何具体的代码行,但更多的是有人能够向我解释它的想法,以帮助我更好地理解。我很擅长使用PowerShell脚本进行编码,更不用说在C#应用程序中调用它们了。是否有人能够解释甚至指出我正确的方向,以便我可以了解我需要在这做什么。我有一个基本的“Hello World”脚本,我想使用VS2010从C#Windows服务调用。我已经看过互联网上的例子,但它们非常简短,并没有真正教导它背后的概念。

任何帮助将不胜感激! 谢谢!

2 个答案:

答案 0 :(得分:1)

以下是关于如何从C#调用Powershell的非常好的讨论:http://www.codeproject.com/Articles/18229/How-to-run-PowerShell-scripts-from-C

我建议您从RunScript函数开始,并将其添加到VS2010控制台应用程序中。然后Main()会调用类似RunScript( "echo 'hello from PS';get-date; get-culture; ")的RunScript。

Windows服务与普通控制台应用程序有很多不同之处。您可以阅读有关如何在MSDN上编写Windows服务的信息,但如果您以前从未编码过,那么您面前的学习曲线会非常陡峭。

来自旧资源工具包的服务srvany.exe(Google it)可以将任何控制台应用程序作为服务运行。但是,在Windows Vista(及更高版本)中,服务被限制访问桌面,因此如果您不需要键盘输入或需要写入显示器,则srvany只能在Vista及以上版本中成功。但是你的EXE可以读/写文件。

答案 1 :(得分:0)

这是我能够为我工作的。

我基本上都遵循了我在这篇文章中找到的信息,但改变了一些事情让它为我工作:Problem with calling a powershell function from c#

例如,对于ps.AddCommand("BatAvg")我只是在我的.ps1文件ps.AddCommand("PS1FunctionName")中添加了我自己的函数,并且没有添加任何参数,因为没有必要。答案一直盯着我,我只是不知道我需要把它放在我的Windows服务中。我能够弄明白,现在我正在巡航!

此外,请不要忘记在您的代码中引用using System.Management.Automationusing System.Management.Automation.Runspaces(对于所有未来可能会看到此内容的人)。