I have a problem checking if a computer object exists in AD or not. To be specific it should go into an "else" if not.
This is my code:
if (Get-ADComputer "$Computer") {
Get-ADComputer $Computer | Set-ADComputer -Enabled $false
Start-Sleep -s 2
Get-ADComputer $Computer | Move-ADObject -TargetPath $PathOU
Start-Sleep -s 2
} else {
write-host "Example"
}
When the input computer doesn't exist, the problem is, the command Get-ADComputer "$Computer" already fails in the if statement, so it never reaches the else.
How can I avoid that?
Thanks in advance.
CodePudding user response:
Use Try Catch instead:
try {
Get-ADComputer $Computer | Set-ADComputer -Enabled $false
Start-Sleep -s 2
Get-ADComputer $Computer | Move-ADObject -TargetPath $PathOU
Start-Sleep -s 2
catch {
Write-Host "Example"
}
CodePudding user response:
Add the Get-ADComputer to a variable before the if block to help. Also before setting that variable with the command, set it to null per the below example. In addition to that, change up the if block to first check if it does not exist and to run that logic first then else run logic if it does exist.
$comp = "";
$comp = Try {Get-ADComputer "$Computer"} Catch {$false};
if (!$comp) {
write-host "Example"
} else {
$comp | Set-ADComputer -Enabled $false
Start-Sleep -s 2
$comp | Move-ADObject -TargetPath $PathOU
Start-Sleep -s 2
};
Supporting Resources
- if
- Comparison Operators
!logical not
