如何使服务在会话0之外运行脚本

时间:2016-03-24 04:02:05

标签: powershell batch-file cmd psexec windows-server-2012-r2

我使用的UPS软件具有在管理PC(PC1)进入电池模式时运行脚本的功能。我提出了一个PowerShell脚本(ShutdownVM.ps1),它可以自行运行到VM服务器上的Invoke-Commands;正常关闭VM并关闭主机(SERVER)。当UPS软件无法直接运行.ps1文件时,出现了第一个问题。

很简单,我以为我会创建一个简单的.bat(shutdown.bat)文件来运行PC1上的.ps1文件来关闭SERVER上的所有内容。从台式机运行我的.bat文件工作得很好,但由于UPS软件将其作为服务运行,我的穷人.bat文件将从会话0运行。

以下是我在Shutdown.bat中使用的代码:

@echo on
Powershell.exe -executionpolicy unrestricted -command C:\Windows\ShutdownVM.ps1

交互式服务管理器会弹出,我的电脑会挂起,最后UPS软件将关闭它,我将回到原点,SERVER及其VM仍在运行。所以我想我会下载并使用PSExec来执行我的shutdown.bat文件。

我制作了另一个.bat文件,并将其命名为PSExec.bat,下面是其中的代码:

@echo on
psexec.exe -accepteula \\PC1 -h -u user -p pass -i 2 C:\Windows\shutdown.bat

最后!它试图运行!检查交互式服务管理器后,它显示PSExec抛出错误“系统无法找到指定的文件”

"The System Cannot Find The File Specified"

我不知道它甚至在寻找什么文件,我有双重,三重检查我的脚本中的路径名称,但仍然不知道它在做什么。如果有人能够解决任何问题(或者让我知道一种更容易实现我想要做的事情的方式),这将是很好的。谢谢!

-F

0 个答案:

没有答案