newyorkstateofmind newyorkstateofmind - 1 year ago 94
Powershell Question

Output to CSV include commas

The code below is meant to list all members of a specific parent Support Group. I would like separate all of the values in the "Members" array and include those commas in the output to CSV. How can I do so?

Set-ExecutionPolicy Bypass -Force

#Report start of script actions.
Write-Output "Discovering Security Group members..."

# Install Remote Server Administration Tools if not already installed.
if (!(Get-Module -ListAvailable -Name ActiveDirectory)) {
Install-WindowsFeature RSAT-AD-PowerShell

# Import the ActiveDirectory module.
Import-Module ActiveDirectory

#Prevent truncated output of objects in the Members array.
$FormatEnumerationLimit = -1

#Define the Export-CSV output location.
$OutputFile = "$home\Desktop\Web_Filtering_Group_memberships_" + (Get-Date -Format "M.d.yyyy-HHmm") + ".csv"

#Prevent truncated output of arrays.
$FormatEnumerationLimit = -1

#Discovering Security Group members.
Get-ADGroup -SearchBase 'OU=Parent Group,OU=Security Groups,DC=domain,DC=com' -Filter * -Properties * |
Select-Object -Property Name, Description, GroupCategory,
Get-ADGroupMember $_.SamAccountName | Select -ExpandProperty SamAccountName
}} |
Export-CSV -NoTypeInformation $OutputFile

#Report end of script actions.
Write-Output "Discovery of all Web Filtering Group members is complete. Output saved to: $OutputFile"

Answer Source

Simply join the members to a comma-separated string:

... | Select-Object Name,Description,GroupCategory,@{n='Members';e={
  (Get-ADGroupMember $_.SamAccountName | Select -Expand SamAccountName) -join ','
}} | Export-Csv ...

Export-Csv puts all exported fields in double quotes, so you'll get an output like this:


Nested commas in string values are valid CSV.