Trả lời

14

Write-DebugWrite-Verbose tự động xử lý các thông số -Debug-Verbose.

-PassThru không phải là về mặt kỹ thuật một tham số chung, nhưng bạn có thể thực hiện nó thích:

function PassTest { 
    param(
     [switch] $PassThru 
    ) 
    process { 
     if($PassThru) {$_} 
    } 
} 

1..10|PassTest -PassThru 

Và đây là một ví dụ của việc sử dụng giá trị passthru của chức năng của bạn trên một lệnh:

function Add-ScriptProperty { 
    param(
     [string] $Name, 
     [ScriptBlock] $Value, 
     [switch] $PassThru 
    ) 
    process{ 
     # Use ":" to explicitly set the value on a switch parameter 
     $_| Add-Member -MemberType ScriptProperty -Name $Name -Value $Value ` 
      -PassThru:$PassThru 
    } 
} 

$calc = Start-Process calc -PassThru| 
     Add-ScriptProperty -Name SecondsOld ` 
      -Value {((Get-Date)-$this.StartTime).TotalSeconds} -PassThru 
sleep 5 
$calc.SecondsOld 

Có hãy xem Get-Help about_CommonParameters để biết thêm thông tin.

+0

Tôi nghĩ rằng bạn có thể muốn lưu biến đầu vào, làm điều gì đó sau đó passthru biến được lưu trữ ở cuối (nếu $ passthru). – Matt

+2

Có, 'PassTest' không phải là một chức năng hữu ích; chỉ là một ví dụ nhỏ để minh họa cách '-PassThru' có thể được thực hiện. Ngoài ra, bạn cũng có thể làm điều gì đó với biến đầu vào, nhưng passthru giá trị ban đầu không đổi (ví dụ: '$ _. Kill(); if ($ PassThru) {$ _}'). Tôi đã thêm một ví dụ không trival của việc sử dụng tham số PassThru để thiết lập PassThru của một lệnh khác. – Rynant

Các vấn đề liên quan