繁体   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