作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 PowerShell 的新手,遇到了一些障碍。我正在尝试从多个服务器中提取程序名称和版本信息。
我在 $list 变量中有一个程序名称列表,但程序名称中还包含版本号。我只是将程序名称存储在没有版本号的列表变量中。
我正在尝试找出一种将 -like 和 -in 参数与 Where-Object 一起使用的方法cmdlet,以便将完整的程序条目名称(例如 AdToUserCacheSync 1.10.1.10)与我在 $list 变量中的条目(例如 AdToUserCacheSync)相匹配。
我该怎么做?
$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*"}
}
最佳答案
Where-Object
FilterScript block 只是一个返回 $true
、$false
或什么都不返回的脚本 block - 您可以执行各种操作它里面有一些疯狂的东西,包括遍历数组以查看其中一个条目中是否存在通配符匹配项:
Where-Object {
$ProductName = $_.Name
$_.pscomputername -like "940*" -and (
$list | ForEach-Object {
if($ProductName -like "*$_*"){ return $true }
}
)
}
关于PowerShell Where-Object $_.name -like -in $list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30873309/
我是一名优秀的程序员,十分优秀!