Powershell 如何在Where对象中使用函数

Powershell 如何在Where对象中使用函数,powershell,Powershell,我想按属性“innerText”筛选对象列表。但是我需要做一些准备。 为什么furhter代码不起作用?它返回所有对象 function enc[[string]$inp] { return [System.Text.Encoding]::GetEncoding("windows-1251").GetString([System.Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes($inp)) } $req.Links | Where-

我想按属性“innerText”筛选对象列表。但是我需要做一些准备。 为什么furhter代码不起作用?它返回所有对象

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
我做错了什么? 不幸的是,我没有在网上找到必要的文章。
有很多这样的例子:($).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"}

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

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

Powershell函数(和cmdlet)必须以
动词-名词
的形式命名。请看。除非您这样做,否则您会发现在某些情况下,它会用警告填充您的输出。只有在您提供模块的情况下,所有命令都遵循相同的标准,并且很容易找到。对于脚本中的简单函数等,您可以随意调用它(尽量避免使用已使用的名称)。@FrodeF谢谢。我会记下来的。我最近开始学习powershell。powershell函数(和cmdlet)必须以
动词名词的形式命名。请看。除非您这样做,否则您会发现在某些情况下,它会用警告填充您的输出。只有在您提供模块的情况下,所有命令都遵循相同的标准,并且很容易找到。对于脚本中的简单函数等,您可以随意调用它(尽量避免使用已使用的名称)。@FrodeF谢谢。我会记下来的。我最近开始学习powershell。我建议添加括号-
$(enc$\innerText)-eq“my string”
以防止未定义的行为或
函数enc([string]$inp){…}
太棒了!谢谢函数的定义是可以的,但不是我的
enc($\u0.innerText)
,而是你的
(enc$\u0.innerText)
。像@filimonic noticedI suggets一样,添加括号-
$(enc$\.innerText)-eq“my string”
以防止未定义的行为或
函数enc([string]$inp){…}
太棒了!谢谢函数的定义是可以的,但不是我的
enc($\u0.innerText)
,而是你的
(enc$\u0.innerText)
。比如@filimonic