2016-03-24 6 views
0

Ive создал функцию powershell, которая принимает строку. Im пытается проверить, что граф символ из строки паров составляет более 4, однако всякий раз, когда я проверяю параметры счетчик всегда 1. Может кто-нибудь посоветоватьпроверка ввода функции powershell

function DeleteSitesWithPrefix($prefix){ 

    if([string]::IsNullOrEmpty($prefix)){ 
     Write-Host "Please provide the name of the csv file to use" 
     return 
    } 

    if([string]::$prefix.Length -lt 4){ 
     Write-Host "Please provide a prefix of 4 or more digits" 
     return 
    } 
+1

Почему вы не просто использовать 'если ($ prefix.Length -lt 4) {... '? –

ответ

0

[string]:: означает вызов статического метода строки, но $prefix.Length является не такой метод.

это будет работать:

if($prefix.Length -lt 4){ 
    Write-Host "Please provide a prefix of 4 or more digits" 
    return 
} 
3

Рассмотрим переписав свою функцию с помощью validation attributes:

function DeleteSitesWithPrefix 
{ 
    Param(
     [Parameter(Mandatory = $true)] 
     [ValidateScript({$_.Length -ge 4})] 
     [ValidateNotNullOrEmpty()] 
     [string]$Prefix 
    ) 

    # Do stuff... 
} 
+0

'ValidateNotNullOrEmpty()' избыточно, поскольку значения null/empty имеют длину (string) 0. –

Смежные вопросы