2012-05-10 23 views
8

Tham chiếu this liên kết, tôi đang cố giới thiệu chế độ tiết trong tập lệnh của mình.Powershell: Xác định công tắc Verbose trong hàm

Khi tôi có một hàm được định nghĩa như thế này -

function TestVerbose 
{ 
    param(
     [switch]$verbose, 
     [Parameter(Mandatory = $True)] 
     $p1 
    ) 

    if($verbose) 
    { 
    Write-Verbose "Verbose Mode" 
    } 
} 

Get-Help TestVerbose 

tôi nhận được lỗi sau -

Get-Help : A parameter with the name 'Verbose' was defined multiple times for the command. At line:12 char:9 + Get-Help <<<< TestVerbose + CategoryInfo : MetadataError: (:) [Get-Help], MetadataException + FullyQualifiedErrorId : ParameterNameAlreadyExistsForCommand,Microsoft.PowerShell.Commands.GetHelpCommand

NHƯNG, nếu tôi xác định các chức năng như thế này [loại bỏ các thuộc tính bắt buộc tham số ], nó hoạt động tốt

function TestVerbose 
{ 
    param(
     [switch]$verbose, 
     $p1 
    ) 
    if($verbose) 
    { 
    Write-Verbose "Verbose Mode" 
    }  
} 

Get-Help TestVerbose 

Bất kỳ i dea tại sao một hành vi như vậy? Tôi muốn giữ công tắc bắt buộc và muốn người dùng để thực hiện chức năng của mình như thế này -

TestVerbose -verbose

Trả lời

16

Có vẻ bạn đang sử dụng PoweShell v2, trong đó Verbose (cùng với debug, WhatIF, vv) được dành riêng và chức năng của họ tự động cung cấp cho bạn. Thay vì viết công tắc phát hiện 'tiết' của riêng bạn, chức năng đã có sẵn. Trong trường hợp verbose bạn không cần phải xác định nó trong khai báo tham số, các tham số khác thích whatif yêu cầu synatax đặc biệt.

C:\Users\james> function testverbose{ 
>>  param(
>>   [Parameter(Mandatory = $True)] 
>>   $bar 
>> ) 
>> 
>>  Write-Verbose "VERBOSE!" 
>>  $bar 
>> } 
>> 
C:\Users\james> testverbose -bar "woot" 
woot 
C:\Users\james> testverbose -bar "woot" -Verbose 
VERBOSE: VERBOSE! 
woot 
+0

Cảm ơn! Không biết điều này. Có, tôi đang sử dụng V2. –

+1

Tôi vẫn muốn có thể kiểm tra xem công tắc -Khoa có được kích hoạt hay không. Tôi tìm thấy câu trả lời của mình trong [câu hỏi này] (http://stackoverflow.com/questions/24446680/is-it-possible-to-check-if-verbose-argument-was-given-in-powershell). –

Các vấn đề liên quan