Powershell 在没有 AD 权限的情况下从 Active Directory 获取 LDAP 显示名称

Powershell get LDAP display name from Active Directory without AD privileges

我正在将登录脚本从 VB 重写到 PowerShell,我需要将 LDAP 显示名称导出到日志文件。问题是我和许多其他用户一样,没有使用任何命令的权限,例如 get-aduser 等。我确实可以访问 ADSystemInfo 对象,但似乎没有所需的信息。

获取信息的 VB 代码如下所示:

Set wshShell = CreateObject( "WScript.Shell" )
Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
strFullName = objUser.Get("Displayname")

strFullname 的 vb 输出格式类似于:

'lastname, firstname middleinitial (plus a bit of other ad info)'.

在 PowerShell 中,我可以获得 strUser,但我不确定如何翻译最后几行。

$adsysinfo = New-Object -ComObject "ADSystemInfo"
$strUser = $adsysinfo.GetType().InvokeMember("username", "GetProperty", $Null, $adsysinfo, $Null) -split ',' | select -first 1 
$strUser = $strUser -split('=') | select -last 1

还有其他脚本可以挖掘我输出到的日志文件,所以我需要保持格式准确。 google 上的解决方案只推荐使用 get-aduser,我在这里不能使用它。谁能帮我翻译最后 2 VB 行?

你已经完成了 90%,你只需要将最后一位翻译成一个 [adsi] 对象,然后像使用对象一样使用它。

$adsysinfo = New-Object -ComObject "ADSystemInfo"

#Get Distinguished Name
$strUser = $adsysinfo.GetType().InvokeMember("username", "GetProperty", $Null, $adsysinfo, $Null)

#Get ADSI object from LDAP query
$objUser = [adsi]"LDAP://$strUser"

#Reference ADSI object to pull Display Name
$strFullName = $objUser.displayName