簡體   English   中英

無法獲取Request.Querystring以在VBScript中傳遞變量

[英]Cant get Request.Querystring to pass a variable in VBScript

我正在嘗試將值(在url中)傳遞給vbscript,依次將使用它來啟動可執行文件(在客戶端,這就是為什么我使用vbscript),並將該值作為該可執行文件的參數。 例如:

啟動此exe的語法是

\\HQFileServer\Share Launch.exe 1 computername \\ServerName

因此,我將計算機名作為“名稱”傳遞:

http://localhost/launchclient.asp?Name=Laptop1

launchclient.asp包含:

<script language="vbScript">
set oWshShell = CreateObject("WScript.Shell")
Name = Request.QueryString("Name")
oWshShell.run "\\HQFileServer\Share\Launch.exe " & Name & " \\SCCM2012WAN",1,True
</script>

我嘗試通過一次刪除一行來調試它,因為意識到某種原因,它表明查詢字符串未傳遞到腳本中。.當我省略Request.QueryString("Name")並鍵入價值-它起作用...

有什么想法嗎?

我試圖尋找答案,卻無法解決這個問題。

更新資料

沒錯,我讀完此評論后,現在我想知道您想做什么。

要將服務器端的值傳遞給客戶端代碼塊,只需在客戶端內部使用一個ASP代碼塊即可。

<script language="vbScript">
set oWshShell = CreateObject("WScript.Shell")
oWshShell.run "\\HQFileServer\Share\Launch.exe ""<%= Request.QueryString("Name") %>"" \\SCCM2012WAN",1,True
</script>

這樣,ASP引擎將在代碼塊發送到客戶端之前替換<%= Request.QueryString("Name") %> ,如下所示:

<script language="vbScript">
set oWshShell = CreateObject("WScript.Shell")
oWshShell.run "\\HQFileServer\Share\Launch.exe "Laptop1" \\SCCM2012WAN",1,True
</script>

提到您需要將其視為string值,但是由於VBScript使用引號( " )表示字符串,因此必須轉義字符串中的字符串,您可以通過將引號( "" )加倍來實現


舊答案,但仍然有意義

經典ASP不會處理該代碼,因為此刻該代碼被分類為被忽略的客戶端(HTML)腳本塊,並在服務器響應中按“原樣”傳遞。

有兩種方法可以解決此問題:

  1. 更改腳本標簽,所以它知道它應該由服務器通過將處理runat="Server"屬性的script標簽。

     <script language="VBScript" runat="Server"> set oWshShell = CreateObject("WScript.Shell") Name = Request.QueryString("Name") oWshShell.run "\\\\HQFileServer\\Share\\Launch.exe " & Name & " \\\\SCCM2012WAN",1,True </script> 
  2. 使用ASP代碼塊。

     <% set oWshShell = CreateObject("WScript.Shell") Name = Request.QueryString("Name") oWshShell.run "\\\\HQFileServer\\Share\\Launch.exe " & Name & " \\\\SCCM2012WAN",1,True %> 

為避免與客戶端腳本標簽混淆,我個人建議使用ASP代碼塊語法<% %>


有用的鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM