如何在 Where-Object 中使用函数

How to use function in Where-Object

我想按 属性 "innerText" 筛选对象列表。但我需要做一些准备。 为什么进一步的代码不起作用?它returns 所有对象。

function enc[[string]$inp]
{
    return [System.Text.Encoding]::GetEncoding("windows-1251").GetString([System.Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($inp))
}

$req.Links | Where-Object { enc($_.innerText) -eq "my string"} | fl

我做错了什么? 不幸的是,我没有在 Internet 上找到必要的文章。 有很多这样的例子:($_.Name -eq "name") - 对我来说没有任何价值。

我认为问题在于您如何定义函数。

function enc
{
    param ([string]$inp)

    return [System.Text.Encoding]::GetEncoding("windows-1251").GetString([System.Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($inp))
}

$req.Links | Where-Object { (enc $_.innerText) -eq "my string"} | fl

简单测试:

$a = "hello","world"
function enc
{
    param ([string]$inp)
    $inp
}

$a | Where-Object { (enc $_) -eq "hello"}