2013-07-17 49 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)。