Как найти компьютер с наименьшим номером в сети - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь написать скрипт для копирования некоторой информации с одного компьютера на другой.Первый компьютер имеет имя, похожее на «SERVERxx», где xx - номер сайта.В сети несколько компьютеров с именами, похожими на «TERMINALxx_yy», где xx - это номер сайта, а yy - это номер ТЕРМИНАЛОВ.То, что я хотел бы сделать, это найти самый низкий номер из «ТЕРМИНАЛОВ» (так как 1 не всегда может быть самым низким).На СЕРВЕРЕ есть переменная окружения с именем TERMSTR, которая равна «TERMINALxx_», а также переменная окружения с именем NUMTERMS, которая представляет собой число TERMINALS на сайте.

Максимум, что мне удалосьполучается следующее:

net view | Select-string $termstr

Но это просто выводит таблицу.

Я полагаю, что сначала мне нужно NET VIEW дать только имена компьютеров, затем отсортировать по убыванию и выбрать первое.

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

Вот отправная точка кода, который вы можете использовать.

$Servers = Get-ADComputer -Filter 'Name -like "SERVER*"' 
foreach($Server in $Servers | Sort-Object){
     $N = $Server.name.substring(($Server.name.length)-2)
     $Terminals = Get-ADComputer -Filter 'Name -like "TERMINAL$($N)*"'
     $count = $Terminals.Count
     $Terminal = $Terminals | Sort-Object
     $TerminalZero = $Terminal[0].Name
     Write-Host "Terminal Name: $TerminalZero"
     $COMMAND = {
     Write-Host [System.Environment]::GetEnvironmentVariable("termstr","Machine")
     [System.Environment]::SetEnvironmentVariable("TERMSTR", $TerminalZero, "Machine")
     [System.Environment]::SetEnvironmentVariable("NUMTERMS", $Count, "Machine")
     }
     Invoke-Command -ComputerName $Server -ScriptBlock { $COMMAND }
     }
}
0 голосов
/ 21 мая 2019

Если вы абсолютно ДОЛЖНЫ использовать net view, то это даст вам наивысший наименьший системный номер с удаленными заголовком, нижним колонтитулом, дополнением строки и не цифрами. это не добавляет никаких начальных нулей к полученному числу, tho. [ ухмылка ]

net view |
    # skip the 3 header lines
    Select-Object -Skip 3 |
    # skip the footer lines
    Select-Object -SkipLast 2 |
    # trim away the "net view" line padding
    # remove the non-digits
    ForEach-Object {
        [int]($_.Trim() -replace '[^0-9]')
        } |
    Sort-Object |
    Select-Object -First 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...