2010-03-13 68 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')定义属性的值。 –