我会尽量保持这个基础。我正在尝试在服务器端运行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'行。我在这里错过了什么?
由于
答案 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。)