我希望能够在目录及其所有子目录中获取所有DLL文件的文件版本和汇编版本.我是编程的新手,我无法弄清楚如何使这个循环工作.
我有这个PowerShell代码来获取程序集版本(取自论坛):
$strPath = 'c:\ADMLibrary.dll'
$Assembly = [Reflection.Assembly]::Loadfile($strPath)
$AssemblyName = $Assembly.GetName()
$Assemblyversion = $AssemblyName.version
Run Code Online (Sandbox Code Playgroud)
这也是:
$file = Get-ChildItem -recurse | %{ $_.VersionInfo }
Run Code Online (Sandbox Code Playgroud)
如何从中循环,以便我可以返回目录中所有文件的汇编版本?
knu*_*nut 63
这是一个很漂亮的班轮:
Get-ChildItem -Filter *.dll -Recurse | Select-Object -ExpandProperty VersionInfo
Run Code Online (Sandbox Code Playgroud)
简而言之,PowerShell版本2:
ls -fi *.dll -r | % { $_.versioninfo }
Run Code Online (Sandbox Code Playgroud)
简而言之,tamasf建议的PowerShell版本3 :
ls *.dll -r | % versioninfo
Run Code Online (Sandbox Code Playgroud)
Joe*_*oey 33
作为一个丑陋的单行:
Get-ChildItem -Filter *.dll -Recurse |
ForEach-Object {
try {
$_ | Add-Member NoteProperty FileVersion ($_.VersionInfo.FileVersion)
$_ | Add-Member NoteProperty AssemblyVersion (
[Reflection.AssemblyName]::GetAssemblyName($_.FullName).Version
)
} catch {}
$_
} |
Select-Object Name,FileVersion,AssemblyVersion
Run Code Online (Sandbox Code Playgroud)
如果您只想要当前目录,那么显然要省略-Recurse
参数.如果您想要所有文件而不仅仅是DLL,那么删除-Filter
参数及其参数.代码(希望)非常简单.
我建议你将try
块中令人讨厌的部分拆分成单独的函数,因为这样会使错误处理变得不那么尴尬.
样本输出:
Name FileVersion AssemblyVersion
---- ----------- ---------------
Properties.Resources.Designer.cs.dll 0.0.0.0 0.0.0.0
My Project.Resources.Designer.vb.dll 0.0.0.0 0.0.0.0
WindowsFormsControlLibrary1.dll 1.0.0.0 1.0.0.0
WindowsFormsControlLibrary1.dll 1.0.0.0 1.0.0.0
WindowsFormsControlLibrary1.dll 1.0.0.0 1.0.0.0
Run Code Online (Sandbox Code Playgroud)
小智 5
让 Select-Object 创建属性
Get-ChildItem -Filter *.dll -Recurse | Select-Object Name,@{n='FileVersion';e={$_.VersionInfo.FileVersion}},@{n='AssemblyVersion';e={[Reflection.AssemblyName]::GetAssemblyName($_.FullName).Version}}
Run Code Online (Sandbox Code Playgroud)
和 Sample 输出类似
Name FileVersion AssemblyVersion
---- ----------- ---------------
CI.EntityFramework.Initialization.dll 1.0.0.0 1.0.0.0
Castle.Core.dll 3.3.0.43 3.3.0.0
Castle.Windsor.dll 3.3.0.51 3.3.0.0
Mutare.VitalLink.dll 1.0.0.0 1.0.0.0
Newtonsoft.Json.dll 9.0.1.19813 9.0.0.0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
41228 次 |
最近记录: |