尝试做这样的事情:
$BaseCompName = ProdServer-
$CompNameSuffix = 1..45
$ServerName = "$BaseCompName" + "$CompNameSuffix"
这个想法是生成一个列表 - 在RAM,TXT文件或CSV文件中 - 看起来像
ProdServer-1
ProdServer-2
ProdServer-3
...
ProdServer-45
从该列表中,我会使用ForEach
或其类似内容通过Test-Connection
或类似内容对其进行ping操作,然后将该数据添加到文件或我们的任何内容中当时处理数据。
我不确定如何构建它。我已经看到人们使用范围运算符来ping一堆IP的例子但是,每当我试图拼凑一些东西时,它就会失败。我重新安排了一些事情,我看到越来越多的错误。现在,我迷失了,一切都开始变得一样了。
我的最新尝试:
$CompName = 1..45
$Servers = "PRODSERVER-" + $CompName
ForEach ($Server in $Servers) {
Test-Connection -ComputerName $Server -Count 1 }| Export-Csv 'C:\Users\SucksAtPowerShell\Desktop\ips.csv' -NoTypeInformation }
如前所述,这打破......
Test-Connection : Testing connection to computer 'PRODSERVER-1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45' failed: The requested name is valid, but no data of the requested type was found At line:4 char:5 + Test-Connection -ComputerName $Server -Count 1 } + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (PRODSERVER-1 2 ... 41 42 43 44 45:String) [Test-Conne ction], PingException + FullyQualifiedErrorId : TestConnectionException,Microsoft.PowerShell.Commands.TestConnectionCommand
答案 0 :(得分:1)
您没有迭代每个数组元素。当作为一个字符串强制转换时,你的数组就会被每个以空格分隔的元素连接起来。
这有多种方法,但大多数都涉及在循环内处理整数数组。让我们将范围运算符移动到ForEach-Object
1..45 | ForEach-Object {
$Server = "PRODSERVER-$_"
Test-Connection -ComputerName $Server -Count 1
} | Export-Csv 'C:\Users\SucksAtPowerShell\Desktop\ips.csv' -NoTypeInformation
或者更符合您之前的内容
$CompName = 1..45
$Servers = $CompName | ForEach-Object{"PRODSERVER-" + $_}