gpt4 book ai didi

powershell - ValueFromPipeline 行为?

转载 作者:行者123 更新时间:2023-12-04 01:47:34 28 4
gpt4 key购买 nike

我有一个命令 Get-Testdata从不同来源检索测试数据并将这些数据存储到 PSObject以不同的值作为属性。然后将对象总数存储为数组,以便于操作、排序、计算等。

我的问题是我希望能够将这些数据显示为(颜色编码的)HTML,为此我编写了另一个命令,Show-TestResults .输入参数看起来像这样

[Parameter(Mandatory=$true,Position=0,ValueFromPipeline=$true)]
[PSObject[]]$InputObject

更新 1

这个函数本身很基础,只是简单的为 ConvertTo-HTML设置了一些参数然后将对象通过管道传输到该命令中:
$head = "<style>[...]" #styling with javascript etc
$header = "<H1>Test Results</H1>
$title = "Test results"
$InputObject | ConvertTo-HTML -head $head -body $header -title $title | Out-File $Filename

结束更新 1

但是,当我尝试使用 ValueFromPipeline 时属性,使用调用
Get-Testdata [...] | Show-TestResults 

只显示数组中的第一个对象。但是如果我改为调用命令
$td = Get-Testdata [...]
Show-TestResults $td

正如预期的那样,显示了整个数组。有人可以解释一下-并希望指导我纠正它吗?

最佳答案

您可能在结束块中处理数据,而不是处理块。

看一个例子:

function getdata {
1
2
3
4
}
function show-data {
param(
[Parameter(mandatory=$true, ValueFromPipeline=$true)]$InputObject,
[Parameter(mandatory=$true)]$FileName
)

# this is process block that is probably missing in your code
begin { $objects = @() }
process { $objects += $InputObject }
end {
$head = "<style></style>"
$header = "<H1>Test Results</H1>"
$title = "Test results"
$objects | ConvertTo-HTML -head $head -body $header -title $title | Out-File $Filename
}
}

getdata | show-data -file d:\temp\test.html

关于powershell - ValueFromPipeline 行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9328777/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com