使用服务器名称时Shell程序不执行

时间:2015-11-06 15:14:52

标签: asp.net vb.net shell cmd

我有一个VB.Net 2012 Web应用程序,我们正在尝试执行一个启动位于远程VM上的vbs脚本的进程。

当我直接在Visual Studio调试器中运行代码时,代码正常工作,该调试器通过以下URL生成:

http://localhost:63579/DDFE/MultiRun.aspx?&Sort=

但是,当我们将应用程序发布到生产文件夹并运行Web应用程序时,cmd进程似乎没有正确执行。以下是已发布的网址:

http://ne1dwgtqa301/DDFE/MultiRun.aspx?&Sort=

您可以看到区别在于机器名称“ne1dwgtqa301”与“localhost:63579”。

我认为这是一个权限问题,但是无法确定Shell命令在通过发布的URL运行时未正确执行的根本原因。即使在主机服务器上执行此操作也不会运行,但在手动运行或在同一服务器上通过“localhost:63579”运行时,该命令可正常运行。

非常感谢任何帮助!

Protected Sub btnRun_Click(sender As Object, e As EventArgs) Handles btnRun.Click
    Dim shellCommand As String

    For Each item As ListItem In lstVMs.Items
        If item.Selected = True Then
            shellCommand = "C:\websites\prod\DDFE\Log\psexec.exe \\NE1-VDI-" & item.Text & ".us.ad.xxx.com -e -h -u W2KXXX\user -p pswd C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe /c C:\windows\SysWoW64\cscript.exe C:\Scripts\Driver.vbs"
            Shell(shellCommand, AppWinStyle.Hide)
        End If
    Next
End Sub     'btnRun_Click

1 个答案:

答案 0 :(得分:0)

在黑暗中拍摄 - 但这就是我编写shell命令行的方法。

        shellCommand = "cmd.exe /c cd C:\websites\prod\DDFE\Log\ " & "& psexec \\NE1-VDI-" & item.Text & ".us.ad.xxx.com -e -h -u W2KXXX\user -p pswd & powershell.exe /c cd C:\windows\SysWoW64\ " & "& cscript C:\Scripts\Driver.vbs"
        Shell(shellCommand, AppWinStyle.Hide, true, -1)

我认为你错过了一个至关重要的"&" cmd.exe和powershell.exe命令之间的符号