在Powershell中使用空格

在Powershell中使用空格,powershell,spaces,Powershell,Spaces,我在这个问题上已经研究了两天了,我被难住了。所以我谦卑地来到这里,希望有人能帮助我 我正在尝试编写一个powershell脚本,该脚本将设置Dell硬件,以便使用cctk添加资产标签和财产所有者标签。这是我到目前为止写的东西 $prox86 = ${env:ProgramFiles(x86)} $cctkpath = "$prox86\Dell\CCTK\X86_64\cctk.exe" $assettag = "123456" $proptag = "Property of My Compan

我在这个问题上已经研究了两天了,我被难住了。所以我谦卑地来到这里,希望有人能帮助我

我正在尝试编写一个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”未被识别为内部或外部命令、可操作程序或批处理文件

无论出于什么原因,$PROPTTAG变量中的这些额外空格似乎会杀死这行代码。如果我将属性标记更改为soemthing,比如“test123”,或者任何没有空格的东西,它将正常工作。我试着使用下面链接中的建议,但我无法让它工作。任何帮助都将不胜感激


如果您不需要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


希望这能有所帮助。

您只需删除
cmd.exe/c
,然后像以前一样使用呼叫操作员
以“本机”方式执行它。这样,您就不必将带引号的字符串传递给cmd.exe。
`
不会转义空格。它们在命令字符串中是转义单引号,并且它们首先不需要转义。简单的单引号就行了。安迪和凯尔,谢谢你们的意见。我尝试了两种方法,它们都奏效了。非常感谢你们的帮助!