【问题标题】:Server.CreateObject("Wscript.Shell") issue - Object Server required error??? ASP/VBscript errorServer.CreateObject("Wscript.Shell") 问题 - Object Server required 错误??? ASP/VBscript 错误
【发布时间】:2013-07-17 18:57:25
【问题描述】:

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

谢谢

【问题讨论】:

    标签: asp-classic vbscript createobject


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我昨天确实发现,如果我在服务器上执行,我需要使用 response.write,我正在尝试这样做。但你也是对的,我在服务器上遇到了停止运行命令。我的实际脚本正在尝试执行 SQLCMD,当我在服务器上执行它时,结果证明这是一个问题。该 CMD 使用服务器帐户运行,而不是我指定的具有运行 SQLCMD 所需的访问权限的 AppPool PIN。我目前正在研究其他一些选择。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多