我有一个父目录,里面有多个项目文件夹。 如何检查powershell是否存在所有项目文件夹中所有相应dll的pdb?
我尝试了以下但不知道如何将pdb与特定的dll匹配。
$source = "C:\ParentDir\*"
$Dir = get-childitem $source -recurse
$List = $Dir | where-object {$_.Name -like "*.dll"}
非常感谢任何帮助。
答案 0 :(得分:4)
试试这个,它应该输出两列,FullName,dll路径和PDB,它包含一个布尔值,表明是否有相应的PDB文件。
Get-ChildItem $source -Filter *.dll -Recurse |
Select-Object FullName,@{n='PDB';e={ Test-Path ($_.FullName -replace 'dll$','pdb') -PathType Leaf }}
答案 1 :(得分:1)
试试这个:
$source = ".\Projects\"
$dlls = Get-ChildItem -Path $source -Filter *.dll -Recurse | where {!$_.PSIsContainer}
foreach ($dll in $dlls)
{
$pdb = $dll.FullName.Replace(".dll",".pdb")
if (!(Test-Path $pdb)) { Write-Output $dll }
}
它为每个没有pdb的dll返回fileinfo(dir)对象。使用fullname
属性获取文件路径。我提供了上面的长答案,以便轻松展示它是如何工作的。要缩短它,请使用:
$source = ".\Projects\"
Get-ChildItem -Path $source -Filter *.dll -Recurse | where {!$_.PSIsContainer} | % { $pdb = $_.FullName.Replace(".dll",".pdb"); if (!(Test-Path $pdb)) { $_ } }