You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PowerShell的.Where()方法中使用变量存储的闭包

PowerShell 优化Autodesk卸载键筛选:.Where()方法闭包变量展开问题

问题说明

我有一个从注册表卸载键派生的哈希表泛型列表$rawUninstallKeys,每个列表成员是包含指定键的有序字典(结构示例见下文)。由于Autodesk的卸载键存在重复数据且仅一个有效,需要通过多条件筛选出正确的卸载字符串。当前用foreach循环实现的效率极低,计划改用.Where()方法借助.NET优化性能,但遇到了问题:无法将闭包存入变量后让$_正确展开。闭包的应用场景包括检查属性是否存在、不存在,或属性值匹配(含通配符),尝试用ExpandString的方式解决但无效。

有序字典结构示例

[Ordered]@{
        displayName = 'DisplayName'
        displayVersion = 'DisplayVersion'
        installSource = 'InstallSource'
        publisher = 'Publisher'
        quietUninstallString = 'QuietUninstallString'
        uninstallParam = 'UninstallParam'
        uninstallPath = 'UninstallPath'
        uninstallString = 'UninstallString'
        installDate = 'InstallDate'
        keyID = '$keyID'
        keyName = '$keyName'
        keyGUID = '$keyGUID'
        keyPath = '$keyPath'
        architecture = '$architecture'
    } 

.Where()方法有效用法示例

$rawUninstallKeys.Where({$_.publisher -like "Autodesk*"})

无效的尝试写法

.Where({$($ExecutionContext.InvokeCommand.ExpandString($closure))})

内容的提问来源于stack exchange,提问作者Gordon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 23:29:50