我有一个 PowerShell 脚本,可以从 VirtualBox 内托管的 Active Directory 服务器获取用户。
我已将根证书导入计算机的受信任根存储中。我可以使用 389 和 636 (SSL) 使用 JXplorer 连接和查询我的 Active Directory 服务器。
剧本:
Get-ADUser -AuthType 0 -LDAPFilter "(objectClass=user)" -SearchBase "CN=Users,DC=win2022,DC=kcwong,DC=igsl" -Server "WIN-EF20VIM8EIQ.win2022.kcwong.igsl:636" -Credential "Administrator"
# Password is entered correctly in the dialog that pops up
$LDAP = New-Object System.DirectoryServices.DirectoryEntry("LDAP://WIN-EF20VIM8EIQ.win2022.kcwong.igsl:636/CN=Users,DC=win2022,DC=kcwong,DC=igsl", "Administrator", "[Password here]")
$Searcher = New-Object System.DirectoryServices.DirectorySearcher($LDAP)
$Searcher.SearchScope = "Subtree"
$Searcher.Filter = "(objectClass=user)"
$Searcher.FindAll()
当我执行时,结果是:
PS C:\KC\Projects\Fubon Bank\Script> .\LDAPExport.ps1
Get-ADUser : Server instance not found on the given port.
At C:\KC\Projects\Fubon Bank\Script\LDAPExport.ps1:69 char:1
+ Get-ADUser -AuthType 0 -LDAPFilter "(objectClass=user)" -SearchBase " ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-ADUser], ArgumentException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.ArgumentException,Microsoft.ActiveDirectory.Management.Comm
ands.GetADUser
Path Properties
---- ----------
LDAP://WIN-EF20VIM8EIQ.win2022.kcwong.igsl:636/CN=Administrator,CN=Users,DC=win2022,DC=kcwong,DC=igsl {logoncount, c...
LDAP://WIN-EF20VIM8EIQ.win2022.kcwong.igsl:636/CN=Guest,CN=Users,DC=win2022,DC=kcwong,DC=igsl {logoncount, c...
LDAP://WIN-EF20VIM8EIQ.win2022.kcwong.igsl:636/CN=krbtgt,CN=Users,DC=win2022,DC=kcwong,DC=igsl {logoncount, c...
LDAP://WIN-EF20VIM8EIQ.win2022.kcwong.igsl:636/CN=test1,CN=Users,DC=win2022,DC=kcwong,DC=igsl {givenname, co...
LDAP://WIN-EF20VIM8EIQ.win2022.kcwong.igsl:636/CN=test2,CN=Users,DC=win2022,DC=kcwong,DC=igsl {givenname, co...
LDAP://WIN-EF20VIM8EIQ.win2022.kcwong.igsl:636/CN=test10,CN=Users,DC=win2022,DC=kcwong,DC=igsl {givenname, co...
PS C:\KC\Projects\Fubon Bank\Script>
因此 DirectorySercher 可以工作,但 Get-ADUser 不能。如果我更改为端口 389,Get-ADUser 就可以工作。
我不想使用 DirectoryEntry,因为我似乎无法将 Credential 与它一起使用。我的脚本将在任务计划程序中执行,因此我需要一些方法来保护密码。
StackOverflow 上有一些类似的问题,但大多数都没有答案。在一个问题中,我什至发现有人说 Get-ADUser 不支持 SSL。