2012-10-01 5 views
8

Tôi có C# PowerShell Cmdlet tùy chỉnh (kế thừa từ lớp cơ sở Cmdlet) và tôi muốn có thể xác định tham số "-Verbose" được chỉ định khi chạy Cmdlet . Tôi nhận ra rằng WriteVerbose sẽ xuất ra khi tham số -Verbose được chỉ định, nhưng tôi muốn thực sự làm một số mã khác khi -Xác định được xác định (nghĩa là không xuất ra các giá trị Console.Write khi -Xác định được chỉ định).Trong Custom C# PowerShell Cmdlet Xác định If -Verbose Đã được chỉ định

Cảm ơn,

John

Trả lời

7

Kiểm tra thông số ràng buộc của cmdlet như vậy:

if (this.MyInvocation.BoundParameters.ContainsKey("Verbose")) 
{ 
} 
+0

MyInvocation không phải là thành viên của đối tượng "this" (Cmdlet). Lớp kế thừa từ System.Management.Automation.Cmdlet. –

+0

Có lý do nào để không kế thừa từ PSCmdlet không? –

+1

Bạn phải thừa kế từ PSCmdlet để nhận được các tham số bị ràng buộc. Cũng lưu ý rằng Verbose sẽ nằm trong các tham số bị ràng buộc ngay cả khi nó đã được chỉ định là -Verbose: false, vì vậy lý tưởng bạn cũng cần kiểm tra giá trị của tham số. – StephenD

0

Sau nhiều đào về, công trình này cho tôi. Visual Studio 2013, Powershell 3.0 Lệnh ghép ngắn C# bằng cách sử dụng không gian tên PsCmdlet. nhập module. \ Mytest.dll, sau đó mytest -verbose

blnVerbose = this.MyInvocation.Line.ToLower().Contains("-verbose"); 
0

Nếu bạn đang sử dụng lắp ráp Microsoft.PowerShell.5.ReferenceAssemblies tham khảo các thông số Verbose được bao gồm trong lớp Cmdlet cơ sở. Bạn có thể sử dụng WriteVerbose() để viết khi chuyển đổi được bao gồm. Không cần phải tự mình xử lý nữa.