Я очень новичок в написании сценариев, но нигде не смог найти ответ на этот вопрос.Это может быть потому, что я не знаю правильных терминов, чтобы использовать для формулировки вопроса.Пожалуйста, простите мою неопытность и терпите меня ..
В начале моего сценария я создаю массив имен компьютеров, основанных на вводе пользователя:
$computerarray = @()
do {
$ComputerName = (Read-Host "Please enter the computer name")
if ($Computername -ne '') {$computerarray += $Computername}
}
until ($Computername -eq '')
Я использую переменные массива всюду поскрипт в циклах foreach, использующий переменную $ ComputerName для вызова каждого элемента массива.
После того, как я определил $ computerarray, я затем тестирую соединение для каждого из них, чтобы определить, какие хосты находятся в сети, и моя цель - получитьизбавиться от хостов, которые не могут подключиться.После некоторых исследований я обнаружил, что обычные элементы массива нельзя удалить, но ArrayLists можно изменить и разрешить элементам перемещаться в другой массив.
После изучения этого я изменяю свой исходный код, чтобы установить set $ computerarray в качестве массива:
[System.Collections.ArrayList]$computerarray = @()
do {
$ComputerName = (Read-Host "Please enter the computer name")
if ($Computername -ne '') {$computerarray += $Computername}
}
until ($Computername -eq '')
Затем создайте другой список массивов для перемещения хостов, которые не подключаются,
$ComputersToDelete = @()
Затем запустите блок Test-Connection:
foreach ($Computername in $computerarray)
{
If (Test-Connection -computername $ComputerName -ErrorAction SilentlyContinue)
{
Write-Host "`nConnected to $Computername"
}
Else
{
Write-Host "`nCannot connect to $Computername" -forgroundcolor white -BackgroundColor red
В остальной части этого последнего блока я пытаюсь переместить выбранный $ ComputerName в массив $ ComputersToDelete здесь:
$ComputersToDelete += $computerarray.$Computername
И, наконец, я следую за этим блоком с помощью:
foreach ($ComputersToDelete in $ComputersToDelete) {
$ComputersToDelete.Delete()
}
Я читал, что для перемещения элемента массива он будет выглядеть примерно так:
$ComputersToDelete += $computerarray[1]
Однако, поскольку я ссылаюсь только на элемент с $ ComputerNames, он, похоже, не работает.Я хочу удалить хосты, которые не подключены, поэтому остальная часть сценария не тратит время, пытаясь подключиться к ним каждый раз.
Спасибо за ваши будущие ответы, и я, наконец, рад быть частьюсообщество!