我有下面的powershell代码,它将通过名称获得解决方案中的所有项目。
但是,我想得到那些以“Test”开头的项目(忽略-match位,因为我玩过各种各样的东西)。我错过了什么?
cd C:\ SourceControlledProjects \ ClassLibrary1
gc ClassLibrary1.sln | ? {$ _ -match“^ Project”} | %{($ .Split(“,”))[1] .Trim()。修剪('“')} | ? {$ -match“。* proj”} | %{$ x = [xml](gc $ ); $ x.Project.PropertyGroup [0] .AssemblyName} %{$ +“。dll”} |格式表|其中{$ _ -match“TestProject1”}
由于
答案 0 :(得分:2)
这应该让生活更轻松:
gc .\test.sln |
Where-Object {
$_.StartsWith("Project(")
} |
ForEach-Object {
$name, $relativePath, $guid = ($_ -split '=' | Select-Object -Skip 1) -split '[,"]' |
Where-Object { $_.Trim() }
New-Object PSObject -Property @{
Name = $name
RelativePath = $relativePath
Guid = $guid
}
}
这会将输出转换为属性包,从那里开始,它只是:
| Where-Object { $_.Name -like "test*" }
希望这有助于