在powershell字符串的通配符为电话操作员

时间:2015-05-14 08:12:42

标签: 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 Runner的版本放在那里,我想为它设置一个通配符,然后找到我所拥有的任何版本(前提是我只有一个)但是我很难找到一个工作解决方案。

谢谢,

2 个答案:

答案 0 :(得分:2)

假设存在唯一的版本,Resolve-Path ...SpecRun.Runner.*...应该有效:

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

答案 1 :(得分: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的版本。