如何在Where-Object中使用函数

时间:2015-01-31 09:55:11

标签: powershell

我希望按属性" innerText"过滤对象列表。但我需要做一些准备工作。 为什么代码不起作用?它返回所有对象。

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

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

1 个答案:

答案 0 :(得分:4)

我认为问题在于你如何定义你的功能。

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"}