如何在 PowerShell 中像对象一样处理表格内容?

我想像对象一样处理我的函数的表格格式输出,即行 [2] 列 'Action' 应该像 $r[2].Action 一样可寻址。我怎样才能做到这一点?

我尝试使用 powershellgallery 中的“ConvertFrom-SourceTable”,但这没有用。我宁愿有一个没有额外安装的简单解决方案。

Function Get-NetFirewallRulesByPort {

    Param ( [Parameter(Mandatory=$true)]
            [ValidateRange(1,65535)]
            [int] $port )

    Get-NetFirewallRule | 
        where { ($_ | Get-NetFirewallPortFilter).LocalPort -eq ${port} } |
        select Enabled, Action, Direction, DisplayName | ft -AutoSize

}

# usage:
$r = (Get-NetFirewallRulesByPort 443)
$r

# required:
Write-Host $r[2].Action
Write-Host $r[1].DisplayName
# etc. ...

回答

因此,| ft -AutoSize在您的函数中,您强制它输出仅用于显示目的而格式化的收集数据

稍后尝试对其进行解码以使其再次成为对象数组绝对不是要走的路。

| ft -AutoSize从函数中删除,以便您的变量 $r 将接收一组对象

如果必须,请$r以多种方式使用该变量显示结果:

$r | Format-Table -AutoSize

或者

$r | Out-GridView

通过将其保留为对象,您现在可以做您想做的事情,例如$r[2].Action(当然,前提是您至少返回了 3 个对象..)


以上是如何在 PowerShell 中像对象一样处理表格内容?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>