Tạo Nhà cung cấp thuộc tính Windows PowerShell
Chủ đề này mô tả cách tạo nhà cung cấp cho phép người dùng thao tác các thuộc tính của các mục trong kho dữ liệu. Do đó, loại nhà cung cấp này được gọi là nhà cung cấp thuộc tính Windows PowerShell. Ví dụ: nhà cung cấp sổ đăng ký do Windows PowerShell cung cấp sẽ xử lý các giá trị khóa đăng ký dưới dạng thuộc tính của mục khóa đăng ký. Loại nhà cung cấp này phải thêm giao diện System.Manager.Automation.Provider.Ipropertycmdletprovider để triển khai lớp .NET.
Ghi chú
Windows PowerShell cung cấp tệp mẫu mà bạn có thể sử dụng để phát triển nhà cung cấp Windows PowerShell. Tệp templateProvider.cs có sẵn trên Bộ công cụ phát triển phần mềm Microsoft Windows dành cho các thành phần thời gian chạy Windows Vista và .NET Framework 3.0. Để biết hướng dẫn tải xuống, hãy xem Cách cài đặt Windows PowerShell và Tải xuống Windows PowerShell SDK. Mẫu đã tải xuống có sẵn trong thư mục
Thận trọng
Các phương thức của nhà cung cấp thuộc tính của bạn sẽ ghi bất kỳ đối tượng nào bằng phương thức System.management.Automation.Provider.Cmdletprovider.Writepropertyobject*.
Xác định nhà cung cấp Windows PowerShell
Nhà cung cấp thuộc tính phải tạo một lớp .NET hỗ trợ giao diện System.management.Automation.Provider.Ipropertycmdletprovider. Đây là khai báo lớp mặc định từ tệp templateProvider.cs do Windows PowerShell cung cấp.
Xác định chức năng cơ bản
Giao diện System.management.Automation.Provider.Ipropertycmdletprovider có thể được đính kèm với bất kỳ lớp cơ sở nào của nhà cung cấp, ngoại trừ lớp System.Manager.Automation.Provider.Drivecmdletprovider. Thêm chức năng cơ bản được yêu cầu bởi lớp cơ sở bạn đang sử dụng. Để biết thêm thông tin về các lớp cơ sở, hãy xem Thiết kế nhà cung cấp Windows PowerShell của bạn.
Truy xuất thuộc tính
Để truy xuất các thuộc tính, nhà cung cấp phải triển khai phương thức System.Manager.Automation.Provider.Ipropertycmdletprovider.Getproperty* để hỗ trợ các lệnh gọi từ lệnh ghép ngắn Get-ItemProperty. Phương thức này truy xuất các thuộc tính của mục nằm ở đường dẫn nội bộ của nhà cung cấp đã chỉ định (đủ điều kiện).
Tham số providerSpecificPickList cho biết thuộc tính nào cần truy xuất. Nếu tham số này là null hoặc trống thì phương thức sẽ truy xuất tất cả các thuộc tính. Ngoài ra, System.management.Automation.Provider.Ipropertycmdletprovider.Getproperty* ghi một phiên bản của đối tượng System.management.Automation.PSObject đại diện cho một túi thuộc tính của các thuộc tính được truy xuất. Phương thức này sẽ không trả về gì cả.
Chúng tôi khuyên bạn nên triển khai System.management.Automation.Provider.Ipropertycmdletprovider.Getproperty* hỗ trợ việc mở rộng ký tự đại diện của tên thuộc tính cho từng thành phần trong danh sách chọn. Để thực hiện việc này, hãy sử dụng lớp System.management.Automation.Wildcardpotype để thực hiện khớp mẫu ký tự đại diện.
Đây là cách triển khai mặc định của System.management.Automation.Provider.Ipropertycmdletprovider.Getproperty* từ tệp templateProvider.cs do Windows PowerShell cung cấp.
Những điều cần nhớ khi triển khai GetProperty
Các điều kiện sau đây có thể áp dụng cho việc triển khai System.management.Automation.Provider.Ipropertycmdletprovider.Getproperty* của bạn:
Khi xác định lớp nhà cung cấp, nhà cung cấp thuộc tính Windows PowerShell có thể khai báo các khả năng của nhà cung cấp về ExpandWildcards, Filter, Bao gồm hoặc Loại trừ, khỏi bảng liệt kê System.Manager.Automation.Provider.Providercapabilities. Trong những trường hợp này, việc triển khai phương thức System.management.Automation.Provider.Ipropertycmdletprovider.Getproperty* cần đảm bảo rằng đường dẫn được truyền đến phương thức đáp ứng các yêu cầu về khả năng đã chỉ định. Để thực hiện việc này, phương thức phải truy cập vào thuộc tính thích hợp, ví dụ: các thuộc tính System.Man Management.Automation.Provider.Cmdletprovider.Exclude* và System.Manager.Automation.Provider.Cmdletprovider.Include*.
Theo mặc định, phần ghi đè của phương thức này sẽ không truy xuất trình đọc cho các đối tượng bị ẩn khỏi người dùng trừ khi thuộc tính System.management.Automation.Provider.Cmdletprovider.Force* được đặt thành
true. Sẽ xảy ra lỗi nếu đường dẫn đại diện cho một mục bị ẩn khỏi người dùng và System.management.Automation.Provider.Cmdletprovider.Force* được đặt thànhfalse.
Đính kèm các tham số động vào lệnh ghép ngắn Get-ItemProperty
Lệnh ghép ngắn Get-ItemProperty có thể yêu cầu các tham số bổ sung được chỉ định động khi chạy. Để cung cấp các tham số động này, nhà cung cấp thuộc tính Windows PowerShell phải triển khai phương thức System.management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters*. Tham số path biểu thị đường dẫn nội bộ của nhà cung cấp đủ điều kiện, trong khi tham số providerSpecificPickList chỉ định các thuộc tính dành riêng cho nhà cung cấp được nhập trên dòng lệnh. Tham số này có thể là null hoặc trống nếu các thuộc tính được dẫn vào lệnh ghép ngắn. Trong trường hợp này, phương thức này trả về một đối tượng có các thuộc tính và trường có thuộc tính phân tích cú pháp tương tự như một lớp lệnh ghép ngắn hoặc một đối tượng System.Man Management.Automation.Runtimedparameterdictionary. Thời gian chạy Windows PowerShell sử dụng đối tượng được trả về để thêm các tham số vào lệnh ghép ngắn.
Đây là cách triển khai mặc định của System.management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* từ tệp templateProvider.cs do Windows PowerShell cung cấp.
Đặt thuộc tính
Để đặt thuộc tính, nhà cung cấp thuộc tính Windows PowerShell phải triển khai phương thức System.management.Automation.Provider.Ipropertycmdletprovider.Setproperty* để hỗ trợ lệnh gọi từ lệnh ghép ngắn Set-ItemProperty. Phương thức này đặt một hoặc nhiều thuộc tính của mục tại đường dẫn đã chỉ định và ghi đè các thuộc tính được cung cấp theo yêu cầu. System.management.Automation.Provider.Ipropertycmdletprovider.Setproperty* cũng ghi một phiên bản của đối tượng System.management.Automation.PSObject đại diện cho một túi thuộc tính của các thuộc tính được cập nhật.
Đây là cách triển khai mặc định của System.management.Automation.Provider.Ipropertycmdletprovider.Setproperty* từ tệp templateProvider.cs do Windows PowerShell cung cấp.
Những điều cần nhớ khi triển khai Set-ItemProperty
Các điều kiện sau đây có thể áp dụng cho việc triển khai System.management.Automation.Provider.Ipropertycmdletprovider.Setproperty*:
Khi xác định lớp nhà cung cấp, nhà cung cấp thuộc tính Windows PowerShell có thể khai báo các khả năng của nhà cung cấp về ExpandWildcards, Filter, Bao gồm hoặc Loại trừ, khỏi bảng liệt kê System.Manager.Automation.Provider.Providercapabilities. Trong những trường hợp này, việc triển khai phương thức System.management.Automation.Provider.Ipropertycmdletprovider.Setproperty* phải đảm bảo rằng đường dẫn được chuyển đến phương thức đáp ứng các yêu cầu về khả năng đã chỉ định. Để thực hiện việc này, phương thức phải truy cập vào thuộc tính thích hợp, ví dụ: các thuộc tính System.Man Management.Automation.Provider.Cmdletprovider.Exclude* và System.Manager.Automation.Provider.Cmdletprovider.Include*.
Theo mặc định, phần ghi đè của phương thức này sẽ không truy xuất trình đọc cho các đối tượng bị ẩn khỏi người dùng trừ khi thuộc tính System.management.Automation.Provider.Cmdletprovider.Force* được đặt thành
true. Sẽ xảy ra lỗi nếu đường dẫn đại diện cho một mục bị ẩn khỏi người dùng và System.management.Automation.Provider.Cmdletprovider.Force* được đặt thànhfalse.Việc triển khai phương thức System.Manager.Automation.Provider.Ipropertycmdletprovider.Setproperty* của bạn phải gọi System.Manager.Automation.Provider.Cmdletprovider.ShouldProcess và xác minh giá trị trả về của nó trước khi thực hiện bất kỳ thay đổi nào đối với kho dữ liệu. Phương pháp này được sử dụng để xác nhận việc thực hiện một thao tác khi có thay đổi về trạng thái hệ thống, ví dụ: đổi tên tệp. System.management.Automation.Provider.Cmdletprovider.ShouldProcess gửi tên của tài nguyên cần thay đổi cho người dùng, cùng với thời gian chạy Windows PowerShell và xử lý mọi cài đặt dòng lệnh hoặc biến tùy chọn trong việc xác định nội dung nào sẽ được hiển thị.
Sau cuộc gọi đến System.Manager.Automation.Provider.Cmdletprovider.ShouldProcess trả về
true, nếu có thể thực hiện các sửa đổi hệ thống nguy hiểm tiềm ẩn, thì phương thức System.Manager.Automation.Provider.Ipropertycmdletprovider.Setproperty* sẽ gọi phương thức System.management.Automation.Provider.Cmdletprovider.ShouldContinue. Phương pháp này sẽ gửi một thông báo xác nhận tới người dùng để cho phép phản hồi bổ sung cho biết rằng hoạt động này nên được tiếp tục.
Đính kèm các tham số động cho lệnh ghép ngắn Set-ItemProperty
Lệnh ghép ngắn Set-ItemProperty có thể yêu cầu các tham số bổ sung được chỉ định động khi chạy. Để cung cấp các tham số động này, nhà cung cấp thuộc tính Windows PowerShell phải triển khai phương thức System.management.Automation.Provider.Ipropertycmdletprovider.Setpropertydynamicparameters*. Phương thức này trả về một đối tượng có các thuộc tính và trường có thuộc tính phân tích cú pháp tương tự như một lớp lệnh ghép ngắn hoặc một đối tượng System.Man Management.Automation.Runtimedparameterdictionary. Giá trị null có thể được trả về nếu không thêm tham số động nào.
Đây là cách triển khai mặc định của System.management.Automation.Provider.Ipropertycmdletprovider.Getpropertydynamicparameters* từ tệp templateProvider.cs do Windows PowerShell cung cấp.
Xóa thuộc tính
Để xóa các thuộc tính, nhà cung cấp thuộc tính Windows PowerShell phải triển khai phương thức System.management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* để hỗ trợ lệnh gọi từ lệnh ghép ngắn Clear-ItemProperty. Phương thức này đặt một hoặc nhiều thuộc tính cho mục nằm ở đường dẫn đã chỉ định.
Đây là cách triển khai mặc định của System.management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* từ tệp templateProvider.cs do Windows PowerShell cung cấp.
Điều cần nhớ khi triển khai ClearProperty
Các điều kiện sau đây có thể áp dụng cho việc triển khai System.management.Automation.Provider.Ipropertycmdletprovider.Clearproperty* của bạn:
Khi xác định lớp nhà cung cấp, nhà cung cấp thuộc tính Windows PowerShell có thể khai báo các khả năng của nhà cung cấp về ExpandWildcards, Filter, Bao gồm hoặc Loại trừ, khỏi bảng liệt kê System.Manager.Automation.Provider.Providercapabilities. Trong những trường hợp này, việc triển khai phương thức System.Manager.Automation.Provider.Ipropertycmdletprovider.Clearproperty* cần đảm bảo rằng đường dẫn được chuyển đến phương thức đáp ứng các yêu cầu về khả năng đã chỉ định. Để thực hiện việc này, phương thức phải truy cập vào thuộc tính thích hợp, ví dụ: các thuộc tính System.Man Management.Automation.Provider.Cmdletprovider.Exclude* và System.Manager.Automation.Provider.Cmdletprovider.Include*.
Theo mặc định, phần ghi đè của phương thức này sẽ không truy xuất trình đọc cho các đối tượng bị ẩn khỏi người dùng trừ khi thuộc tính System.management.Automation.Provider.Cmdletprovider.Force* được đặt thành
true. Sẽ xảy ra lỗi nếu đường dẫn đại diện cho một mục bị ẩn khỏi người dùng và System.management.Automation.Provider.Cmdletprovider.Force* được đặt thànhfalse.Việc triển khai phương thức System.Manager.Automation.Provider.Ipropertycmdletprovider.Clearproperty* của bạn phải gọi System.Manager.Automation.Provider.Cmdletprovider.ShouldProcess và xác minh giá trị trả về của nó trước khi thực hiện bất kỳ thay đổi nào đối với kho dữ liệu. Phương pháp này được sử dụng để xác nhận việc thực hiện một thao tác trước khi thực hiện thay đổi đối với trạng thái hệ thống, chẳng hạn như xóa nội dung. System.management.Automation.Provider.Cmdletprovider.ShouldProcess gửi tên của tài nguyên cần thay đổi cho người dùng, với thời gian chạy Windows PowerShell có tính đến mọi cài đặt dòng lệnh hoặc biến tùy chọn khi xác định nội dung nào sẽ được hiển thị.
Sau cuộc gọi đến System.Manager.Automation.Provider.Cmdletprovider.ShouldProcess trả về
true, nếu có thể thực hiện các sửa đổi hệ thống nguy hiểm tiềm ẩn, thì phương thức System.Manager.Automation.Provider.Ipropertycmdletprovider.Clearproperty* sẽ gọi phương thức System.management.Automation.Provider.Cmdletprovider.ShouldContinue. Phương pháp này gửi thông báo xác nhận tới người dùng để cho phép phản hồi bổ sung nhằm chỉ ra rằng hoạt động nguy hiểm tiềm tàng cần được tiếp tục.
Đính kèm các tham số động vào lệnh ghép ngắn Clear-ItemProperty
Lệnh ghép ngắn Clear-ItemProperty có thể yêu cầu các tham số bổ sung được chỉ định động khi chạy. Để cung cấp các tham số động này, nhà cung cấp thuộc tính Windows PowerShell phải triển khai phương thức System.management.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters*. Phương thức này trả về một đối tượng có các thuộc tính và trường có thuộc tính phân tích cú pháp tương tự như một lớp lệnh ghép ngắn hoặc một đối tượng System.Man Management.Automation.Runtimedparameterdictionary. Giá trị null có thể được trả về nếu không thêm tham số động nào.
Đây là cách triển khai mặc định của System.Manager.Automation.Provider.Ipropertycmdletprovider.Clearpropertydynamicparameters* từ tệp templateProvider.cs do Windows PowerShell cung cấp.
Xây dựng nhà cung cấp Windows PowerShell
Xem Cách đăng ký lệnh ghép ngắn, nhà cung cấp và ứng dụng máy chủ.
Xem thêm
Nhà cung cấp Windows PowerShell
Thiết kế nhà cung cấp Windows PowerShell của bạn
Mở rộng các loại đối tượng và định dạng
Cách đăng ký lệnh ghép ngắn, nhà cung cấp và ứng dụng máy chủ