Windows 10中AD LDS执行New-ADOrganizationalUnit提示无法联系服务器
解决Windows 10上PowerShell操作AD LDS创建OU的问题
核心原因
Windows 10客户端系统没有也无法安装Active Directory Web Services(ADWS),而AD模块的New-ADOrganizationalUnit等cmdlet完全依赖ADWS服务运行——这就是你在Windows 10上执行失败、但Server 2019上正常的根本原因。RSAT:AD LDS工具仅提供ADSI编辑等管理界面,不包含ADWS服务。
替代自动化方案:使用ADSI或.NET类实现
既然AD模块cmdlet不可用,可通过PowerShell调用ADSI(Active Directory Service Interfaces)或.NET的System.DirectoryServices类来完成AD LDS的OU创建,无需依赖ADWS。
方法1:ADSI直接操作
这是最直接的方式,适合各类AD LDS对象的创建与管理:
# 配置AD LDS连接参数 $ldapServer = "localhost:389" # 替换为你的AD LDS实例地址和端口 $rootDN = "DC=PlantSCADA,DC=local" # 替换为你的AD LDS根分区DN $ouName = "OU=SCADAUsers" # 要创建的OU名称 $credential = Get-Credential # 如果AD LDS启用了认证,输入对应凭据 # 建立AD LDS连接 $adLdsRoot = New-Object System.DirectoryServices.DirectoryEntry( "LDAP://$ldapServer/$rootDN", $credential.UserName, $credential.GetNetworkCredential().Password ) # 创建OU对象 $newOu = $adLdsRoot.Create("organizationalUnit", $ouName) # 可选:设置OU属性(如描述) $newOu.Put("description", "Plant SCADA应用用户管理OU") # 保存到AD LDS实例 $newOu.SetInfo() Write-Host "OU $ouName 创建成功"
方法2:使用.NET DirectoryServices命名空间
如果需要更复杂的批量操作,可基于.NET类扩展:
# 加载必要的.NET程序集 Add-Type -AssemblyName System.DirectoryServices # 定义参数 $ldapPath = "LDAP://localhost:389/DC=PlantSCADA,DC=local" $ouList = @("OU=SCADAUsers", "OU=SCADA Administrators", "OU=SCADA Operators") # 批量创建多个OU $credential = Get-Credential foreach ($ouName in $ouList) { $adLdsRoot = New-Object System.DirectoryServices.DirectoryEntry( $ldapPath, $credential.UserName, $credential.GetNetworkCredential().Password ) $newOu = $adLdsRoot.Create("organizationalUnit", $ouName) $newOu.SetInfo() Write-Host "OU $ouName 创建完成" }
关键注意事项
- 确保AD LDS实例处于运行状态,且Windows 10设备能访问实例的LDAP端口(默认389/636)
- 如果AD LDS配置了匿名访问,可省略
$credential参数,直接连接 - 若需要创建嵌套OU,只需将父OU的LDAP路径作为连接根即可
内容的提问来源于stack exchange,提问作者Yogesh Vasu
相关产品推荐
相关产品推荐

