簡體   English   中英

使用PowerShell從包含空格的目錄運行EXE文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM