在ASP Classic页面中执行.Bat文件

时间:2014-09-24 14:51:50

标签: batch-file asp-classic

我想使用ASP classic重新启动位于不同服务器的服务,但它不能用于我的工作。

我有2个批处理文件,它们将在另一个远程服务器中停止并启动多个服务:

sc \\<machine address> stop service1
sc \\<machine address> stop service2

sc \\<machine address> start service1
sc \\<machine address> start service2

我将从我的ASP经典代码中调用它,就像这样:

dim wshell
set wshell = CreateObject("WScript.Shell") 
wshell.run "c:\folder1\stopService.bat" 
wshell.run "c:\folder1\startService.bat" 
set wshell = nothing 

使用这些代码,它仍然无效。我已经阅读了类似于此问题的解决方案,将ApplicationPool更改为LocalSystem并为该文件提供足够的权限。但仍然不适合我。

我错过了什么来解决这个问题?

请帮忙!谢谢!

3 个答案:

答案 0 :(得分:1)

我能够解决如何重新启动位于另一台服务器中的多项服务的问题:

我制作了这样的批处理文件,在我的服务所在的服务器中调用另一个批处理文件:

cmdkey.exe /add:<machine_ipAddress> /user:<domain>\<username>/pass:<password> 
psexec.exe \\<machine_ipAddress>   "C:\batch.bat"
cmdkey.exe /delete:<machine_ipAddress> 

这是batch.bat的样子:

cmd /c "net stop "service1" & net stop "service2" & net start "service1" & net start "service2"" 

这可能不是最有效的解决方案,但肯定有效:)

谢谢!

答案 1 :(得分:0)

确保您已将.bat文件的权限与应用程序池用户一起执行。

如果您收到任何错误并且没有提及,请执行此操作。

答案 2 :(得分:0)

Beeing能够从一个网站运行.BAT文件是一个非常危险的操作。黑客喜欢这种类型的东西,并且不认为没有黑客会对破坏公司网络感兴趣。你应该寻找另一种做事的方式。例如,您可以在远程服务器上有一个进程,该进程在某些数据库中定期查找某些值,并让您的页面更改此值以停止或重新启动服务。

另一种方法是使用许多应用程序可用的应用程序之一来获取远程桌面。

在所有情况下,在开始将网站用作网络上任何服务器的远程控制器之前,请三思而后行。