2015-05-14 68 views
1

在PowerShell腳本中我需要調用這樣通配符在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亞軍的版本,我想放一個通配符的然後找到我擁有的版本(前提是我只有一個版本),但我正在努力爲它找到一個可行的解決方案。

感謝,

回答

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被選中。