Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何从函数参数轻松创建PSObject以将结果返回到管道?_Powershell_Parameter Passing_Pipeline_Psobject - Fatal编程技术网

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%对齐

不仅适用于管道中的参数(如果有人怀疑)。太好了!不仅适用于管道中的参数(如果有人怀疑)。太好了!