Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

advanced function (script cmdlets) robuste Parameterbehandlung/verarbeitung von pipeline-unterstützenden Parametern

$
0
0

Hallo zusammen,

gibt es ein Best Practice, wie die Parameterbehandlung in einer advanced function mit process block erfolgen soll, so dass der pipeline-unterstützende Parameter unabhängig von der Inputvariante (direct vs. pipeline) gleich behandelt/verarbeitet wird?

Die übliche Variante der Aufnahme von "foreach ($inp in $inputObject) { Do something with $_ } " erzeugt unterschiedliches Verhalten, wenn z.B. ein Array von Arrays als direct bzw. pipeline Input übergeben wird. Dazu folgendes Beispiel:

Set-StrictMode -Version Latest

$inp_array = @(("1","2"),("3","4"))
Test-InputHandling $inp_array # direct call
$inp_array | Test-InputHandling # pipeline call

function Test-InputHandling
{
  [CmdletBinding()]
  param(
    [Parameter(ValueFromPipeline=$TRUE)]
    [string[]] $inputObject = "default"
    )

    begin
    {
        $callLine = (Get-PSCallStack)[0].InvocationInfo.Line
        write-output "--- Function call: $callLine ---"
        $n = 0 # counter for objects passed to process block
    }

    process
    {
        write-output "in process block..."
        $inputObject | ForEach-Object { $_ }
        $n++
    }

    end
    {
        Write-Host "-> Input received as $n item(s)"
    }

}

Das Ergebnis unterscheidet sich je nach Aufrufvariante direct vs. pipeline.

Vielen Dank schon mal vorab


Viewing all articles
Browse latest Browse all 2314

Latest Images

Trending Articles


Wangine WPA 120


Petar Radenkovic-Aufkleber der Giasinga Buam (2016)


AUDI A6 4F 2.0 Tdi ruckelt extrem und bringt keine Leistung


DDR Eigenheim Typ EW42 EW51 EW58


Hilfe mit Ersatzteilfindung im Motorraum


Passat B8 springt nicht an


Unified Runtime startet nicht


VW Passat GTE 2020 komplett tot? Hilfe!


Opel Astra J BJ 09 Motorleistung reduziert


Aprilia RS 125 Getriebeöl wechseln?