【问题标题】:Running PowerShell script in a C# Windows Service App在 C# Windows 服务应用程序中运行 PowerShell 脚本
【发布时间】:2016-10-30 22:09:46
【问题描述】:

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

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

【问题讨论】:

标签: c# visual-studio-2010 powershell


【解决方案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(谷歌它)的服务,它可以将任何控制台应用程序作为服务运行。但是在 Windows Vista(及更高版本)中,服务被限制访问桌面,因此如果您的 EXE 不需要键盘输入或需要写入显示器,则 srvany 只能在 Vista 及更高版本中成功。但是您的 EXE 可以读/写文件。

【讨论】:

  • 我以前看过那篇文章。但同样,我真的不知道如何将我的个人脚本融入其中。像我一样,能够从文件位置调用我的特定脚本是有意义的。但我也可能是错的......
  • 我觉得我必须做一些类似的事情,但我仍在试图弄清楚如何将它整合到实际的 Windows 服务中。 stackoverflow.com/questions/10260597/…
  • 您可以将"echo 'hello from PS';get-date; get-culture; " 替换为您的个人脚本。如果您的脚本在一个文件中,例如:c:\my\script.ps1,那么您将用"c:\my\script.ps1" 替换该字符串。如果您的个人脚本是将 c:\my\fromfile.txt 复制到 c:\my\tofile.txt,那么您将其替换为:"copy c:\my\fromfile.txt c:\my\tofile.txt" 等等。如何编写完整的 Windows 服务远远超出了 stackoverflow.com 的范围。相反,通过 AT.EXE(谷歌搜索)或任务计划程序(控制面板,然后是管理工具)执行脚本会简单得多
【解决方案2】:

这就是我能够为我工作的。

我基本上遵循了我从这篇文章中找到的信息,但改变了一些东西让它对我有用:Problem with calling a powershell function from c#

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

另外,不要忘记在您的代码中引用 using System.Management.Automationusing System.Management.Automation.Runspaces(供所有可能关注此问题的人参考)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    相关资源
    最近更新 更多