在powershell中有没有一种方法可以选择需要作为头的信息,这样我就可以把它构造成一个表



我想要一个可以启动的脚本,它会给我所有以APS及其成员开头的组

我想得到一个HTML,它在标题中说:组和表中的用户

这是我目前得到的代码:

$properties = 'GivenName', 'Surname', 'UserPrincipalName'
Get-ADGroup -Filter {name -like "APS-*"} | ForEach {
$groupName = $_.Name
Get-ADGroupMember -Identity $_.SamAccountName |Get-ADUser -Property $properties |Select 
@{N='GroupName';E={$groupName}},'GivenName', 'Surname', 'UserPrincipalName'}

但这给了我一个组、给定名称、Surename、用户主体的列表

我想得到:像这样组织

有办法得到这个吗?

为了实现所需的结果,请考虑以下几点

  1. 变量$properties包含公共值,不需要将其传递给`Get-ADUser即可获取其值
  2. 您需要为命令Get-ADGroupMember指定参数recursive,以便获取子组中的所有子用户
  3. 如果需要以HTML格式输出结果,可以使用命令ConvertTo-Html

我修改了你的代码以输出所需的格式,请检查

$groups = Get-ADGroup -Filter {name -like "APS-*"}
$list = foreach ($group in $groups) {
$groupName = $group.Name
Get-ADGroupMember -Identity $group.SamAccountName -Recursive | Get-ADUser | select @{N='GroupName';E={$groupName}},'GivenName', 'Surname', 'UserPrincipalName'
}
$out = $list | Group-Object GroupName 
[string]$out_html = foreach ($item in $out){
$item.group | Select-Object 'GivenName', 'Surname', 'UserPrincipalName' | ConvertTo-Html -PreContent "<br>$($item.Name)<br><br>"
}
$out_html| Out-File .groups.html

如果需要从报表中排除特定用户,可以使用Where子句筛选Get-ADGroupMember的输出,如下所示

# i.e. to exclude specific samaccountnames
$execlusionList = @("SamAccountName1","SamAccountName2") 
Get-ADGroupMember -Identity $group.SamAccountName -Recursive | where {$_.samaccountname -notin $execlusionList} | Get-ADUser | select @{N='GroupName';E={$groupName}},'GivenName', 'Surname', 'UserPrincipalName'

相关内容

最新更新