我的计算机具有PowerShell v2.0的原始版本,因此Get-ADUser
将无效。我正在尝试将manager
属性从distinguishedname
转换为SamAccountName
。
$searcher = [adsisearcher]"(samaccountname=$env:USERNAME)"
$searcher.FindOne().Properties.manager
如果我有Get-ADUser
:
(get-aduser (get-aduser $user -Properties manager).manager).samaccountName
答案 0 :(得分:2)
您可以使用专有名称来检索将为您提供sAMAccountName
:
$searcher = [adsisearcher]"(samaccountname=$env:USERNAME)"
$manager = [adsi]('LDAP://' + $searcher.FindOne().Properties.manager)
$manager.sAMAccountName
如果专有名称包含需要转义的特殊字符,您也可以使用其他ADSISearcher:
$searcher = [adsisearcher]"(samaccountname=$env:USERNAME)"
$manager = $searcher.FindOne().Properties.manager
$searcher2 = [adsisearcher]"(distinguishedName=$manager)"
$searcher2.FindOne().Properties.sAMAccountName
答案 1 :(得分:0)
$ADS_ESCAPEDMODE_ON = 2
$ADS_SETTYPE_DN = 4
$ADS_FORMAT_X500_DN = 7
$Pathname = new-object -comobject "Pathname"
[Void] $Pathname.GetType().InvokeMember("EscapedMode", "SetProperty", $null, $Pathname, $ADS_ESCAPEDMODE_ON)
$searcher = [ADSISearcher] "(sAMAccountname=$Env:USERNAME)"
$managerDN = $searcher.FindOne().Properties["manager"]
if ( $managerDN ) {
[Void] $Pathname.GetType().InvokeMember("Set", "InvokeMethod", $null, $Pathname, @($managerDN[0], $ADS_SETTYPE_DN))
$escapedDN = $Pathname.GetType().InvokeMember("Retrieve", "InvokeMethod", $null, $Pathname, $ADS_FORMAT_X500_DN)
([ADSI] "LDAP://$escapedDN").Properties["sAMAccountName"][0]
}
获取当前用户的manager
属性(专有名称),使用Pathname
对象将其转义,使用[ADSI]
类型加速器绑定到该属性,然后检索经理{ {1}}属性。