如何为不同的受信域上的用户获取完全限定的域名(FQDN)?如何获取目标用户(不同)域的FQDN?
通常情况下,我会问说用户采取概括here的途径中的任何一个(例如whoami /fqdn
或echo %userDNSdomain%
),但如果这种做法并不适用于任何原因(如该帐户是,我无法代理帐户以交互方式登录,我正在为之工作的公司已被收购,而新的所有者并不像即将出现的等等),有没有办法让我获得这个不同的用户帐户的FQDN?
或者,采用“模拟”我的用户凭据返回的FQDN的方法也容易出错。就拿运行whoami /fqdn
为我的用户的输出:
C:\Users\john.eisbrener>whoami /fqdn
CN=John M. Eisbrener,OU=Standard Users,OU=Resources,DC=CONTOSO,DC=COM
我可以概念调整域组件对方,信任域,与它沿用了同样的期望,但是这将是目光短浅,因为并非所有的域名遵循相同的命名惯例。我看到太多使用.org
的受信任域,或者在其LDAP根路径中包含其他域前缀或后缀。
所有这一切的主要驱动程序是我需要将正确的域组件传递到下面的PowerShell查询,我试图找到可能需要将某些用户组和用户名添加到某些安全组时,文件路径等。
## List Groups for a Username
$domainName = 'CONTOSO'
$domainSuffix = 'COM'
$username = 'john.eisbrener'
(New-Object System.DirectoryServices.DirectorySearcher((New-Object System.DirectoryServices.DirectoryEntry("LDAP://dc=$($domainName),dc=$($domainSuffix)")), "(&(objectCategory=User)(samAccountName=$($username)))")).FindOne().GetDirectoryEntry().memberOf | % { (New-Object System.DirectoryServices.DirectoryEntry("LDAP://"+$_)) } | Sort-Object sAMAccountName | SELECT @{name="Group Name";expression={$_.Name}},@{name="Group sAMAccountName";expression={$_.sAMAccountName}}
## List Members in a Group
$domainName = 'CORP'
$domainSuffix = 'ORG'
$groupname = 'RemoteUsers'
(New-Object System.DirectoryServices.DirectoryEntry((New-Object System.DirectoryServices.DirectorySearcher((New-Object System.DirectoryServices.DirectoryEntry("LDAP://dc=$($domainname),dc=$($domainSuffix)")), "(&(objectCategory=Group)(name=$($groupname)))")).FindOne().GetDirectoryEntry().Path)).member | % { (New-Object System.DirectoryServices.DirectoryEntry("LDAP://"+$_)) } | Sort-Object sAMAccountName | SELECT @{name="User Name";expression={$_.Name}},@{name="User sAMAccountName";expression={$_.sAMAccountName}}
为什么我不能安装任何其他组件或模块?我使用的计算机非常普通,没有任何额外的PowerShell模块或mmc snapins(例如dsa.msc
),因为我的用户帐户没有足够的权限来安装软件。
我目前的做法得到这个其他用户的域的FQDN是设置运行Windows计划任务为上述用户,节省了上述whoami /fqdn
或echo %userDNSdomain%
命令到一个文本文件的输出,不过这似乎有点缺憾和我希望能够从命令提示符或PowerShell提示符运行一个简单的单线程。任何建议,将不胜感激。
最后说明,如果我的术语不正确或导致混淆,我很抱歉。我愿意接受某人理解我所问的任何修改。
ADSI和来自RSAT的Active Directory模块不一样。 ADSI将成为您可能想要使用的方法。 – BenH
@BenH我无法在这种情况下使用这些工具,因为我的帐户没有足够的权限将软件安装到我有权访问的计算机上。 –
那么你需要通过[adsisearcher]类型加速器或System.DirectoryServices.DirectorySearcher类使用shell中本地可用的内容。 – thepip3r