【发布时间】:2021-07-01 12:35:56
【问题描述】:
我运行以下命令并没有收到任何回报 - 我查看了 reg 并验证了显示名称是否存在。知道我做错了什么吗?
$OfficeYearsToLookFor = @(
'2010',
'2013',
'2016',
'2019')
$status = (Get-ItemProperty 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*' |
Where-Object {(($_.DisplayName -contains 'Office') -and ($_.DisplayName -contains 'Microsoft') -and ( $OfficeYearsToLookFor -contains $_.DisplayName )) } |
Select-Object DisplayName, DisplayVersion, UninstallString )
$status
Write-Output "Status: $status"
【问题讨论】:
-
这不是 -contains 所做的,它只匹配整个字符串。这是一个常见的混淆点。
-
当我使用 -like 'Office' (Office 之前和之后的星号)时仍然没有结果 - 我尝试了所有类别,甚至作为一个没有快乐的单曲。
-
你确定你有
Where-Object displayname -like '*office*'吗?尝试删除其他过滤器以确保它是正确的。例如,对于 O365 安装,显示名称为Office 16 Click-to-Run -
谢谢!我希望解决的最后一件事是写入输出之前的 $status 。没有变化 - 所以我发布了 - 现在当我按照你的建议做 - 它有效!如果我删除最后一个 $status - 不高兴!感谢您的帮助!
标签: powershell powershell-3.0 powershell-remoting