Powershell 如何从函数参数轻松创建PSObject以将结果返回到管道?
目前我是这样做的:Powershell 如何从函数参数轻松创建PSObject以将结果返回到管道?,powershell,parameter-passing,pipeline,psobject,Powershell,Parameter Passing,Pipeline,Psobject,目前我是这样做的: function Invoke-Service { Param( [parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)] [int] $Id, [parameter(Mandatory=$true, ValueFromPi
function Invoke-Service
{
Param(
[parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[int] $Id,
[parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[string] $Name,
[parameter(Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[int] $Age
)
DoSomeWork |
New-Object PSObject -Property @{ Id = $Id; Name = $Name; Age = $Age }
}
此函数可以直接或从Import Csv
output或select
output获取其参数
但我经常希望继续使用PSObject
的所有功能进行管道处理:
Import-Csv -Path "data.csv" |
Invoke-Service |
... #
我的问题是:我是否需要调用
newobject
枚举所有参数,或者是否有我遗漏的关键字或其他技术?使用$PSBoundParameters
变量:
New-Object psobject -Property $PSBoundParameters
$PSBoundParameters
是一个自动变量,它包含一个哈希表,每个命名参数有一个条目,使用完整的参数名作为键,参数参数参数作为值,因此在您的示例中,它已经与您试图传递的输入100%对齐使用$PSBoundParameters
变量:
New-Object psobject -Property $PSBoundParameters
$PSBoundParameters
是一个自动变量,它包含一个哈希表,每个命名参数有一个条目,使用完整的参数名作为键,参数参数参数作为值,因此在您的示例中,它已经与您试图传递的输入100%对齐不仅适用于管道中的参数(如果有人怀疑)。太好了!不仅适用于管道中的参数(如果有人怀疑)。太好了!