如何在Classic ASP文件中调用PowerShell脚本并传递参数
Classic ASP 调用PowerShell脚本实现作业文件夹创建方案
核心修改说明
原有代码的VBS调用逻辑是服务端执行的,本身和浏览器兼容性无关,只需替换执行的命令行为PowerShell调用即可兼容所有浏览器。你只需将原有调用CSJobsCreate.vbs的逻辑替换为你的PowerShell脚本调用即可。
修改后完整代码
<script language="vbscript" runat="server"> </script> <html> <head> <title>CSJobs Job Creation Page</title> </head> <body> <% if Request.Form("foldernumber") = "" then Response.Write("<h2>This is a page to create a new Folder</h2>") else ' 输入合法性校验(防止命令注入,可根据你的作业编号规则调整) Dim foldernumber, regEx foldernumber = Trim(Request.Form("foldernumber")) Set regEx = New RegExp regEx.Pattern = "^[a-zA-Z0-9_\-]+$" ' 允许字母、数字、下划线、横杠,可按需调整 regEx.IgnoreCase = True If Not regEx.Test(foldernumber) Then Response.Write("非法的作业编号,仅允许字母、数字、下划线和横杠") Else set objshell = Server.CreateObject("Wscript.Shell") ' 替换为你的PowerShell脚本实际路径,-ExecutionPolicy Bypass 临时跳过执行策略限制 strTemp = "cmd /c powershell.exe -ExecutionPolicy Bypass -NoProfile -File ""C:\APPS\NewJob\CSJobsCreate.ps1"" " & foldernumber objshell.Run strTemp, 0, True Response.Write(foldernumber & " has been created.") End If end if %> <Form action="NewJob.asp" METHOD="POST"> <Input name="foldernumber"> <Input Type="submit" value="Create"> </Form> </body> </html>
必须配置的前置条件
- 调整服务器PowerShell执行策略:打开对应位数的PowerShell(和IIS应用池位数一致,32位/64位),执行
Set-ExecutionPolicy RemoteSigned,确认允许执行本地脚本 - 权限配置:IIS站点对应的应用池运行身份,需要拥有以下权限:
- PowerShell程序执行权限
- 你的PowerShell脚本文件的读取权限
- Isilon共享存储的读写权限,用于创建作业文件夹
- 脚本路径确认:上述代码中
C:\APPS\NewJob\CSJobsCreate.ps1替换为你实际的PowerShell脚本的绝对路径
内容的提问来源于stack exchange,提问作者Srinath_Nair
相关产品推荐
相关产品推荐

