Server.CreateObject(“Wscript.Shell”)问题 - 对象服务器所需的错误??? ASP / VBscript错误

时间:2013-07-17 18:57:25

标签: asp-classic vbscript createobject

我会尽量保持这个基础。我正在尝试在服务器端运行shell(而不是客户端)。我已经分解了我的代码所以它非常基本。现在,如果我使用CreateObject(“Wscript.shell”)在客户端运行它,它将在我的浏览器中“document.write”用户。

<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'行。我在这里错过了什么?

由于

2 个答案:

答案 0 :(得分:1)

从你的'document.write'和'script'行看来,你似乎试图在浏览器中运行这段代码......如果是这样,你将无法做你想做的事。 / p>

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

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

(请记住,使用'WScript.Shell'运行命令也会带来一系列安全挑战)

答案 1 :(得分:0)

为了让脚本在服务器上运行,您需要脚本标记上的runat属性:

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

或者,如果您的默认脚本语言是VBScript(除非您已明确更改它,否则将使用它),那么您应该使用ASP脚本分隔符<% %>来避免由于脚本执行顺序而导致的任何意外结果(有关详细信息,请参阅this SO question。)

相关问题