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