测试PowerShell中的Active Directory中是否存在计算机对象



我在检查AD中是否存在计算机对象时遇到问题。具体来说,它应该进入"else"。如果不是。

这是我的代码:

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"
}

当输入计算机不存在时,问题是Get-ADComputer "$Computer"命令在if语句中已经失败,因此它永远不会到达else

我怎样才能避免呢?

提前感谢。

Try Catch代替:

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"
}

Get-ADComputer添加到if块之前的变量中来帮助。同样,在使用命令设置该变量之前,请根据下面的示例将其设置为null。除此之外,更改if块,首先检查它是否不存在,然后首先运行该逻辑,如果它存在,则else运行逻辑。

$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
};

支持资源如果
  • >
  • 比较运算符

    !logical not

  • 最新更新