我可以以机器可读的格式导出已安装软件包的列表吗?

时间:2016-09-08 03:45:25

标签: powershell nuget nuget-package chocolatey

我看到获得已安装的巧克力软件包列表的唯一方法是使用“choco version all”输出如下内容:

You have SourceTree v1.9.1.1 installed. Version 1.9.6.1 is available based on your source(s).

You have sysinternals v2016.07.04 installed. Version 2016.08.29 is available based on your source(s).

Chocolatey can upgrade 5/9 packages. 0 packages failed.
 See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

Can upgrade:
 - 7zip.install v16.02.0.20160811
 - chocolatey v0.10.0
 - sourcetree v1.9.6.1
 - 7zip v16.02.0.20160811
 - sysinternals v2016.08.29

对于交互式控制台输出很好,但是为了解析以创建报告,它很糟糕。有什么方法可以用xml或json或某种标准格式获取这些信息,而不必自己解析上面的内容吗?

1 个答案:

答案 0 :(得分:6)

几乎所有巧克力命令都使用-r, --limitoutput, --limit-output开关,这意味着:

  

将输出限制为基本信息

有关可用的切换的详细信息,请参阅此page

通过执行choco version all -r,您将获得更加可解析的输出。例如:

7zip|9.22.01.20130618|16.02.0.20160811|false
7zip.commandline|16.02|16.02.0.20160811|false
7zip.install|9.22.01.20130618|16.02.0.20160811|false
Atom|0.174.1|1.0.7|false
autohotkey.portable|1.1.22.01|1.1.24.01|false
BingDesktop|1.3.463.0|1.3.463.0|false
Boxstarter|2.4.209|2.8.29|false

但是,您询问的是导出“已安装”软件包列表的命令。

choco list -lo -r

该命令记录为choco list --local-only在大约一秒钟内运行choco list -lo -r时输出看起来像这样:

7zip|9.22.01.20130618
7zip.commandline|16.02
7zip.install|9.22.01.20130618
Atom|0.174.1
autohotkey.portable|1.1.22.01
BingDesktop|1.3.463.0
Boxstarter|2.4.209
Boxstarter.Common|2.4.209
cake.portable|0.15.2
calibre|2.48.0
ccleaner|5.19.5633
chocolatey|0.10.0
chocolatey.extension|1.4.1
ChocolateyGUI|0.14.0-unstable0002
ChocolateyPackageUpdater|0.6.11.0