ค้นหาเว็บไซต์

เกี่ยวกับฟังก์ชัน CmdletBindingAttribute


คำอธิบายสั้น ๆ

อธิบายแอตทริบิวต์ที่ทำให้ฟังก์ชันทำงานเหมือนกับ cmdlet ที่คอมไพล์แล้ว

คำอธิบายยาว

แอตทริบิวต์ CmdletBinding เป็นแอตทริบิวต์ของฟังก์ชันที่ทำให้ทำงานเหมือนกับ cmdlet ที่คอมไพล์แล้วที่เขียนด้วย C# ให้การเข้าถึงคุณลักษณะของ cmdlets

เมื่อคุณใช้แอตทริบิวต์ CmdletBinding PowerShell จะเพิ่มพารามิเตอร์ทั่วไปโดยอัตโนมัติ คุณไม่สามารถสร้างพารามิเตอร์ใดๆ ที่ใช้ชื่อเดียวกันกับพารามิเตอร์ทั่วไปได้ สำหรับข้อมูลเพิ่มเติม โปรดดู about_CommonParameters

PowerShell ผูกพารามิเตอร์ของฟังก์ชันที่มีแอตทริบิวต์ CmdletBinding ในลักษณะเดียวกับที่ผูกพารามิเตอร์ของ cmdlets ที่คอมไพล์แล้ว ตัวแปรอัตโนมัติ $PSCmdlet พร้อมใช้งานสำหรับฟังก์ชันที่มีแอตทริบิวต์ CmdletBinding แต่ไม่มีตัวแปร $Args

ในฟังก์ชันที่มีแอตทริบิวต์ CmdletBinding พารามิเตอร์ที่ไม่รู้จักและอาร์กิวเมนต์ตำแหน่งที่ไม่มีพารามิเตอร์ตำแหน่งที่ตรงกันทำให้การรวมพารามิเตอร์ล้มเหลว

บันทึก

cmdlet ของคอมไพล์ใช้แอตทริบิวต์ Cmdlet ที่จำเป็น ซึ่งคล้ายกับแอตทริบิวต์ CmdletBinding ที่อธิบายไว้ในหัวข้อนี้

ไวยากรณ์

ตัวอย่างต่อไปนี้แสดงรูปแบบของฟังก์ชันที่ระบุอาร์กิวเมนต์ทางเลือกทั้งหมดของแอตทริบิวต์ CmdletBinding คำอธิบายโดยย่อของแต่ละอาร์กิวเมนต์เป็นไปตามตัวอย่างนี้

{
    [CmdletBinding(ConfirmImpact=<String>,
    DefaultParameterSetName=<String>,
    HelpURI=<URI>,
    SupportsPaging=<Boolean>,
    SupportsShouldProcess=<Boolean>,
    PositionalBinding=<Boolean>)]

    Param ($Parameter1)
    Begin{}
    Process{}
    End{}
}

ประเภทอาร์กิวเมนต์บูลีนของแอตทริบิวต์ CmdletBinding มีค่าเริ่มต้นเป็น False เมื่อละเว้นจากแอตทริบิวต์ CmdletBinding ตั้งค่าอาร์กิวเมนต์เป็น $true หรือเพียงแสดงรายการอาร์กิวเมนต์ตามชื่อ ตัวอย่างเช่น แอตทริบิวต์ CmdletBinding ต่อไปนี้เทียบเท่ากัน

{
    [CmdletBinding(SupportsPaging=$true)]

    Param ($Parameter1)
    Begin{}
    Process{}
    End{}
}

# Boolean arguments can be defined using this shorthand syntax

{
    [CmdletBinding(SupportsPaging)]

    Param ($Parameter1)
    Begin{}
    Process{}
    End{}
}

ConfirmImpact

อาร์กิวเมนต์ ConfirmImpact ระบุว่าเมื่อใดควรยืนยันการทำงานของฟังก์ชันโดยการเรียกเมธอด ShouldProcess การเรียกใช้เมธอด ShouldProcess จะแสดงพร้อมท์การยืนยันเฉพาะเมื่ออาร์กิวเมนต์ ConfirmImpact เท่ากับหรือมากกว่าค่าของตัวแปรการตั้งค่า $ConfirmPreference . (ค่าเริ่มต้นของอาร์กิวเมนต์คือ ปานกลาง) ระบุอาร์กิวเมนต์นี้เฉพาะเมื่อมีการระบุอาร์กิวเมนต์ SupportsShouldProcess ด้วย

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำขอยืนยัน โปรดดูที่การขอการยืนยัน

DefaultParameterSetName

อาร์กิวเมนต์ DefaultParameterSetName ระบุชื่อของชุดพารามิเตอร์ที่ PowerShell จะพยายามใช้เมื่อไม่สามารถระบุได้ว่าจะใช้ชุดพารามิเตอร์ใด คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยการกำหนดให้พารามิเตอร์เฉพาะของแต่ละพารามิเตอร์ตั้งค่าพารามิเตอร์บังคับ

ช่วยเหลือURI

อาร์กิวเมนต์ HelpURI ระบุที่อยู่อินเทอร์เน็ตของหัวข้อวิธีใช้เวอร์ชันออนไลน์ที่อธิบายฟังก์ชัน ค่าของอาร์กิวเมนต์ HelpURI ต้องขึ้นต้นด้วย "http" หรือ "https"

ค่าอาร์กิวเมนต์ HelpURI ใช้สำหรับค่าของคุณสมบัติ HelpURI ของออบเจ็กต์ CommandInfo ที่ Get-Command ส่งคืน สำหรับฟังก์ชั่น

อย่างไรก็ตาม เมื่อมีการติดตั้งไฟล์วิธีใช้บนคอมพิวเตอร์และค่าของลิงก์แรกในส่วน RelatedLinks ของไฟล์วิธีใช้คือ URI หรือค่าของ .Link คำสั่งในความช่วยเหลือตามความคิดเห็นคือ URI โดย URI ในไฟล์วิธีใช้จะถูกใช้เป็นค่าของคุณสมบัติ HelpUri ของฟังก์ชัน

Get-Help cmdlet ใช้ค่าของคุณสมบัติ HelpURI เพื่อค้นหาเวอร์ชันออนไลน์ของหัวข้อวิธีใช้ฟังก์ชันเมื่อพารามิเตอร์ Online ของ Get-Help ถูกระบุในคำสั่ง

SupportsPaging

อาร์กิวเมนต์ SupportsPaging จะเพิ่มพารามิเตอร์ First, Skip และ IncludeTotalCount ให้กับฟังก์ชัน พารามิเตอร์เหล่านี้อนุญาตให้ผู้ใช้เลือกเอาต์พุตจากชุดผลลัพธ์ที่มีขนาดใหญ่มาก อาร์กิวเมนต์นี้ออกแบบมาสำหรับ cmdlet และฟังก์ชันที่ส่งคืนข้อมูลจากที่เก็บข้อมูลขนาดใหญ่ที่รองรับการเลือกข้อมูล เช่น ฐานข้อมูล SQL

อาร์กิวเมนต์นี้ถูกนำมาใช้ใน Windows PowerShell 3.0

  • อันดับแรก: รับเฉพาะวัตถุ 'n' ตัวแรกเท่านั้น
  • ข้าม: ละเว้นวัตถุ 'n' แรกแล้วรับวัตถุที่เหลือ
  • IncludeTotalCount: รายงานจำนวนออบเจ็กต์ในชุดข้อมูล (จำนวนเต็ม) ตามด้วยออบเจ็กต์ หาก cmdlet ไม่สามารถระบุจำนวนรวมได้ ระบบจะส่งกลับ "จำนวนรวมที่ไม่รู้จัก"

PowerShell ประกอบด้วย NewTotalCount ซึ่งเป็นวิธีการช่วยเหลือที่รับค่าการนับรวมที่จะส่งคืน และรวมถึงการประมาณความแม่นยำของค่าการนับทั้งหมด

ฟังก์ชันตัวอย่างต่อไปนี้แสดงวิธีการเพิ่มการสนับสนุนสำหรับพารามิเตอร์การเพจให้กับฟังก์ชันขั้นสูง

function Get-Numbers {
    [CmdletBinding(SupportsPaging)]
    param()

    $FirstNumber = [Math]::Min($PSCmdlet.PagingParameters.Skip, 100)
    $LastNumber = [Math]::Min($PSCmdlet.PagingParameters.First +
      $FirstNumber - 1, 100)

    if ($PSCmdlet.PagingParameters.IncludeTotalCount) {
        $TotalCountAccuracy = 1.0
        $TotalCount = $PSCmdlet.PagingParameters.NewTotalCount(100,
          $TotalCountAccuracy)
        Write-Output $TotalCount
    }
    $FirstNumber .. $LastNumber | Write-Output
}

รองรับกระบวนการควร

อาร์กิวเมนต์ SupportsShouldProcess เพิ่มพารามิเตอร์ ยืนยัน และ WhatIf ให้กับฟังก์ชัน พารามิเตอร์ ยืนยัน จะแจ้งให้ผู้ใช้ก่อนที่จะรันคำสั่งกับแต่ละออบเจ็กต์ในไปป์ไลน์ พารามิเตอร์ WhatIf แสดงรายการการเปลี่ยนแปลงที่คำสั่งจะทำ แทนที่จะเรียกใช้คำสั่ง

PositionalBinding

อาร์กิวเมนต์ PositionalBinding กำหนดว่าพารามิเตอร์ในฟังก์ชันมีตำแหน่งตามค่าเริ่มต้นหรือไม่ ค่าเริ่มต้นคือ $True คุณสามารถใช้อาร์กิวเมนต์ PositionalBinding ที่มีค่า $False เพื่อปิดใช้งานการเชื่อมโยงตำแหน่ง

อาร์กิวเมนต์ PositionalBinding ถูกนำมาใช้ใน Windows PowerShell 3.0

เมื่อพารามิเตอร์อยู่ในตำแหน่ง ชื่อพารามิเตอร์จะเป็นทางเลือก PowerShell เชื่อมโยงค่าพารามิเตอร์ที่ไม่มีชื่อกับพารามิเตอร์ฟังก์ชันตามลำดับหรือตำแหน่งของค่าพารามิเตอร์ที่ไม่มีชื่อในคำสั่งฟังก์ชัน

เมื่อพารามิเตอร์ไม่อยู่ในตำแหน่ง (เป็น "ชื่อ") จำเป็นต้องมีชื่อพารามิเตอร์ (หรือตัวย่อหรือนามแฝงของชื่อ) ในคำสั่ง

เมื่อ PositionalBinding เป็น $True พารามิเตอร์ฟังก์ชันจะมีตำแหน่งตามค่าเริ่มต้น PowerShell กำหนดหมายเลขตำแหน่งให้กับพารามิเตอร์ตามลำดับที่ประกาศไว้ในฟังก์ชัน

เมื่อ PositionalBinding เป็น $False พารามิเตอร์ฟังก์ชันจะไม่ถูกกำหนดตำแหน่งตามค่าเริ่มต้น เว้นแต่จะมีการประกาศอาร์กิวเมนต์ ตำแหน่ง ของแอตทริบิวต์ พารามิเตอร์ บนพารามิเตอร์ ชื่อพารามิเตอร์ (หรือนามแฝงหรือตัวย่อ) จะต้องรวมไว้ด้วยเมื่อใช้พารามิเตอร์ในฟังก์ชัน

อาร์กิวเมนต์ ตำแหน่ง ของแอตทริบิวต์ พารามิเตอร์ จะมีความสำคัญเหนือกว่าค่าเริ่มต้น PositionalBinding คุณสามารถใช้อาร์กิวเมนต์ ตำแหน่ง เพื่อระบุค่าตำแหน่งสำหรับพารามิเตอร์ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับอาร์กิวเมนต์ ตำแหน่ง โปรดดู about_Functions_Advanced_Parameters

หมายเหตุ

อาร์กิวเมนต์ SupportsTransactions ไม่ได้รับการสนับสนุนในฟังก์ชันขั้นสูง

คำหลัก

about_Functions_CmdletBinding_Attribute

ดูเพิ่มเติม

  • about_Functions
  • about_Functions_ขั้นสูง
  • about_Functions_Advanced_Methods
  • about_Functions_Advanced_Parameters
  • about_Functions_OutputTypeAttribute

บทความที่เกี่ยวข้อง