PowerShell - Como dividir uma linha com matriz em várias linhas?

3

Estou escrevendo um script do PowerShell para exportar as informações dos usuários, incluindo o (s) grupo (s) do SharePoint ao qual ele pertence. Parte do script mostra abaixo:

$web = Get-SPWeb $webURL
$users = Get-SPUser -Web $web.Url
foreach($user in $users){
   $staffObject = New-Object PSObject -Property @{
                'UserID' = $user.LoginName
                'Groups' = $user.Groups
                'Join Date' = ""
                'Referal' = ""
            }
$resultsarray += $staffObject 
}

$resultsarray | Select UserID,@{Name="Groups";Expression={$_."Groups" -join '|'}},'Join Date','Referral' | Export-csv -path $sFileLocation -Append -NoTypeInformation

Neste momento, a saída é como:

"UserID","Groups","Join Date","Referal"
"123","Group A|Group B|Group C","",""

Como posso mudar para:

"UserID","Groups","Join Date","Referal"
"123","Group A","",""
"123","Group B","",""
"123","Group C","",""

Muito obrigado.

    
por Mark 26.08.2014 / 03:59

1 resposta

4

Isso ajuda?

$CSV = Import-Csv C:\Users\Ryan\Downloads\test.txt
$ReformattedUsers = @()
Foreach ($User In $CSV)
{
    Foreach ($Group In $User.Groups.Split('|'))
    {
        $ReformattedUsers += [PSCustomObject]@{ 'UserID' = $User.UserID; '
                                                'Groups' = $Group; '
                                                'Join Date' = $User.'Join Date'; '
                                                'Referal (sic)' = $User.Referal  }
    }
}

$ReformattedUsers | Format-Table -AutoSize

$ReformattedUsers | Export-Csv C:\Users\Ryan\Downloads\out.csv -NoTypeInformation

Saída:

UserID Groups  Join Date Referal (sic)
------ ------  --------- -------------
123    Group A                        
123    Group B                        
123    Group C                        

O CSV resultante é semelhante a:

"UserID","Groups","Join Date","Referal (sic)"
"123","Group A","",""
"123","Group B","",""
"123","Group C","",""
    
por 26.08.2014 / 05:04

Tags