1

我会尽量保持这个基本的。我正在尝试在服务器端(而不是客户端)运行 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”行。我在这里想念什么?

谢谢

4

2 回答 2

1

从您的“document.write”和“script”行看来,您正试图在浏览器中运行此代码......如果是这样,您将无法做您想做的事情。

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

要执行您想要的操作(如果我在两行之间正确阅读),您需要在您的服务器上创建一个 ASP 脚本(或类似脚本)以从“whoami”获取输出并返回/输出它。您可以通过 javascript/AJAX 从您的客户端页面调用它。

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

于 2013-07-17T21:22:26.393 回答
0

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

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

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

于 2013-07-19T06:34:12.493 回答