PowerShell-验证AD中是否存在对象 [英] Powershell - verify object exists in AD

查看:10
本文介绍了PowerShell-验证AD中是否存在对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含大约100台服务器的文本文件,我如何将它们推入脚本并测试它们是否存在于AD中?我有一个简单的脚本如下:

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

以上返回错误不起作用:

Get-ADComputer:无法将‘System.Object[]’转换为参数‘’Microsoft.ActiveDirectory.Management.ADComputer‘’所需的类型。不支持指定的方法。

谁能解释一下Get-adComputer只允许一个对象吗?另外,如果我删除txt文件并添加如下所示的服务器:

if (Get-ADComputer "server name" )

以上仅在服务器存在于AD中时提供结果,如果服务器不存在,则错误显示如下:

Get-ADComputer : Cannot find an object with identity: 'iuiub' under: 'DC=####,DC=#####,DC=#####'

感谢您的见解/帮助!

菲尔

推荐答案

创建数组-@()。如果数组中有1个或多个对象--即$true--那么您就知道计算机存在。如果数组中有0个对象--即$false--那么您就知道计算机不存在。我知道有些人不喜欢将ErrorAction设置为SilentlyContinue,但如果确实发生错误,您就是"Outputting an Error"

$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 "#########################"
    }
}
您可以尝试的另一种方法是try catch块。有点像这样:

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

这篇关于PowerShell-验证AD中是否存在对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆