我试图将变量从我的批处理文件传递到Powershell以发布到数据库,一切正常,除非变量是带空格的字符串,Powershell将其拆分为多个变量。
这是我的批处理文件的代码:
PowerShell -NoProfile -ExecutionPolicy Bypass -file C:\TEMP\api.ps1 %CustomerCode% %OrderNumber% %CompanyName%
这是我的Powershell代码:
param($customerCode, $orderNumber, [string]$CompanyName)
Write-Output $CompanyName
当$CompanyName
等于Test Company
时,Powershell会输出Test
。
任何想法我做错了什么?
答案 0 :(得分:0)
要安全地从cmd.exe
(从命令行或批处理文件)传递环境变量引用作为命令行参数,请将它们包含在"..."
中,如下所示(省略参数-NoProfile -ExecutionPolicy Bypass
为简洁起见:
powershell -file "C:\TEMP\api.ps1" "%CustomerCode%" "%OrderNumber%" "%CompanyName%"
如果没有"
作为分隔符,PowerShell将无法区分具有嵌入空白的单个参数与多个以空格分隔的参数,并且值Test Company
将被解释为 2 参数,Test
(在您的情况下绑定到$CompanyName
)和Company
(由您的脚本解除绑定)。