0

我有一个父目录,其中有多个项目文件夹。如何在 powershell 中检查所有项目文件夹中的所有相应 dll 是否存在 pdb?

我尝试了以下但不知道如何将 pdb 与特定的 dll 匹配。

$source = "C:\ParentDir\*"
$Dir = get-childitem $source -recurse
$List = $Dir | where-object {$_.Name -like "*.dll"}

任何帮助将不胜感激。

4

2 回答 2

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 }}
于 2013-01-11T08:23:04.860 回答
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)) { $_ } }
于 2013-01-11T05:50:48.007 回答