Запуск EXE-файла с помощью PowerShell из каталога с пробелами в нем

Я пытаюсь запустить MSTest.exe из C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE . Более того, я беру все сборки в моем текущем каталоге и устанавливаю их как отдельные аргументы / 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. Предложения?

12
задан Peter Mortensen 7 December 2014 в 22:04
поделиться