2016-03-24 11 views
0

Iveは文字列を取り込むpowershell関数を作成しました。イムは、文字列のparamの文字数が4以上であることを検証しようと、私はPARAMをチェックするたびしかし、カウントは常に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

... '? –

答えて

0

[string]::を助言することができ、文字列の静的メソッドを呼び出すことを意味しますが、$prefix.Lengthですそのような方法ではありません。

これは動作します:

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

validation attributesを使用して機能を書き換える考えてみましょう:

あなただけ `{($ prefix.Length -lt 4)場合は使用しないのはなぜ
function DeleteSitesWithPrefix 
{ 
    Param(
     [Parameter(Mandatory = $true)] 
     [ValidateScript({$_.Length -ge 4})] 
     [ValidateNotNullOrEmpty()] 
     [string]$Prefix 
    ) 

    # Do stuff... 
} 
+0

null/emptyの値は(文字列)の長さが0であるため、 'ValidateNotNullOrEmpty()'は冗長です。 –

関連する問題