在C#Windows服务应用程序中运行PowerShell脚本
本文关键字:运行 PowerShell 脚本 应用程序 C#Windows 服务 | 更新日期: 2023-09-27 18:20:24
我在这里并没有要求任何特定的代码行,而是希望有人能够向我解释它的想法,以帮助我更好地理解它。我对使用PowerShell脚本进行编码非常陌生,更不用说在C#应用程序中调用它们了。有人能解释我,甚至为我指明正确的方向吗?这样我就可以了解我在这里需要做什么。我有一个基本的"Hello World"脚本,我想使用VS2010从C#Windows服务调用它。我在互联网上看到过一些例子,但它们非常简短,并没有真正教授背后的概念。
任何帮助都将不胜感激!谢谢
下面是关于如何从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(及以上版本)中,服务被限制访问桌面,因此只有当EXE不需要键盘输入或需要写入显示器时,srvany才能在Vista及以上版本中成功。但是,EXE可以读取/写入文件。
这就是我能够为自己工作的地方。
我基本上遵循了我从这篇文章中找到的信息,但为了让它对我有用,我做了一些改变:从c#调用powershell函数的问题
例如,对于ps.AddCommand("BatAvg")
,我只是在.ps1文件ps.AddCommand("PS1FunctionName")
中添加了自己的函数,没有添加任何参数,因为这不是必需的。答案一直盯着我的脸,我只是不知道我需要把它放在我的窗户服务的哪里。我能够弄清楚这一点,现在我正在巡航!
此外,不要忘记在代码中引用using System.Management.Automation
和using System.Management.Automation.Runspaces
(对于未来可能会看到这一点的所有人)。