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
我正在将登录脚本从 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