2016-08-30 7 views
0

ドライブのサイズを入力するようにユーザーに要求する機能を作成しようとしていますが、ドライブサイズが100を超えている場合は、再度入力するようにユーザーに依頼します。私のスクリプトは、単にユーザ入力ここ50より大きい問題

が私のスクリプトであっても、「100ギガバイトその後、多くを求めることはできません」と言って続けて

param (
     [string]$MaxC = "100" 
) 

function cDrive { 

    $C_DiskGB = Read-Host "C: Drive - Disk Size in GB" 
     if ($C_DiskGB -gt $MaxC) { 

       Write-Host "Cannot ask for more then 100gb of disk space. Please re-enter how much disk space you need for the c: drive" 
       cDrive 

      } 
     else { 

      Write-Host "C: Drive is $C_DiskGB GB" 

      } 

} 

私はあまり何かを置く出力は次のとおりです。 C:ドライブ - ディスクGB単位のサイズ:50 100GB以上のディスク容量を要求できません。 c:ドライブに必要なディスク容量をもう一度入力してください C:ドライブ - ディスクサイズ(GB単位):

何か助けていただければ幸いです。ありがとう!

+3

私が考える問題である、あなたは整数と文字列を比較していることを、してみてください([INT] $ C_DiskGB -gt $ MAXC) –

答えて

1

文字列を比較していることから、数値を比較したいということから始めましょう。変数を数値([int])として定義すると、問題が解決されます。

第2に、あなたは範囲を超えています。恐ろしいことではありませんが、簡単に回避できる場合はお勧めできません。ここで私は示唆しているものです:

function cDrive { 
Param([int]$MaxC = 100) 
    [int]$C_DiskGB = Read-Host "C: Drive - Disk Size in GB" 
    While($C_DiskGB -gt $MaxC){ 
     [int]$C_DiskGB = Read-Host "Cannot ask for more then $MaxC`gb of disk space. Please re-enter how much disk space you need for the c: drive" 
    } 
    Write-Host "C: Drive is $C_DiskGB GB" 
} 
+0

働いていたことが、あなたに感謝した場合! –

関連する問題