在发布之前,我已经尽力找到自己的答案差不多2天了。如果这个问题已在本网站的某个地方得到解答,我会提前道歉。
简而言之,我需要从我目前正在使用的.dll中提取VersionInfo:
[System.Diagnostics.FileVersionInfo] :: GetVersionInfo('C:\ PathHere.dll')。FileVersion | New-Item -ItemType文件c:\ test.txt
这适合我,虽然如果有人拥有他们认为更清洁的方法,我会全都耳朵......或更准确地说......所有的目光。该脚本将采用完整版本值并按照我的意愿写入文本文件,但我的问题是我只想要前3个小数位,在这种情况下,我得到的是完整版本信息,它总是4位小数。
因此,如果VersionInfo是1.3.102310.0345,我希望.txt文件只包含1.3.102310 剩下的数字不是四舍五入是非常重要的。
只要最终结果是前三个小数位的完整值,我真的不在乎版本输出是否仅限于显示前三个小数位,或者是否记录了完整的versioninfo .txt,然后可靠地从文件中删除。
答案 0 :(得分:3)
试试这个:
$value = [System.Diagnostics.FileVersionInfo]::GetVersionInfo(...)
$version = [version]$value.ProductVersion
$output = $version.tostring(3) # show x.y.z
$output | out-file c:\test.txt
答案 1 :(得分:0)
这应该这样做:
[string]::Join('.', (Get-Item C:\PathHere.dll).versionInfo.FileVersion.Split('.')[0..2]) | New-Item –ItemType file c:\test.txt
或者是一种正则表达式方式,以防您遇到两个问题:
(Get-Item C:\PathHere.dll).versionInfo.FileVersion -replace '^(\d+\.\d+\.\d+)\.\d+$', "`$1" | New-Item –ItemType file c:\test.txt
答案 2 :(得分:0)
这是另一种方式:
$a = [System.Diagnostics.FileVersionInfo]::GetVersionInfo('C:\my.dll').fileversion; $a.Substring(0, $a.LastIndexOf('.')) | New-Item –ItemType file c:\test.txt
答案 3 :(得分:0)
这些答案非常好,所有这些都很有效。在发布这个问题之后,我放慢了速度,退了一步,在和朋友聊天时,另一个可能的答案击中了我。
$ VersionInfo = [System.Diagnostics.FileVersionInfo] :: GetVersionInfo('C:\ Builds \ Agent1 \ QACodeLine \ Sources \ WebPublicBuild \ Binaries \ PowerWallet.Common.CommonTypes.dll')。FileVersion $ VersionInfo.split('。')|选择 - 第一个3 | out-File“C:\ testies.txt”
此方法首先使用.split('。')将输出分成4个部分,然后通过select -first 3仅选择前3个(仅选择前3个输出。然后输出可以重新连接或者如果更有用,逐行保存到文件但我认为我将使用这里提供的方法之一,最后,我会更好地写入具有正确版本信息格式的前3个八位字节的文本文件。
再次感谢您的快速反应 - 非常感谢帮助! PowerShell是令人难以置信的,它更支持社区!