0

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

任何帮助将非常感激!谢谢!

4

2 回答 2

1

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

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

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

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

于 2013-06-30T04:33:47.890 回答
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(对于所有可能会查看此内容的未来人)。

于 2013-07-03T13:00:02.707 回答