14

जैसी चीज़ों के लिए - क्या है, हमारे पास [सीएमडीलेट बाइंडिंग] विशेषता द्वारा हमें $ PSCmdlet.ShouldProcess() दिया गया है। क्या सामान्य कमांड लाइन तर्कों को लागू करने के लिए ऐसे अन्य टूल्स या प्रथाएं हैं जैसे-वेर्बोस, -डेबग, -पसथ्रू इत्यादि?पावरहेल: मानक स्विच कैसे कार्यान्वित करें?

उत्तर

14

Write-Debug और Write-Verbose-Debug और -Verbose मापदंडों स्वचालित रूप से संभाल।

-PassThru तकनीकी रूप से एक आम पैरामीटर नहीं है, लेकिन आप इसे पसंद को लागू कर सकते हैं:

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

1..10|PassTest -PassThru 

और यह एक cmdlet पर अपने कार्य के passthru मूल्य का उपयोग करने का एक उदाहरण है:

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 

Have अधिक जानकारी के लिए Get-Help about_CommonParameters पर एक नज़र डालें।

+0

मुझे लगता है कि आप इनपुट वैरिएबल को स्टोर करना चाहते हैं, तो कुछ करें तो अंत में संग्रहीत चर को passthru करें (अगर $ passthru)। – Matt

+2

हां, 'पासटेस्ट' एक उपयोगी कार्य नहीं है; यह दिखाने के लिए केवल एक मामूली उदाहरण है कि '-पसथ्रू' को कैसे कार्यान्वित किया जा सकता है। इसके अलावा, यह भी संभव है कि आप इनपुट वैरिएबल के साथ कुछ कर सकें, लेकिन मूल मूल्य अपरिवर्तित (पूर्व '$ _। Kill(); अगर ($ PassThru) {$ _}')। मैंने दूसरे आदेश के PassThru को सेट करने के लिए PassThru पैरामीटर का उपयोग करने का एक गैर-परीक्षण उदाहरण जोड़ा है। – Rynant

संबंधित मुद्दे