Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#Windows服务应用程序中运行PowerShell脚本_C#_Visual Studio 2010_Powershell - Fatal编程技术网

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

在C#Windows服务应用程序中运行PowerShell脚本,c#,visual-studio-2010,powershell,C#,Visual Studio 2010,Powershell,我真的不要求这里有任何特定的代码行,但更多的是有人能够向我解释它的想法,以帮助我更好地理解。我对使用PowerShell脚本进行编码非常陌生,更不用说在C#应用程序中调用它们了。有没有人能给我解释一下,甚至给我指出正确的方向,让我知道我在这里需要做什么。我有一个基本的“Hello World”脚本,我想使用VS2010从C#Windows服务调用它。我在互联网上看到过一些例子,但它们非常简短,并没有真正教授背后的概念 任何帮助都将不胜感激! 谢谢 下面是一个关于如何从C#调用Powershell

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

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

下面是一个关于如何从C#调用Powershell的非常好的讨论:

我建议您从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可以读取/写入文件

这就是我能够为自己工作的原因

我基本上遵循了我在这篇文章中找到的信息,但为了让它对我有用,我做了一些改变:

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


另外,不要忘了在代码中引用
使用System.Management.Automation
使用System.Management.Automation.Runspaces
(供将来所有可能会看到这一点的人使用)。

您检查过这个吗:我看到了,但我真的不知道如何将我的个人脚本融入其中。我以前看过这篇文章。但是,我真的不知道如何才能将我的个人脚本融入其中。对我来说,能够从文件位置调用我的特定脚本是有意义的。但我也可能错了……我觉得我必须做一些类似的事情,但我仍在试图找出如何将其整合到实际的windows服务中。您可以用您的个人脚本替换
“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(google it)或任务调度器(控制面板,然后是管理工具)执行脚本会简单得多