服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

运行powershell.exe作为服务,或者帮我find一个替代解决scheme

简介:无论用户是否login,我都需要在后台持续运行Powershell脚本。 这是在Server 2012上。 我运行了以下命令: sc.exe create "MyService" binPath="powershell.exe 'c:\myFolder\myScript.ps1'" 该命令成功运行。 但是,当我开始这个服务的时候,它立刻就出错了,服务没有及时响应。 我知道,将Powershell作为服务运行是违背最佳实践的,但这甚至有可能吗? 我得到的最好的build议是运行这个脚本作为一个计划任务,而不是一个服务。 这是有道理的,但我的安全人员已启用GPO选项“networking访问:不允许存储密码和凭据”。 当没有用户login时,这可以防止任务pipe理器使用正确的凭据运行任务。 我为什么要这样做? 我们有一个只能以窗口模式(而不是服务)运行的旧程序,并将stdout和stderr都打印到屏幕上。 这意味着(a)用户必须每天24小时login到该服务器,并且(b)没有日志文件。 如果在发生错误时没有注意屏幕,则错误将向右滚动。 可执行文件在新窗口中启动,因此redirect操作符对此没有影响。 当我们replace这个程序时,我需要它(a)在用户注销或者重新启动后始终运行,(b)把stdout和stderr写入日志文件。 我用Powershell简单的Powershell脚本解决了第二个问题: "Program started at $(get-date)" | Out-File c:\myFolder\CrapProgram.log -append & "c:\myFolder\CrapProgram.exe" | Tee-Object c:\myFolder\CrapProgram.log 这将启动Powershell中的程序。 它的输出既指向Powershell窗口又指向日志文件。 现在,如果我可以让这个脚本在没有人login的时候运行,并且让它在电脑启动时开始,并且让我的低级支持团队可以轻松停止并轻松启动,那么我会做生意。 这就是为什么我要将Powershell注册为服务。 如果有更好的解决办法,让我知道。