【问题标题】:How to compare .net FW version number with number stored in variable如何将 .net FW 版本号与存储在变量中的数字进行比较
【发布时间】:2019-08-06 21:04:51
【问题描述】:

这里和#Powershell 超级新。我正在编写一个脚本来检查安装的 .Net Framework 版本是否大于或等于存储在变量中的版本号。

我遇到的问题是在设置过滤到版本号的变量时。

$installed = (Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\' | Get-ItemPropertyValue -Name Version | Where { $_.Version -ge $software }) -ne $null

我想比较一下在

中找到的 .Net Framework 版本

HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

到 Windows 10 计算机上安装的任何版本,以查看它是否大于或等于。我试过比较注册表中的版本号,但版本与我正在做的事情更相关。

我想将消息写入控制台和文本文件

$software = '4.7.02053'

$installed = (Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\' | Get-ItemPropertyValue -Name Version | Where { $_.Version -ge $software }) -ne $null

If(-not $installed) { "$software is NOT installed."| Out-File -FilePath C:\Pre-Req_Log.txt -append Write-Host "'$software' is NOT installed."; pause } else { "$software is installed."| Out-File -FilePath C:\Pre-Req_Log.txt -append Write-Host ".Net FW '$software' is installed." }

我的预期结果是看到“4.7.02053”已(或未)安装在文本文件中,并且它是正确的。是否相等并不重要,只要是那个版本或更高版本我都会很高兴。

【问题讨论】:

    标签: powershell scripting


    【解决方案1】:

    要比较版本号,不要将它们作为字符串进行比较,将它们转换为[version] (System.Version),然后进行比较:

    $refVersion = [version] '4.7.02053'
    
    $installedVersion = [version] (Get-ItemPropertyValue -LiteralPath 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Version)
    
    if ($installedVersion -ge $refVersion) {
      # installed
      # ...
    }
    else {
      # not installed
      # ...
    }
    

    如果您在可扩展字符串 ("...") 中使用这些 [version] 实例,您将获得预期的字符串表示,但请注意将它们按原样输出到控制台或通过 Out-File / >将显示带有单独显示的版本号组件的表格显示。要强制使用通常的字符串表示,请使用封闭的"..." - 例如"$refVersion",或调用.ToString(),例如$refVersion.ToString()

    【讨论】:

    • 嗯,我希望它不是关于艺术,而是关于逻辑,而且我不需要许可证,@TheIncorrigible1...为了达成共识(只有当你'准备好了):"$refVersion"$refVersion.ToString() 说明说明“使用封闭的"..." 和“调用.ToString()”,使用 - 随机选择 - 示例变量。如果我有引入$refVersion作为主题前面,“即”将是合适的:“要强制使用通常的字符串表示,例如对于$refVersion,使用封闭"..." , , "$refVersion"".
    猜你喜欢
    • 2022-01-15
    • 2015-06-20
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多