在Powershell中使用空格

时间:2013-06-18 23:48:55

标签: powershell spaces

我已经在这个问题上工作了2天了,我很难过。所以我谦卑地来到这里,希望有人可以帮助我。

我正在尝试编写一个powershell脚本,该脚本将设置Dell硬件以使用cctk添加资产标签和属性所有者标签。这是我到目前为止所写的内容。

$prox86 = ${env:ProgramFiles(x86)}
$cctkpath = "$prox86\Dell\CCTK\X86_64\cctk.exe"
$assettag = "123456"
$proptag = "Property of My Company"
& cmd.exe /c $cctkpath "--asset=$assettag"
& cmd.exe /c $cctkpath "--propowntag=$proptag"

当我运行PS脚本时,资产标签部分完美运行。当我包含空格时,propowntag将不起作用。它返回时出现错误,表示..

  

'C:\ Program'不被识别为内部或外部命令,可操作程序或批处理文件。

无论出于何种原因,我的$ proptag变量中的额外空格似乎都会破坏这行代码。如果我将属性标记更改为类似“test123”的东西,或任何没有空格的东西,它将正常工作。我尝试使用下面链接中的建议,但我无法让它工作。任何帮助都会得到很大的帮助。

How to Call CMD.EXE from PowerShell with a Space in the Specified Command's Directory Name

1 个答案:

答案 0 :(得分:0)

如果您不需要cmd.exe来运行它,我想出了这个:

$prox86 = ${env:ProgramFiles(x86)}
$cctkpath = "$prox86\Dell\CCTK\X86_64\cctk.exe"
$assettag = "123456"
$proptag = "Property of My Company"

$cmd = "& `'$cctkpath`' --asset=`'$assettag`'"
Invoke-Expression $cmd
$cmd = "& `'$cctkpath`' --propowntag=`'$proptag`'"
Invoke-Expression $cmd

这样做的原因是`'将转义空格并将其存储在$cmd中,然后在运行调用表达式时它将正确评估$cmd

希望这有帮助。