Arrays Powershell-将结果格式化为表/数组
我有下面的脚本拉正确的信息,但需要帮助格式化它。我要找的是一个表,该表在a列中列出了组名,在B列中列出了用户名。现在的输出在a列中列出了组名,但将用户名全部放在B列的一行中 结果是:Arrays Powershell-将结果格式化为表/数组,arrays,variables,powershell,Arrays,Variables,Powershell,我有下面的脚本拉正确的信息,但需要帮助格式化它。我要找的是一个表,该表在a列中列出了组名,在B列中列出了用户名。现在的输出在a列中列出了组名,但将用户名全部放在B列的一行中 结果是: Col A Col B Group1 {User 1, User 2, User 3} 这就是我想看到的: Col A Col B Group 1 User 1 User 2 User 3 这是我到目前为止的剧本 Get-QA
Col A Col B
Group1 {User 1, User 2, User 3}
这就是我想看到的:
Col A Col B
Group 1 User 1
User 2
User 3
这是我到目前为止的剧本
Get-QADGroup -Name '*Group Name*' | ForEach-Object {
$group = $_
$member = $group | Get-QADGroupMember -IncludedProperties samaccountname -UseDefaultExcludedProperties $true -SizeLimit 0
New-Object -TypeName PSObject -Property @{
Name = $group.Name
EID = $member
}
}
不是您要求的格式,但将按组对成员进行分组: (更新为包含SamAccountName) 如果您真的需要完全符合要求的格式,一种方法是订购,然后跟踪上一组值,如果相同,则将其标记为空,如:
Get-QADGroup -Name '*Application*' | `
% { $group = $_.Name; $_; } | `
Get-QADGroupMember | `
Select-Object @{n='Group';e={$group}}, @{n='Member';e={$_.Name}} | `
Sort-Object Group | `
ForEach-Object {
$currentGroup = $_.Group
if ($currentGroup -eq $previousGroup)
{
$_.Group = [string]::Empty
}
$previousGroup = $currentGroup
Write-Output $_
} | Format-Table
我不认为还有别的办法。{User 1,User 2,User 3}是正常的格式化输出。每一行都是一个新条目,对于group1,只有一个条目。这就是为什么它都在一条线上的原因,最上面的一条工作得很漂亮。还有一个问题。我需要sAMAccount名称与实际用户名一起出现在列表中。我怎么能把这个字段加进去?我想出来了。将最后一小段格式化为“@{n='EID';e={$\u.sAMAccountName}}|排序对象组|格式化表EID,成员-分组”。感谢您的帮助。更新了第一个示例以包括SamAccountName。
Get-QADGroup -Name '*Application*' | `
% { $group = $_.Name; $_; } | `
Get-QADGroupMember | `
Select-Object @{n='Group';e={$group}}, @{n='Member';e={$_.Name}} | `
Sort-Object Group | `
ForEach-Object {
$currentGroup = $_.Group
if ($currentGroup -eq $previousGroup)
{
$_.Group = [string]::Empty
}
$previousGroup = $currentGroup
Write-Output $_
} | Format-Table