[英]Running an EXE file using PowerShell from a directory with spaces in it
我正在嘗試從C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE
運行MSTest.exe。 更重要的是,我將當前目錄中的所有程序集都設置為單獨的/ testcontainer參數。 如果沒有PowerShell的抱怨,我無法弄清楚如何做到這一點。
$CurrentDirectory = [IO.Directory]::GetCurrentDirectory()
$MSTestCall = '"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe"'
foreach($file in Get-ChildItem $CurrentDirectory)
{
if($file.name -match "\S+test\S?.dll$" )
{
$MSTestArguments += "/TestContainer:" + $file + " "
}
}
$MSTestArguments += " /resultsFile:out.trx"
$MSTestArguments += " /testsettings:C:\someDirectory\local64.testsettings"
Invoke-Expression "$MSTestCall $MSTestArguments"
我從這段代碼得到的錯誤是:
Invoke-Expression:您必須在'/'運算符的右側提供值表達式。
當我嘗試在名稱中沒有空格的目錄中調用mstest.exe時,我不會收到此錯誤(不需要額外的“)。
當我嘗試使用&
,
&$MSTestCall $MSTestArguments
它將$ MSTestArguments作為單個參數交給MSTest提示拋出。 建議?
我建議你使用一系列參數和運算符&
。 請參閱我在此處的答案中的示例: 執行存儲在Powershell變量中的命令
在這種情況下,代碼應該是這樣的:
$MSTestCall = "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe"
$MSTestArguments = @('/resultsFile:out.trx', '/testsettings:C:\someDirectory\local64.testsettings')
foreach($file in Get-ChildItem $CurrentDirectory)
{
if($file.name -match "\S+test\S?.dll$" )
{
$MSTestArguments += "/TestContainer:" + $file
}
}
& $MSTestCall $MSTestArguments
這有用嗎?
$MSTestCall = @'"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe"'@
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.