Tôi thường xuyên sử dụng [cmdletbinding()]
trong các chức năng hoặc tập lệnh của mình nhưng luôn tìm thấy công cụ này bí truyền, có thể một số bạn có thể chia sẻ ánh sáng của họ.
Theo get-help about_Functions_CmdletBindingAttribute[cmdletbinding()] là gì và nó hoạt động như thế nào?
Thuộc tính CmdletBinding là một thuộc tính của các chức năng mà làm cho chúng hoạt động như cmdlet biên soạn
nhưng chúng ta có thể sử dụng nó trên đầu trang của các kịch bản của chúng tôi, chức năng là những gì trong này trường hợp? một hàm "main" ngầm bên trong được gọi bởi động cơ ps cho tất cả các đầu vào của nó?
về cú pháp bây giờ:
[CmdletBinding(ConfirmImpact=<String>,
DefaultParameterSetName=<String>,
HelpURI=<URI>,
SupportsPaging=<Boolean>,
SupportsShouldProcess=<Boolean>,
PositionalBinding=<Boolean>)]
những gì chúng ta đang làm gì vậy? khởi tạo một đối tượng cmdlbinding và đưa ra một danh sách đối số cho hàm tạo của nó? cú pháp này có thể được tìm thấy trong param(), ví dụ [Parameter(ValueFromPipeline=$true)]
cú pháp này có một tên cụ thể và nó có thể được tìm thấy ở nơi khác?
cuối cùng, chúng ta có thể, như các đại lý quyền hạn đơn giản, để bắt chước chức năng này và sửa đổi hành vi của tập lệnh bằng cách đặt thuộc tính?
Tôi đoán tài liệu được chút gây hiểu lầm ở đây: tất cả điều này có liên quan đến bất kỳ loại khối kịch bản : như Shay đã đề cập - được đặt tên theo tên hàm, theo đường dẫn (tập lệnh) nhưng * cũng * chưa được đặt tên, ví dụ: '& {[CmdletBinding()] param() Write-Verbose 'Foo'} -Verbose' hoạt động giống như một nhà vô địch. – BartekB
@BartekB cảm ơn ok cho phần đầu tiên của câu hỏi. –