powershell - 确认subOU是否已经存在?
问题描述
您好,我正在尝试创建一个创建子 OU 的脚本,在我插入 if 语句之前一切正常。如果 OU' 已经存在,我希望脚本编写警告。我认为错误在 if 语句中,并尝试了不同的方法无济于事。有人有什么好主意吗?谢谢。
New-ADOrganizationalUnit -Name "ou1" -Path "OU=mylab,DC=mylab,DC=local"
New-ADOrganizationalUnit -Name "ou2" -Path "OU=mylab,DC=mylab,DC=local"
New-ADOrganizationalUnit -Name "ou3" -Path "OU=mylac,DC=mylab,DC=local"
$ou1 = Get-ADOrganizationalUnit -Filter 'Name -like "ou1"'
$ou2 = Get-ADOrganizationalUnit -Filter 'Name -like "ou2"'
$ou3 = Get-ADOrganizationalUnit -Filter 'Name -like "ou3"'
$ouall = $ou1, $ou2, $ou3
$ouall
foreach ($ou in $ouall){
If(Get-ADOrganizationalUnit -Filter "Name -eq '$ou'" -ErrorAction SilentlyContinue){
Write-Warning "This Ou already exists"
}
Else{
Write-Host $ou.DistinguishedName
New-ADOrganizationalUnit -Name "Users" -Path $ou.DistinguishedName
New-ADOrganizationalUnit -Name "Computers" -Path $ou.DistinguishedName
}
}
解决方案
这可以简化很多。如果他们确实进入了相同的根路径,那么我就是这样做的。我认为不需要获取现有 OU 的专有名称,因为您仅在它们不存在时才创建它们,并且它们本身不会被创建。
$ous = "ou1","ou2","ou3"
$ous | ForEach-Object {
If(Get-ADOrganizationalUnit -Filter "Name -eq '$_'" -ErrorAction SilentlyContinue){
Write-Warning "OU $_ already exists"
}
else{
Write-host creating OU $_
New-ADOrganizationalUnit -Name $_ -Path "OU=mylab,DC=mylab,DC=local"
}
}
之前的 if 语句中的主要问题是您正在检查 name -eq $ou 其中 $ou 将是 OU 对象,而不是名称。
推荐阅读
- c# - 如何使用 AJAX 调用 ASP.NET 根页面中的 Web 方法
- c# - 将数据插入 SQL 表显示错误
- c++ - 将十六进制的 std::string 转换为 std::array
- vue.js - 模型值未更新 vue.js laravel 5.8 中复选框的 UI
- angular - Angular 6 应用程序从外部调用应用程序读取参数
- mysql - 具有许多大数组的单表与许多表
- oop - 在这种情况下,依赖倒置如何工作?
- python - 在 django 中创建弹出消息
- scala - 在 1 秒的窗口中获取第 1000 毫秒的数据
- jquery - jQuery - 具有多个 div 和附加隐藏功能的简单 slideToggle