2016-06-29 18 views
0

私は、範囲演算子形式で数値を入力できる読み取りホストを持つ変数を持つ方法を見つけようとしています。powershell read-host to range operator

は、私は基本的に含むことになり、次の

$domain=Domain.Host  
$Servers = Read-Host "What servers do you want to check?" #this is where a user would input @(1..10) 
$CompleteServer = $Servers$Domain 
Get-Service -ComputerName $CompleteServer -Name "Service Name" 

だから、$ CompleteServerをやりたい

01.domain.host

02.domain.host

...

10.domain.host

これはすべて可能ですか?読み取り入力が範囲演算子に入ることさえありますか?

答えて

1

あなたが使用することができます。例

$input = Read-Host 'enter input, separated by commas' 
$inputList = $input -split ',' 

または

$input = Read-Host 'enter input, separated by space' 
$inputList = $input -split ' ' 

ユーザーは改行またはスタッフと入力し、あなたがそれらをしたいかもしれない長い文字列を入力する必要がある場合

については

Invoke-Expressionですが、入力の妥当性を確認するのに注意してください:

$UserInput = 
Read-Host 'Enter a number range (eg. 1..5)' 

If ($UserInput -match '^\d+\.\.\d+$') 
    { $NumberRange = Invoke-Expression $UserInput } 
    Else { Write-Host 'Input not in correct format.' } 

$NumberRange 

Enter a number range (eg. 1..5): 2..6 
2 
3 
4 
5 
6 
+0

これはちょうどほぼ完璧です。ありがとうございました ! – JonnyBoy

0

Read-Hostは文字列を読み取るだけと思います。

リストを入力する場合は、カンマまたはスペースで入力を区切らせることができます。

$inputList = @() 
Write-Host 'enter your input, when you finish one item, press enter, if you finish all the items, enter "END" and press enter' 
$input = Read-Host 'enter the input' 
while(input -nq 'END') { 
    $inputs.Add(input) 
    $input = Read-Host 'enter the input' 
} 
+0

ありがとうございました。はい、私はそれがそういうものになるのではないかと心配しました。しかし、私はまだ完全にリードホストは文字列を受け入れることを確信していません。次の操作を行います。 PS C:\ユーザー> [INT] $ INT2 =読み取りホストを "INTを入力し、" 書き込みホスト$ INT2 がintを入力します。NotanInt は "可能System.Int32" と入力した値 "NotanInt" を変換できません。 。エラー:「入力文字列が正しい形式ではありませんでした。 – JonnyBoy

+0

あなたは常にstringをintにキャストできますが、それはread-hostの戻り値がintであることを意味しません。 – chantisnake

+0

参考資料はhttps://technet.microsoft.com/en-us/library/hh849945.aspxです。出力セクションが表示された場合、それは文字列または安全な文字列です。 – chantisnake