powershell 将主机读入范围运算符

powershell read-host into 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

这有可能吗,至少有一个读取输入进入范围运算符?

Read-Host 我认为只能读取字符串。

如果你想让他们输入一个列表,你可以让他们用逗号或space分隔输入。

例如

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

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