powershell读取主机进入范围运算符

时间:2016-06-29 01:06:08

标签: powershell powershell-remoting

我正在尝试找到一种方法来拥有一个具有读取主机的变量,您可以在其中输入范围运算符格式的数字。

我基本上想要做以下

$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

这是否可能,至少有一个读取输入进入范围操作符?

2 个答案:

答案 0 :(得分:1)

您可以使用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

答案 1 :(得分:0)

我认为

Read-Host只会读取字符串。

如果您希望他们输入列表,您可以让他们用逗号或空格分隔输入。

例如

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

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

如果用户需要输入长字符串,您可能希望他们输入换行符或其他内容:

$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'
}