在我的AD powershell脚本中添加Get ADuser属性时遇到问题
将在我的AD powershell脚本中添加Get ADuser属性时遇到问题,powershell,active-directory,Powershell,Active Directory,将Get ADUser属性添加到脚本时遇到问题。 当前,在.csv文件中显示的列只有:域、组、和用户名。 我的目标是为组中的每个用户获取更多信息。 我要显示的输出是:域,组,用户名,显示名称,说明,电话号码,&电子邮件 以下是我的脚本: $groups = Get-Content c:\temp\ADGroups.txt $domains = (Get-ADForest).domains foreach ($Group in $Groups) { $Members = foreach (
Get ADUser
属性添加到脚本时遇到问题。
当前,在.csv文件中显示的列只有:域
、组
、和用户名
。
我的目标是为组中的每个用户获取更多信息。
我要显示的输出是:域
,组
,用户名
,显示名称
,说明
,电话号码
,&电子邮件
以下是我的脚本:
$groups = Get-Content c:\temp\ADGroups.txt
$domains = (Get-ADForest).domains
foreach ($Group in $Groups) {
$Members = foreach ($domain in $domains) {
$Groupname = Get-ADGroup -Filter { Name -like $Group } -Server $Domain
$Groupname |
Get-ADGroupMember -Server $domain |
Select @{Name="Domain";Expression={$Domain}},
@{Name="Group";Expression={$Groupname.Name}}, Name |
Export-Csv c:\temp\GroupsInfo.CSV -NoTypeInformation -Append
}
}
用你所拥有的,把它改成这个,试试看
$Groups = (Get-Content -Path 'c:\temp\ADGroups.txt')
$Domains = (Get-ADForest).Domains
foreach($Group in $Groups)
{
$Members = foreach ($domain in $domains)
{
Get-ADGroupMember -Server $domain -Identity $Group |
Select -Property @{Name="Domain";Expression={$Domain}},
@{Name="Group";Expression={$Group}},Name
}
$Members
}
为结果运行更新
同样的结果也会出现在导出中
$Members | Export-Csv c:\temp\GroupsInfo.CSV -NoTypeInformation -Append
psedit c:\temp\GroupsInfo.CSV
"Domain","Group","Name"
"contoso.com","Administrators","Domain Admins"
"contoso.com","Administrators","Enterprise Admins"
"contoso.com","Administrators","Administrator"
"contoso.com","Guests","Domain Guests"
"contoso.com","Guests","Guest"
我还想补充一点,您无法获得这些属性
显示姓名、说明、电话号码和电子邮件
。。。根据您当前代码中的内容
您将从get-ADUser cmdlet获得。因此,您必须添加该段
根据OP请求更新
根据OP问题更新
至于这个
我知道这要求很高,但是,有没有办法让它工作呢
嵌套组
就目前而言,据我所知,这是这些cmdlet的一个限制。因此,没有本机方法(考虑参数或开关)来获取嵌套或间接组。你必须用自己的代码来处理。再说一次,至少现在是这样
例如,在用例的这一部分中执行类似的操作可能是一种方法
function Get-NestedGroupMember
{
[cmdletbinding()]
[Alias('gngm')]
param
(
[Parameter(Mandatory,ValueFromPipeline)]
[string]$Identity
)
process
{
$user = Get-ADUser -Identity $Identity
$userdn = $user.DistinguishedName
$strFilter = "(member:1.2.840.113556.1.4.1941:=$userdn)"
Get-ADGroup -LDAPFilter $strFilter -ResultPageSize 1000
}
}
在PS上做事情总是有多种方法,这只是其中之一
Get-NestedGroupMember -Identity 'SomeUserName' |
Select-Object -Property Name, DistinguishedName
您甚至可以利用这种方法来做一些与我们到目前为止所讨论的有所不同的事情,因为它可以访问与用户关联的所有对象,并且您可以根据需要解析这些属性/参数/属性。中没有帮助?它仍然只显示域、组和用户名列。出现以下错误“Get-ADGroupMember:找不到标识为Get-ADGroupMember-Server$domain-identity$Group的对象”该ADGroups.txt文件是什么样子的?我在测试实验室中使用默认的“管理员”和“来宾”组运行了这个程序,并且运行良好。现在,在我的测试实验室里,我只有一个域。查看显示输出结果的我的更新我得到了相同的结果,但我希望能够获取每个组中每个用户的用户描述。我想要的组中每个成员的输出是:域、组、用户名、显示名、说明、电话号码和电子邮件。我想我们是同时键入的。8^}--查看我的更新。这是我的问题,我无法将Get-ADUser cmdlet添加到脚本中。有没有关于如何包含它的建议?
function Get-NestedGroupMember
{
[cmdletbinding()]
[Alias('gngm')]
param
(
[Parameter(Mandatory,ValueFromPipeline)]
[string]$Identity
)
process
{
$user = Get-ADUser -Identity $Identity
$userdn = $user.DistinguishedName
$strFilter = "(member:1.2.840.113556.1.4.1941:=$userdn)"
Get-ADGroup -LDAPFilter $strFilter -ResultPageSize 1000
}
}
Get-NestedGroupMember -Identity 'SomeUserName' |
Select-Object -Property Name, DistinguishedName