Powershell AD-GetComputer с переменной массива - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь создать цикл, который проверяет соединение с определенными компьютерами в Active Directory.Вывод @ {name = KY-WH-DT01}, когда я ищу KY-WH-DT01.Я не уверен, что делаю не так.

В качестве обходного пути я вытащил список вручную и правильно вставил его в переменную в виде жесткого кода.

function testConnection {

$computers = Get-ADComputer -filter 'Name -like "KY-WH*" -or name -like "KY-SR"' | select name

$pass = 0
$fail = 0
foreach ($computer in $computers) {

        $testConnection = Test-Path "\\$computer\C$" -ErrorAction Stop
        if ($testConnection -eq $true) {
        Write-Host $computer -ForegroundColor Green
        $pass = $pass + 1
        }
        else {
        Write-Host $computer -ForegroundColor Red -BackgroundColor Black
        $fail = $fail + 1
        }
}
Write-Host $null
Write-Host "Passed: $pass  |  Failed: $fail"
}
testConnection

...

Этот код должен выводить список имен компьютеров с цветами, определяющими, прошел ли тест соединения или нет, поворачивая их красным или зеленым.

1 Ответ

1 голос
/ 11 июня 2019

Вам нужно немного углубиться в переменную.

foreach ($computer in $computers.Name) {

Это будет сделано, если вам нужно только имя или компьютер, а не другая переменная.

Вы также можете изменить первоначальный поиск, включив переключатель -ExpandProperty, и вам не нужно копаться в этом свойстве.

$computers = Get-ADComputer -filter 'Name -like "KY-WH*" -or name -like "KY-SR"' | select -ExpandProperty name
...