Строки версии для «System.Version» слишком длинные (или короткие) в PowerShell

Как я могу принудительно преобразовать тип в PowerShell или, что более вероятно, лучше понять, почему я не могу произвольно назначать числовые строки типа?

Мы загружаем некоторые обновления программного обеспечения в папки, названия которых содержат номера версий. Пытаясь получить отчеты о последних загруженных версиях, я сделал следующее быстро и грязно:

      ForEach ($Folder in $(Get-ChildItem -Path $SoftwareDirectory -Directory))
{
    $CurrentVersion = $Folder -Replace "[^0-9.]"
    If ($CurrentVersion -ne $null)
    {
        If ([System.Version]$CurrentVersion -gt [System.Version]$MaxVersion)
        {
            $MaxVersion = $CurrentVersion
            $MaxFolder = $Folder
        }
    }
}

Это будет заголовки каталогов, подобные следующим:

  • foo-tools-1.12.файл
  • бар-статический-3.4.0.файл

В большинстве случаев это приемлемо. Однако при встрече с некоторыми чудаками с более длинными числами, такими как следующие,

  • апплет-4u331r364.файл

В таком случае, System.Versionотклоняет результирующую строку как слишком длинную.

      Cannot convert value "4331364" to type "System.Version". Error: "Version string portion was too short or too long."

0 ответов

Другие вопросы по тегам