Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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# 使用new service cmdlet创建新的windows服务_C#_.net_Powershell - Fatal编程技术网

C# 使用new service cmdlet创建新的windows服务

C# 使用new service cmdlet创建新的windows服务,c#,.net,powershell,C#,.net,Powershell,我想使用powershell cmdlet新建服务创建windows服务。我不能使用nssm或任何其他可执行文件。问题是关于新服务的文档非常少,而且我知道必须有一组特定的步骤和特定的代码结构来创建一个在启动时实际运行的服务。我试了很多次,但都不起作用 function OnStart() { [Int32]$i = 0 while( $i -lt 12) { $i++ "Start Function Hello world !`n

我想使用powershell cmdlet新建服务创建windows服务。我不能使用nssm或任何其他可执行文件。问题是关于新服务的文档非常少,而且我知道必须有一组特定的步骤和特定的代码结构来创建一个在启动时实际运行的服务。我试了很多次,但都不起作用

function OnStart()
{
    [Int32]$i = 0
    while( $i -lt 12)
    {
        $i++
        "Start Function Hello world !`n" | Out-File -FilePath C:\Users\tripa\OneDrive\Desktop\Test.txt -Append

    }



}

function OnStop()
{
    "Stop Function " | Out-file   -FilePath C:\Users\tripa\OneDrive\Desktop\Test.txt -Append
}
这是我想作为服务更改的代码(文件名为script.ps1)。但我不允许使用nssm或任何其他软件。只是地狱。有人能帮忙吗


提前谢谢

虽然理论上可以将PowerShell脚本作为服务运行,但这将是相当困难的,因为PowerShell本身中没有相关规定。有很多项目为通常不作为服务本身运行的东西提供服务包装器代码,这是有原因的。通过从
ServiceBase
类派生,您可以尝试使用一些C代码(您可以使用
Add Type
编译这些代码)来启动和运行这些程序。甚至这也是一个相当大的项目<代码>新服务本身根本无法让您到达目的地;这仅仅是注册一个可执行文件。强烈地考虑像计划任务这样的更简单的事情对于你的目的是否也不够好。它可以在启动、登录或定期运行。如果您确实需要“适当”的Windows服务,我只能建议您不要尝试通过PowerShell脚本来实现,尤其是如果您打算将此解决方案分发到其他机器上时;这样的解决方案不会非常稳定或安全。不被“允许”使用可执行文件并不是一个很好的借口。您不必使用安装软件本身,但至少需要一个简单的服务包装器。您好!在你最后的第二句话中,我忘了提到“不允许”一词,我的意思与你所指的完全相同。如果此解决方案适用于不同的计算机,则这是一个安全问题。根据你的上一句话,我最好使用C#来处理同样的情况,因为有一些.NET类负责处理这些情况?基本上,要在.NET中运行服务,从该类派生并在启动时调用
ServiceBase.run
,作为服务运行。理论上,这也可以从PowerShell访问,但实际上这很困难,因为您必须将重写的方法调用到PowerShell函数中。我从来没有尝试过这样的东西,所以我不知道它是否能在不引起重入等问题的情况下工作。要运行此“服务”,您必须使用脚本作为参数注册
powershell.exe
本身。