Windows命令行更新软件
winget:用命令行更新你的软件
虽然微软近些年开始逐步开放了自己的应用商店,开始允许传统的 win32 软件通过 Microsoft Store 进行软件分发,但相比海量的 Windows 软件,上架 Microsoft Store 的应用依旧少数。那么该如何管理这些第三方的 Windows 软件呢?
或许是从 Linux 发行版的软件包管理上找到了灵感,也或许是 macOS 的第三方包管理器 homebrew 给出的启发,微软也同样祭出了其基于命令行的软件包管理工具:winget,当然相比于 homebrew 和其他 Windows 平台类似的包管理工具,winget 的优势在于这个是微软自己推出的包管理工具,因此管理和使用上自然有着得天独厚的优势。
而使用上其实也非常简单,其基本语法上和很多桌面系统的包管理工具类似,首先打开你的 Windows 终端,如果想要查找某一款软件是否在软件源中,可以输入:
winget search <appname>

如果找到了类似名字的软件就会在终端中返回结果,如果想要安装这个软件,就可以选择复制软件的 ID(在命令行中使用鼠标选中软件 ID 然后点击鼠标右键就可以复制),然后输入:
winget install <appname>
如果软件需要管理员权限才能安装,这时候会弹出 UAE 对话框选择允许即可。软件安装完成之后会在终端返回软件安装状态。如果想要知道某一款软件的详细信息,那么可以输入下面的这个命令:
winget show <appname>

那么电脑上到底安装了多少软件呢?这里可以使用下面的这个命令将软件列出来。
winget list

习惯使用 winget 来进行 Windows 上应用程序的管理还有一个好处,你可以进行统一的软件更新而无需再手动到软件主页下载安装,比如当你需要对安装到系统中所有的软件包检查是否有更新时,就只需要输入:
winget upgrade

稍等片刻就会列出当前系统下可以更新的软件包列表,包括软件 ID 、版本、可用(升级版本)以及软件源,如果想要升级其中的一款软件,那么只需要输入:
winget upgrade <appname>
winget upgrade --all #升级所有可以升级的包
当然 winget 还有很多有趣且实用的命令,你可以输入:winget --help 来查找命令,有了这样的工具,你在管理安装在本地的软件会更加得心应手。
用终端命令检查系统更新
相比于 Linux 系统可以通过包管理系统实现系统更新升级,在 Windows 上就不那么方便快捷了,不过随着 PowerShell 的进化,现在也可以直接使用命令行来执行系统级别安全更新。
不过这个方案首先需要安装一个第三方的 PowerShell Module——Windows Update module for Windows Powershell(模块地址),这里我们先在在 Windows 开始徽标上点击鼠标右键,在快捷菜单中打开终端管理员,然后输入如下命令来安装这个名为「Windows Update module for Windows Powershell」的模块:
Install-Module PSWindowsUpdate

根据步骤确认后,我们就可以使用如下命令来连接 Windows Update 并检查是否有系统安全更新了:
Get-WindowsUpdate

如果有相应的系统更新,则可以直接执行下面这个命令来进行安装:
Install-WindowsUpdate

如果你想要查看当前计算机已经安装的更新的详细信息,比如说更新标题、描述、HotFixID、安装日期等,可以输入下面这个命令:
wmic qfe list