首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell Where-Object $_.name -like -in $list

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

Stack Overflow用户
提问于 2015-06-17 00:35:02
回答 2查看 29.8K关注 0票数 3

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

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

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

我该怎么做呢?

代码语言:javascript
复制
$list = Get-Content "\\server\c$\temp\list.txt"
$storeTestServers = Get-Content "\\server\c$\temp\testStores.txt"

foreach ($server in $storeTestServers) {

    Get-WmiObject -Class Win32_Product -ComputerName $server |
    Select-Object -Property PSComputerName, Name, Version |
    Where-Object {$_.pscomputername -like "940*" -and $_.name -like -in "*$list*"}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-17 01:03:05

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

代码语言:javascript
复制
Where-Object {
    $ProductName = $_.Name
    $_.pscomputername -like "940*" -and (
        $list | ForEach-Object {
            if($ProductName -like "*$_*"){ return $true }
        }
    )
}
票数 5
EN

Stack Overflow用户

发布于 2018-12-22 15:32:04

我通过PowerShell找到了Adobe版本:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30873309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档