要找到Java版本,我运行以下命令。
它同时返回Java 8和Java自动更新程序。我想单独获得Java版本。我无法对版本进行硬编码,因为在某些机器中可能会出现不同的版本。
Get-CimInstance -ClassName CIM_Product -Filter "Name like '%java%'"
Name Caption Vendor Version IdentifyingNumber
---- ------- ------ ------- -----------------
Java 8 Update... Java 8 Update 171 Oracle Corporation 8.0.1710.11 {26A56AE4-039D-4CA4-87B4-2F3218...
Java Auto Upd... Java Auto Updater Oracle Corporation 2.8.171.11 {4A03863F-666A-4037-7777-5F2748...
如何通过过滤器获取Java版本?
答案 0 :(得分:1)
只需获取结果的第一项,然后选择Version
属性:
(Get-CimInstance -ClassName CIM_Product -Filter "Name like '%java%'" | Select-Object -ExpandProperty Version)[0]
要获得相同的输出,但要扩展“过滤器”而不是处理数组中的位置(由@Adam Parsons显示):
Get-CimInstance -ClassName CIM_Product -Filter "Name LIKE '%Java%' AND NOT Name LIKE '%Auto%'" | Select-Object -ExpandProperty Version
答案 1 :(得分:1)
您将需要增加过滤器的特异性。我们可以做到这一点的一种方法是排除名称类似于“ Auto”的所有内容,因为任何Java RE安装程序中都不会包含“ Auto”一词,而Auto Updater却包含“ Auto”一词。
像这样:
Get-CimInstance -ClassName CIM_Product -Filter "Name LIKE '%Java%' AND NOT Name LIKE '%Auto%'"
通过在过滤器中使用AND
,可以向过滤器添加另一个条件。要反转LIKE
条件(不像),请以NOT
开始条件,然后在其后添加条件-Name LIKE '%x%'
这应该给出您要寻找的结果,您可以在其中使用PowerShell对象,并且只有该结果集中所需的项目。