我正试图从powershell运行一个简单的命令,但与往常一样,powershell什么都不起作用。
无论我尝试了多少不同的引号,我都无法让它发挥作用。
PS> Measure-Command { C:Program Files (x86)Microsoft Visual Studio2019ProfessionalCommon7IDEdevenv.exe test.sln /Build }
等命令行
C:Program Files (x86)Microsoft Visual Studio2019ProfessionalCommon7IDEdevenv.exe test.sln /Build
在任何shell中都不起作用,因为由于包含空格的路径所必需的可执行路径周围缺少引号,将导致C:Program
被解释为可执行路径。换句话说:引用这样的路径是必须的。
特定于PowerShell的是需要使用&
,无论何时可执行路径被引用和/或包含变量引用/表达式,都需要使用调用运算符(这是本答案中解释的纯粹语法要求;如果您不想考虑何时需要&
,则可以始终使用它(。
此外,正如您自己所发现的,对于同步的、基于控制台的操作,您必须调用devenv.com
,而不是devenv.exe
[1]
因此:
Measure-Command {
& 'C:Program Files (x86)Microsoft Visual Studio2019ProfessionalCommon7IDEdevenv.com' test.sln /Build
}
注意,由于路径为literalone(没有变量引用/表达式(,因此优选使用single-quoting('...'
(;有关PowerShell中字符串文字的详细信息,请参阅此答案的底部部分。
[1]如果您需要同步调用GUI-子系统应用程序(等待它退出(-默认情况下异步运行-请使用Start-Process
-Wait