我试图将一个值(在一个url中)传递给一个vbscript,反过来,它将使用它来启动一个可执行文件(在客户端,这就是为什么我使用vbscript)将该值作为参数对于那个可执行文e.g:
启动此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")
并输入一个值时 - 它可以工作......
任何想法为什么?
我试图寻找答案,并且无法理解......
答案 0 :(得分:0)
在阅读this comment之后,我认为我现在明白你想要做什么。
要将服务器端值传递给客户端代码块,只需使用客户端内部的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>
同样mentioned您需要将其视为string
值,但由于VBScript使用引号("
)来表示字符串,因此必须对字符串中的字符串进行转义,你通过加倍引号(""
)来实现这一点。
旧答案,但仍然相关 - 是
经典ASP没有处理代码,因为目前它被归类为客户端(HTML)脚本块被忽略并且刚刚通过&#34;按原样#34;在服务器响应中。
有两种方法可以解决这个问题:
更改脚本标记,以便它知道服务器应该通过将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>
使用ASP代码块。
<%
set oWshShell = CreateObject("WScript.Shell")
Name = Request.QueryString("Name")
oWshShell.run "\\HQFileServer\Share\Launch.exe " & Name & " \\SCCM2012WAN",1,True
%>
为避免与客户端脚本标记混淆,我个人建议使用ASP代码块语法(<% %>
)。