2010-03-13 69 views

回答

3

不知道到底是什麼你之後,但如果是比較32位和64位GAC'd組件嘗試是這樣的:

PS> $gac64 = gci C:\Windows\assembly\GAC_64 -r *.dll | 
    select @{n='AQN';e={"$($_), $((Split-Path $_.PSParentPath -leaf) -split '__' -join ', ')"}} | 
    Sort AQN 
PS> $gac32 = gci C:\Windows\assembly\GAC_32 -r *.dll | 
    select @{n='AQN';e={"$($_), $((Split-Path $_.PSParentPath -leaf) -split '__' -join ', ')"}} | 
    Sort AQN 

PS> diff $gac32 $gac64 -Property AQN 

AQN               SideIndicator 
---               ------------- 
Mcx2Dvcs.dll, 6.1.0.0, 31bf3856ad364e35      => 
Microsoft.MediaCenter.Interop.dll, 6.1.0.0, 31bf3856ad36... => 
Microsoft.MediaCenter.iTV.Media.dll, 6.1.0.0, 31bf3856ad... => 
Microsoft.MediaCenter.Mheg.dll, 6.1.0.0, 31bf3856ad364e35 => 
Microsoft.MediaCenter.Playback.dll, 6.1.0.0, 31bf3856ad3... => 
Microsoft.MediaCenter.TV.Tuners.Interop.dll, 6.1.0.0, 31... => 
Microsoft-Windows-HomeGroupDiagnostic.NetListMgr.Interop... => 
SoapSudsCode.dll, 2.0.0.0, b03f5f7f11d50a3a     => 
Expression.DevHost.dll, 3.0.0.4000, 31bf3856ad364e35  <= 
Expression.DevHost.resources.dll, 3.0.0.4000_en_31bf3856... <= 
Microsoft.Expression.Encoder.Api2.dll, 3.0.0.0, 31bf3856... <= 
Microsoft.Expression.Encoder.dll, 3.0.0.0, 31bf3856ad364e35 <= 

請注意,拆分並非萬無一失(非常幼稚的impl),但它應該足以比較32位和64位GAC之間的不同之處。

+0

感謝您的幫助。 您能否詳細說明命令行? $ gac64 = gci C:\ Windows \ assembly \ GAC_64 -r * .dll | select @ {n ='AQN'; e = {「$($ _),$((Split-Path $ _。PSParentPath -leaf)-split'__'-join',')」}} Sort AQN 這樣我就可以按照我的要求進行定製。 –

+0

gci path -r * .dll以遞歸方式獲取位於路徑上的所有dll。 select(select-object)cmdlet可以通過從FileInfo獲取各種屬性,將傳入對象(Syste.IO.FileInfo)投影到另一個對象(PSCustomObject),並在名爲AQN的單個屬性中操作這些屬性。 Select-Object接受一個散列表來定義這個項目,其中Name條目(簡稱'n')定義屬性名稱,而Expression條目(簡稱'e')定義屬性的值。 –