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

PowerShell中Where-Object的-replace无法生效问题求助

解决PowerShell字符串替换不生效的问题

问题根源

你用 Where-Object 是用来筛选对象的,它只会判断条件返回布尔值,不会修改对象的属性。你写的代码只是计算出了替换后的字符串,但根本没把这个值赋回给对象的 Creator 属性,所以排序时还是用原来的带z的字符串,自然看不到变化。

正确实现方案

方案1:永久修改对象属性

用 ForEach-Object 遍历对象,把替换后的值重新赋值给 Creator 属性,之后再排序:

# 假设$yourData是你的对象集合
$yourData | ForEach-Object {
    $_.Creator = $_.Creator -replace 'zNo Creator Found','No Creator Found'
} | Sort-Object Creator

方案2:排序时临时替换(不修改原对象)

如果不想改动原数据,直接在排序逻辑里使用替换后的字符串:

$yourData | Sort-Object { $_.Creator -replace 'zNo Creator Found','No Creator Found' }

注意事项

  • -replace 是返回新字符串的操作,不会自动修改原对象的属性,必须手动赋值才会生效。
  • Where-Object 仅用于过滤对象,不要用它来做属性修改操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:15:09