Powershell:作为带参数的变量的命令

时间:2013-06-05 12:49:16

标签: powershell parameters command

我有一个简单的问题。我想为变量分配一个命令并使用额外的参数执行它,例如:

C:\test.exe /q /v

但是当我这样做时:

$path=C:\test.exe
$path /q /v

它不起作用..有什么想法吗?

2 个答案:

答案 0 :(得分:3)

最常规的方法是在包含命令“name”的变量上使用call运算符,例如:

& $path /q /v

当命令的路径(即本机exe)包含空格时,实际上需要这样做。

答案 1 :(得分:2)

命令为字符串:

使用Invoke-Expression cmdlet,您可以执行任意字符串作为一段代码。它接受字符串,编译并执行它。

所以你这样做:

$path='C:\test.exe';
Invoke-Expression "$path /q /v";

作为旁注:当您$path=C:\test.exe没有引号时,您实际上是将test.exe的STDOUT分配给变量$path。您必须向PowerShell明确表示它实际上是您希望稍后执行的字符串。


命令作为脚本对象:

如果您关注性能,还可以尝试将命令转换为已编译的脚本块,并使用&调用运算符执行它。

$path='C:\test.exe';
$cmd = [scriptblock]::Create("$path /q /v");
& $cmd;
相关问题