0

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

我正在尝试编写一个 powershell 脚本,该脚本将设置戴尔硬件以使用 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”之类的东西,或者任何没有空格的东西,它就会正常工作。我尝试使用下面链接中的建议,但我无法让它工作。任何帮助将不胜感激。

如何在指定命令的目录名称中使用空格从 PowerShell 调用 CMD.EXE

4

1 回答 1

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正确评估。

希望这可以帮助。

于 2013-06-19T00:01:30.687 回答