Powershell将变量分解为多个

时间:2016-11-10 00:11:30

标签: powershell batch-file

我试图将变量从我的批处理文件传递到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

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

要安全地从cmd.exe(从命令行或批处理文件)传递环境变量引用作为命令行参数,请将它们包含在"..."中,如下所示(省略参数-NoProfile -ExecutionPolicy Bypass为简洁起见:

powershell -file "C:\TEMP\api.ps1" "%CustomerCode%" "%OrderNumber%" "%CompanyName%"

如果没有"作为分隔符,PowerShell将无法区分具有嵌入空白的单个参数与多个以空格分隔的参数,并且值Test Company将被解释为 2 参数,Test(在您的情况下绑定到$CompanyName)和Company(由您的脚本解除绑定)。