2013-07-17 44 views
1

我会尽量保持这个基本。我试图在服务器端(而不是客户端)运行一个shell。我已经分解了我的代码,所以它非常基础。现在,如果我使用CreateObject(“Wscript.shell”)在客户端运行它,它将在浏览器中'document.write'用户。Server.CreateObject(“Wscript.Shell”)问题 - 对象服务器需要错误? ASP/VBscript错误

<script type="text/vbscript" > 
Set Shell = CreateObject("WScript.Shell") 
Set whoami = shell.exec("whoami") 
Set whoamiOutput = whoami.StdOut 
strWhoamiOutput = whoamiOutput.ReadAll 
document.write strWhoamiOutput 

</script> 

现在,如果我改变我的代码在服务器端运行:

<script type="text/vbscript" > 
Set Shell = Server.CreateObject("WScript.Shell") 
Set whoami = shell.exec("whoami") 
Set whoamiOutput = whoami.StdOut 
strWhoamiOutput = whoamiOutput.ReadAll 
document.write strWhoamiOutput 

</script> 

我得到了我的浏览器告诉我一个错误“所需的对象:服务器”在第11行第11行是'Server.CreateObject'行。我在这里错过了什么?

感谢

回答

1

从你的“文件撰写”,它似乎您试图运行在浏览器的代码“脚本”行......如果是这样,你将不能够做什么你想要做的。

server.createobject将用于服务器本身的VBScript/ASP使用。 (“服务器”对象是一个ASP对象,并且在客户端浏览器的VBScript中不可用)

要做你想做的事情(如果我正在正确地阅读行之间),你需要创建一个ASP脚本或类似的)在你的服务器上获取来自'whoami'的输出并返回/输出它。你可以通过javascript/AJAX从你的客户端页面调用它。

(请记住,运行使用“WScript.Shell”命令带有自己的一套安全挑战,以及)

+0

昨天我确实发现我需要使用response.write,如果我正在执行服务器,我正在尝试。但你也是对的,我在服务器上遇到了停止运行命令。我的实际脚本试图执行SQLCMD,当我在服务器上执行它时,这是一个问题。 CMD与服务器帐户一起运行,而不是我指定的AppPool PIN,它具有运行SQLCMD所需的访问权限。我在这一点上研究了一些其他的选择。 –

0

为了使脚本在服务器上运行,你需要的属性runat上脚本标签:

<script type="text/vbscript" runat="server"> 

,或者,如果您的默认脚本语言是VBScript(这将是除非你明确地改变了它),那么你应该使用ASP脚本定界符<% %>来避免因任何意外的结果以编写执行命令的脚本(有关更多信息,请参阅this SO question)。