PowerShell Where-Object $ _ .name -like -in $ list

时间:2015-06-16 16:35:02

标签: powershell

我是PowerShell的新手,遇到了一些障碍。我试图从多个服务器中提取程序名称和版本信息。

我有一个$ list变量中的程序名列表,但程序名也包含其中的版本号。我只是在没有版本号的列表变量中存储程序的名称。

我试图找出一种方法,将-like和-in参数与Where-Object cmdlet一起使用,以便将完整的程序条目名称(例如AdToUserCacheSync 1.10.1.10)与我在$ list变量(例如AdToUserCacheSync)。

我该怎么做?

class WelcomeController < ApplicationController
  def download
    view_context.content_for(:title, "My Awesome Title") # doesn't work :( 
  end
end

2 个答案:

答案 0 :(得分:4)

Where-Object FilterScript块只是一个返回$true$false或什么都没有的脚本块 - 你可以在其中做各种疯狂的事情,包括在数组上循环以查看是否其中一个条目中存在通配符匹配:

Where-Object {
    $ProductName = $_.Name
    $_.pscomputername -like "940*" -and (
        $list | ForEach-Object {
            if($ProductName -like "*$_*"){ return $true }
        }
    )
}

答案 1 :(得分:0)

我通过PowerShell找到了Adobe版本:

Get-WmiObject -Class Win32_Product -ComputerName 127.0.0.1 |
Select-Object -Property PSComputerName, Name, Version |
Where-Object {$_.Name -like "Adobe*"} | Out-File Adobe_Log.log