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

请教这段PowerShell链接过滤脚本的详细工作原理

解析这段PowerShell脚本的工作机制

先把脚本贴出来:

$FILE = $GET_HTML.Links | Select-Object @{Label='href';Expression={@{$true=$_.href}[$_.href.EndsWith('win64.exe')]}} | Select-Object -ExpandProperty href

下面拆解每一步的逻辑:

  • 第一步:提取页面所有链接
    $GET_HTML.Links 这里的$GET_HTML应该是通过Invoke-WebRequest之类的命令获取到的网页对象,.Links属性会把页面里所有<a>标签的链接提取成一个集合。

  • 第二步:用哈希表筛选符合条件的链接
    这部分是脚本的核心,Select-Object搭配了一个计算属性(哈希表定义):

    • Label='href' 指定输出的属性名称为href;
    • Expression里的逻辑分两部分:
      1. @{$true=$_.href} 创建一个只有一个键值对的哈希表:键是布尔值$true,值是当前链接的具体地址($_.href);
      2. [$_.href.EndsWith('win64.exe')] 用这个布尔判断结果作为哈希表的索引:如果当前链接以win64.exe结尾,判断结果是$true,哈希表会返回对应的值(也就是这个链接地址);如果判断结果是$false,哈希表里没有$false这个键,就返回$null。
  • 第三步:展开属性并过滤空值
    Select-Object -ExpandProperty href 会把上一步输出的对象中的href属性展开,同时自动过滤掉值为$null的条目,最终$FILE变量里就只保留了所有以win64.exe结尾的链接地址。

另外补充:这种写法属于技巧性的过滤方式,和更直观的写法效果完全一致,比如等价的可读性更强的写法:

$FILE = $GET_HTML.Links | Where-Object { $_.href.EndsWith('win64.exe') } | Select-Object -ExpandProperty href

内容的提问来源于stack exchange,提问作者Mr. 13

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:45:10