验证OU是否存在

时间:2019-02-28 15:44:31

标签: powershell ou

我想找出一个组织单位是否存在,所以我写了下面的代码,但是它显示了一个错误:不可能找到标识为OU_Bloquage的对象。尽管它确实存在(我创建了它) 下面是我编写的代码

Import-Module ActiveDirectory
Import-Module 'Microsoft-PowerShell.Security'
$OUName = 'OU_Bloquage'
if([bool] (Get-ADOrganizationalUnit $OUName))
{ Write-Host 'true' }
else { Write-Host 'false' }

3 个答案:

答案 0 :(得分:1)

@Bearded Brawler-您很亲密,但缺少其余问题的内容。

相反:

$OUName = 'OU_Bloquage'                  # the OU your looking for.

$OUName = "Name -like '$($OUName)'"
if([bool](Get-ADOrganizationalUnit -Filter $OUName)) {
 Write-Host 'true'
} else {
  Write-Host 'false' }

注意:这假设OU实际上是'OU_Bloquage'而不是'Bloquage'。如果只是Bloquage,则将第一行编辑为这样。

答案 1 :(得分:0)

我会改用过滤器来查找您不确定其完整路径的OU

Get-ADOrganizationalUnit -Filter'类似于名称的“ * Bloquage *”“ |格式表名称,专有名称-A

答案 2 :(得分:0)

此代码应该有效 使用Where-Object过滤

Import-Module ActiveDirectory
$OUName = "OU_NAME"
if([bool] (Get-ADOrganizationalUnit -Filter * | ? {$_.Name -eq $OUName} ))
{ Write-Host 'true' }
else { Write-Host 'false' } 

结果:

PS C:\Windows\system32> Import-Module ActiveDirectory
$OUName = "CLOUD"
if([bool] (Get-ADOrganizationalUnit -Filter * | ? {$_.Name -eq $OUName} ))
{ Write-Host 'true' }
else { Write-Host 'false' } 
true

PS C:\Windows\system32> Import-Module ActiveDirectory
$OUName = "dsdsadasda"
if([bool] (Get-ADOrganizationalUnit -Filter * | ? {$_.Name -eq $OUName} ))
{ Write-Host 'true' }
else { Write-Host 'false' } 
false