0

複数のプロジェクト フォルダーが存在する親ディレクトリがあります。すべてのプロジェクト フォルダー内のすべてのそれぞれの dll に対して pdb が存在するかどうかを powershell で確認するにはどうすればよいですか?

以下を試しましたが、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 の 2 つの列が出力されます。

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 に答える