powershell 파이프라인 개체가 작동하도록

powershell 파이프라인 개체가 작동하도록

내가하려는 일에 대한 스텁은 다음과 같습니다.

function Set-test {
[CmdletBinding()]
    param(
        [Parameter(Mandatory=$True,
               ValueFromPipeline=$True)]
        [object[]]$inputObject
    )
    Write-Verbose "Set-test: input obj= $inputObject" 

    PROCESS {
        foreach ($obj in $inputobject) {
            Write-Output $obj
        }
    }   
}

function Get-test {
    $obj = New-Object PSObject
    $obj | Add-Member -MemberType NoteProperty -Name "swName" -Value "banana"
    $obj | Add-Member -MemberType NoteProperty -Name "Version" -Value "3.2.2"
    Write-Output "obj = $obj"
    $obj | Set-test -verbose    
}

출력은 다음과 같습니다.

PS > Get-test
obj = @{swName=banana; Version=3.2.2}
VERBOSE: Set-test: input obj= 
Get-Process : Cannot evaluate parameter 'Name' because its argument is  specified as a script block and there is no input. A script block cannot be evaluated without input.
At C:\Users\username\Documents\WindowsPowerShell\Modules\mytool\mytools.psm1:204 char:13
+     PROCESS {
+             ~
+ CategoryInfo          : MetadataError: (:) [Get-Process], ParameterBindingException
+ FullyQualifiedErrorId : ScriptBlockArgumentNoInput,Microsoft.PowerShell.Commands.GetProcessCommand

자세한 출력에서 ​​볼 수 있듯이 개체가 함수로 파이프되지 않는 것으로 나타나 당황스럽습니다.

답변1

start{}, process{} 또는 end{} 블록 외부의 set-test에서는 자세한 쓰기 기능을 사용할 수 없습니다. 일을 엉망으로 만들고 있어요. 프로세스 블록 내부로 옮기면{} 잘 작동합니다.

관련 정보