PowerShell-验证AD中是否存在对象 [英] Powershell - verify object exists in AD
本文介绍了PowerShell-验证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屋!
查看全文