2015-05-14 2 views
1

В в Powershell сценарии мне нужно позвонить несильно, как этотWildcard в Powershell строки для оператора вызова

$SpecRunCall = "./packages/SpecRun.Runner.1.2.0/tools/SpecRun.exe" 
$MSTestArguments = @('run', 'Default.srprofile', "/baseFolder:.\TestResults", '/log:specrun.log') 

if($tag) { 
    $MSTestArguments += '/filter:@' + $tag 
} 

& $SpecRunCall $MSTestArguments 

Но я должен поставить там версию SpecRun Runner, я думал положить уайлдкард для что, а затем найдите ту версию, которая у меня есть (при условии, что у меня ее есть только один), но я изо всех сил пытаюсь найти для нее рабочее решение.

Спасибо,

ответ

2

Предполагая, что только существует версия, Resolve-Path ...SpecRun.Runner.*... должна работать:

$SpecRunCall = Resolve-Path ./packages/SpecRun.Runner.*/tools/SpecRun.exe 
1

Вы могли бы следующее при условии, что все версии SpecRunner все в разных папках помечены с номером версии. И только одна версия будет находиться на компьютере одновременно.

$version = "1.1.0","1.2.0","1.3.0" 
$SpecRunCall = $null 

$version | Foreach { 
    # Set spec runner version folder 
    $SpecFolder = "./packages/SpecRun.Runner.$_/" 
    # Test folder 
    If(Test-path $SpecFolder){ 
     # Version folder found use it 
     $SpecRunCall = $SpecFolder+"tools/SpecRun.exe"   
    }  
} 

# Check if a version was found 
If($SpecRunCall -ne $null){ 
    # ** Your code ** 

    $MSTestArguments = @('run', 'Default.srprofile', "/baseFolder:.\TestResults", '/log:specrun.log') 

    If($tag) {$MSTestArguments += '/filter:@' + $tag} 

    & $SpecRunCall $MSTestArguments 
} 

Этот код будет принимать список номеров версий и искать соответствующую SpecRunner папки. Если найдено, что выбрана версия SpecRunner.

Смежные вопросы