Windows 如何使用PowerShell从NuGet包文件的名称中提取版本?

Windows 如何使用PowerShell从NuGet包文件的名称中提取版本?,windows,powershell,nuget,Windows,Powershell,Nuget,我有一个包含nuget包名称的文件,比如rmp2..nupkg。我想一个人演这个角色。我试过很多东西。 下面是一个这样的片段: Get-Content version.txt | ForEach-Object { $_.split("nupkg")[1]} | cut -f 2,3 -d 2 它不起作用 如果由于版本末尾的点而无法工作,请尝试以下操作: $version = Get-Content version.txt | ForEach-Object { $_.split("nupkg")

我有一个包含nuget包名称的文件,比如rmp2..nupkg。我想一个人演这个角色。我试过很多东西。 下面是一个这样的片段:

Get-Content version.txt | ForEach-Object { $_.split("nupkg")[1]} | cut -f 2,3 -d 2

它不起作用

如果由于版本末尾的点而无法工作,请尝试以下操作:

$version = Get-Content version.txt | ForEach-Object { $_.split("nupkg")[1]}

$version.Substring(0,$version.Length-1)
或者尝试使用-split而不是.split

(((Get-Content version.txt) -split('.nupkg')) -split('rmp2.'))[1]

使用以下正则表达式获取各种其他包ID和版本。e、 g

my.package.net.10.0.0.nupkg my.package.net.10.0.nupkg my.package.editor.csharp.0.1-build000055.nupkg my.package.4.0.0.editor.csharp.0.1-build000055.nupkg my.package.4.0.0.editor.csharp.0.1.0-build000055.nupkg
它也包括2。我得到的输出为2.5工作。虽然我有另一条这样的捷径$version.Substring2
if ($file.Name -match '(?<=(?<id>.+))\.(?<version>((\d+\.\d+(\.\d+)?))(?<suffix>(-.*)?))\.nupkg')
{
    $packageId = $Matches.id
    $packageVersion = $Matches.version
    # do your thing
}