如何在无本地管理员权限下为普通用户启用Get-ADUser模块?
无需本地管理员权限使用Get-ADUser模块的方法
以下是几种可行的方案,无需本地管理员权限即可实现AD用户数据检索:
1. 通过远程PowerShell会话连接域控制器
域控制器默认预装了Active Directory模块,你可以直接远程连接到域控制器执行Get-ADUser命令,无需在本地安装RSAT组件:
- 建立远程会话并执行查询:
# 替换为你的域控制器名称或FQDN $dcName = "DC01.yourdomain.com" # 输入你的域用户凭据(非管理员权限即可) $cred = Get-Credential $session = New-PSSession -ComputerName $dcName -Credential $cred # 直接在远程会话中执行Get-ADUser Invoke-Command -Session $session -ScriptBlock { Get-ADUser -Filter * -Properties DisplayName, EmailAddress } - 也可以将远程会话中的AD模块导入本地,之后直接在本地提示符使用Get-ADUser:
Import-PSSession -Session $session -Module ActiveDirectory # 现在可以直接运行 Get-ADUser -Identity "jdoe" -Properties *
注意:需要确保域控制器允许远程PowerShell连接(默认已启用),且你的域用户拥有AD数据的读取权限。
2. 使用ADSI接口直接查询AD
无需依赖任何PowerShell模块,通过.NET的ADSI接口直接查询Active Directory,完全不需要本地管理员权限:
# 获取当前域信息 $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain() $ldapPath = "LDAP://$($domain.Name)" # 创建AD搜索器 $searcher = New-Object System.DirectoryServices.DirectorySearcher($ldapPath) # 设置筛选条件为用户对象 $searcher.Filter = "(objectClass=user)" # 指定需要加载的属性 $searcher.PropertiesToLoad.AddRange(@("samAccountName", "DisplayName", "mail")) # 执行查询并格式化输出 $searcher.FindAll() | ForEach-Object { [PSCustomObject]@{ Username = $_.Properties["samaccountname"][0] DisplayName = $_.Properties["displayname"][0] Email = $_.Properties["mail"][0] } }
这种方法不需要安装任何额外组件,只要你的域用户拥有AD读取权限即可执行。
3. 请求域管理员预先安装RSAT-AD模块
如果有条件,可以联系域管理员,使用他们的本地管理员权限在你的机器上运行以下命令安装RSAT-AD模块:
Get-WindowsCapability -Name RSAT.ActiveDirectory* -Online | Add-WindowsCapability -Online
模块安装完成后,你作为普通域用户即可直接使用Get-ADUser命令(前提是你拥有AD数据的读取权限)。
内容的提问来源于stack exchange,提问作者Michael B. Ortiz
相关产品推荐
相关产品推荐

