Braden Jensen
Braden Jensen

Reputation: 11

Powershell AD-GetComputer with Array Variable

I'm trying to create a loop that tests the connection to specific computers in the Active Directory. The output is @{name=KY-WH-DT01} when I'm looking for KY-WH-DT01. I'm not sure what I'm doing wrong.

As a workaround, I've pulled the list manually and properly inserted it into the variable as hard code.

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

...

This code should output a list of computer names with colors determining whether the connection test passed or failed by turning them either red or green.

Upvotes: 0

Views: 590

Answers (1)

Drew
Drew

Reputation: 4020

You need to drill down a little bit in your variable.

foreach ($computer in $computers.Name) {

This will do it if you only want the name or the computer and no other variable.

You can also change your initial search to include the -ExpandProperty switch and you will not need to dig down into the property.

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

Upvotes: 1

Related Questions