我能够将完整的LDAP路径转换为变量$ strPath,它将返回如下结果:
LDAP:// CN =计算机名,OU =市,OU =服务器,OU = ###,DC = DOM,DC = AIN,DC = COM 或者在其他位置它看起来像: LDAP:// CN =计算机名,OU =服务器,OU = ##,DC = DOM,DC = AIN,DC = COM
我想只返回##,###或####值(可以是两个,三个或四个字符),这是我们的地区代码。
因此,某些计算机对象在其LDAP字符串中具有城市名称,而其他计算机对象则没有(取决于区域的大小),并且区域代码可以是两个,三个或四个字符长。
我猜我想要做一些事情,比如查找文字“服务器,OU =”并删除包括之前的所有内容,并删除文字“,DC = dom,DC = ain,DC = com“来获取我的最终变量。
提前致谢!
答案 0 :(得分:1)
请查看本文中的Get-ADPathname.ps1
脚本:
Use PowerShell to Handle Active Directory Paths
对于您的第一个示例,OU代码是右侧的第4个元素:
LDAP://CN=computername,OU=City,OU=Servers,OU=###,DC=dom,DC=ain,DC=com
例如,你可以这样写:
(Get-ADPathname LDAP://CN=computername,OU=City,OU=Servers,OU=###,DC=dom,DC=ain,DC=com" -Split -ValuesOnly)[-4]
-Split
参数将LDAP路径拆分为数组,-ValuesOnly
省略CN=
,OU=
,DC=
等。{{1 }表示“从数组末尾返回第4个元素。”
答案 1 :(得分:0)
这样的事情怎么样:
$ldapString = "LDAP://CN=computername,OU=Servers,OU=##,DC=dom,DC=ain,DC=com"
$temp = $ldapString.Split(",=")
$districtCode = $temp[[array]::IndexOf($temp,"DC") - 1]
它适用于两者而且没有额外的进口。只要您没有区号和#34; DC"。