我正在尝试找到一种方法来拥有一个具有读取主机的变量,您可以在其中输入范围运算符格式的数字。
我基本上想要做以下
$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
这是否可能,至少有一个读取输入进入范围操作符?
答案 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'
}