【发布时间】:2018-03-08 19:04:38
【问题描述】:
只是看看是否有人可以让我克服这个障碍..尝试了很多东西并且几乎拥有它,但通配符不匹配。我有 2 个阵列会变得很多。一些值在它们旁边有 *,因为我正在使用 like 运算符 - 如果循环遍历单个数组 btw ,所有这些都可以工作
单独循环的第一部分将按原样写出:
值1 值2 值3 值4
第二部分也是这样写的
值1 值2 值3 值4
因为循环,他们一起写成这样。
value1 value2 value3 value1 value2 value3 value4 value4
问题是,即使 $_ 在 $.DisplayName -like $ 下面的上下文中使用时正在注册值,它也永远不会返回匹配项,我也尝试过 $.DisplayName -像“$” 如何让通配符在多阵列中工作?它在单个数组中工作,但即使我看到在多数组中返回的值它也不会只传递到实际命令的写入主机?
不知道我错过了什么。
$DisplayApps = @("value1", "*Value2*", "*value3*")
$Apps = @("Value4")
$MasterApps = @($DisplayApps,$Apps)
ForEach ($item in $masterapps)
{
Write-host $item
ForEach ($item in $item)
{ Write-Host $item
$AppVer = Get-ChildItem -Path $Path1 | Get-ItemProperty | Where-Object { $_.DisplayName -like $item }
If($AppVer){ Write-Host "YES $item" }
}
}
【问题讨论】:
-
首先不要在 foreach 循环中使用 $_。 $_ 是保留的变量名。使用非保留名称。
-
将所有 $_ 更改为 $var 仍然没有成功
-
@LDStewart EBGreen 的意思是您需要将
$_更改为$item,因为您已为变量命名。如果您正在执行Foreach-Object,您将使用$_ -
上面的所有 $_ 实例现在都是 $item 除了 $_.DisplayName 并且仍然找不到类似的匹配项
-
"ForEach ($item in $item)" 这没有意义。
标签: powershell multidimensional-array