我需要知道当前安装的 Notepad++ 版本以获取自动更新脚本。有谁知道我如何在 Powershell 中获取它?也许有一个注册表项?
以下命令
(Get-Item "C:\Program Files\Notepad++\notepad++.exe").VersionInfo.FileVersion
返回 7.88
这应该足够了。
您可以添加到 @Mohammed Shabeer kp 答案,并将其与我的要点结合起来,在您的系统上静默安装 Notepad++。我将致力于将注册表查询添加到脚本中,以检查是否首先安装了 Notepad++。这样我们就不会下载不必要的文件。
如果您使用的是Windows 10,您可以右键单击它并选择属性,然后单击详细信息。您可以找到任何应用程序的当前版本
可以使用
Get-ItemProperty
获取全部属性,然后输出版本
从财产清单中。希望以下内容对您有所帮助。
$w64=Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | where-Object DisplayName -like 'NotePad++*'
$w32=Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | where-Object DisplayName -like 'NotePad++*'
if ($w64) {
write-Host $w64.DisplayVersion
} elseif ($w32) {
write-Host $w32.DisplayVersion
} else {
Write-Output "No Version Found"
}
从.exe文件获取版本信息
请注意,虽然 Caleb 上面建议的这个命令:
(Get-Item "C:\Program Files\Notepad++\notepad++.exe").VersionInfo.FileVersion
确实有效,但似乎至少对于某些旧版本的 Notepad++ 来说存在一些错误。我碰巧用记事本版本 8.3.2 尝试了这个命令,它给了我 8.32 的输出(而不是 8.3.2)。当然,这意味着在进行版本比较时,您的结果在很多情况下都是不正确的(例如,当将 8.6.2 与 8.32 进行比较时,后者更大,而当将 8.6.2 与正确的 8.3.2 进行比较时,前者更大)。
从注册表获取版本信息
所以我检查了注册表,这里看起来更可靠:
截至撰写本文时(2024 年 2 月),Notepad++ 32 位和 64 位版本都有固定的注册表路径,您可以在其中找到该软件当前安装的版本:
32 位:
“HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Notepad++”--> 属性“DisplayVersion”
64 位:
“HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Notepad++” --> 属性 DisplayVersion
您可以使用 PowerShell 直接读取此内容(无需提升提示符),代码如下(示例为 64 位版本,只需将路径调整为 32 位):
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Notepad++").DisplayVersion
如果您需要的不是字符串,而是版本对象(例如,用于将已安装版本与当前可用版本进行比较),只需将字符串转换为版本对象,如下所示:
[version](Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Notepad++").DisplayVersion