将PowerShell VersionInfo输出限制为只有3个小数位,其中给出4个小数位或删除VersionInfo中的小数位

时间:2011-09-08 18:23:27

标签: powershell decimal powershell-v2.0 versioninfo

在发布之前,我已经尽力找到自己的答案差不多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,然后可靠地从文件中删除。

4 个答案:

答案 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是令人难以置信的,它更支持社区!