2017-12-31 59 views

答えて

1

あなたは組み立てがして名前でGACにすでに存在するかどうかを確認することができます:あなたは、あなたの入力アセンブリをフィルタリングするテスト機能でそれを包むことができ

$AssemblyName = [System.Reflection.AssemblyName]::GetAssemblyName("C:\Path\to\assembly.dll") 
$IsInGAC = [System.Reflection.Assembly]::ReflectionOnlyLoad($AssemblyName).GlobalAssemblyCache 

function Test-GACPresence { 
    param(
     [Parameter(Mandatory=$true,ParameterSetName='Path')] 
     [string]$Path, 

     [Parameter(Mandatory=$true,ParameterSetName='LiteralPath',ValueFromPipelineByPropertyName=$true)] 
     [Alias('PsPath')] 
     [string]$LiteralPath 
    ) 

    $LiteralPath = if($PSCmdlet.ParameterSetName -eq 'Path'){ 
     (Resolve-Path $Path).ProviderPath 
    } else { 
     (Resolve-Path $LiteralPath).ProviderPath 
    } 

    try{ 
     return [System.Reflection.Assembly]::ReflectionOnlyLoad([System.Reflection.AssemblyName]::GetAssemblyName($LiteralPath)).GlobalAssemblyCache 
    } 
    catch{ 
     return $false 
    } 
} 

$ExistsInGAC = Get-ChildItem "path\to\test" -Filter *.dll -Recurse |?{$_|Test-GACPresence} 
$ExistsInGAC |Remove-Item 
+0

は誤植があります最終的には ?おそらく、それはリモートアイテムではなくアイテムの削除でなければなりません。 –

+0

@Mathias R. Jessenこれはすごくうまくいっていますが、アセンブリファイルのバージョンではなくアセンブリファイルの名前だけを考慮する必要はありません。アセンブリファイルのバージョンを確認するためのガイダンスはありますか? – PatrickNolan

+0

@ MathiasR.Jessenをループして、上記の参照がうまくいけば分かりません – PatrickNolan

関連する問題