Powershell - verify object exists in AD

powershell, powershell-2.0

Solution

Create an array - `@()`. If the array has 1 or more objects in it - which is `$true` - then you know the computer exists. If the array has 0 objects in it - which is `$false`- then you know the computer doesn't exist. I know some people don't like the `ErrorAction` to be set to `SilentlyContinue` but you're "Outputting an Error" if an error does occur.

$serverlist = get-content ServerList.txt
foreach ($server in $serverlist) {
    if (@(Get-ADComputer $server -ErrorAction SilentlyContinue).Count) {
        Write-Host "#########################"  
        Write-Host "Computer object exists"
        Write-Host "#########################"
    }
    else {
        Write-Host "#########################"  
        Write-Host "Computer object NOT FOUND"
        Write-Host "#########################"
    }
}

Another thing you could try are `try catch` blocks. Sorta like this:

$serverlist = get-content ServerList.txt
foreach ($server in $serverlist) {
    try{
        Get-ADComputer $server -ErrorAction Stop
        Write-Host "#########################"  
        Write-Host "Computer object exists"
        Write-Host "#########################"
    }
    catch{
        Write-Host "#########################"  
        Write-Host "Computer object NOT FOUND"
        Write-Host "#########################"
    }
}

Problem

i have a text file containing arround 100 servers, how can i push these into a script and test if they exist within AD? I have a simple script below: ``` $serverlist = get-content ServerList.txt foreach ($server in $serverlist) { if (Get-ADComputer $serverlist ) { Write-Host "#########################" Write-Host "Computer object exists" Write-Host "#########################" } else { Write-Host "#########################" Write-Host "Computer object NOT FOUND" Write-Host "#########################" } } ``` the above does not work returning a error: Get-ADComputer : Cannot convert 'System.Object[]' to the type 'Microsoft.ActiveDirectory.Management.ADComputer' required by parameter 'Identity'. Specified method is not supported. Can someone please explain does the get-adcomputer only allow a single object? Also if i remove the txt file and add a server shown below: ``` if (Get-ADComputer "server name" ) ``` The above provides only results if the server exists within AD, if the server does not the error is shown below: ``` Get-ADComputer : Cannot find an object with identity: 'iuiub' under: 'DC=####,DC=#####,DC=#####' ``` Thank you for any insight / help! Phil

Original source