How to get Variable Data to columns of a CSV - SharePoint Online

%3CLINGO-SUB%20id%3D%22lingo-sub-2404673%22%20slang%3D%22en-US%22%3EHow%20to%20get%20Variable%20Data%20to%20columns%20of%20a%20CSV%20-%20SharePoint%20Online%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2404673%22%20slang%3D%22en-US%22%3E%3CP%3EHi%2C%26nbsp%3B%3C%2FP%3E%3CP%3EI've%20been%20having%20an%20issue%20with%20getting%20data%20from%20variables%20to%20a%20CSV%20file.%20I%20can%20run%20this%20script%20and%20get%20output%20data%20to%20the%20screen%20without%20issue%2C%20but%20I%20cannot%20get%20that%20data%20piped%20or%20written%20to%20rows%20of%20my%20CSV%20file.%20I%20just%20keep%20getting%20a%20CSV%20file%20with%20headers%20and%20blank%20data.%20I've%20tried%20using%26nbsp%3B%3CSTRONG%3EExport-CSV%2C%20Add-Content%3C%2FSTRONG%3E%20and%20now%20I'm%20trying%20to%20use%20an%20Array%20and%20piping%20that%20to%20the%20CSV.%26nbsp%3B%20PLEASE%20HELP!%20I've%20spent%20hours%20and%20days%20trying%20to%20get%20this%20to%20work.%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EBackground%3A%3C%2FP%3E%3CP%3EI've%20left%20the%20cmlets%20and%20comments%20of%20the%20commands%20I%20tried%20but%20are%20not%20working.%26nbsp%3B%3C%2FP%3E%3CP%3EI'm%20running%20the%20PowerShell%20script%20against%20SharePoint%20Online%20and%20all%20site%20collections%20which%20returns%3A%3C%2FP%3E%3CUL%3E%3CLI%3E%24Site.URL%20%3D%20The%20URL%20of%20each%20Site%20Collection%26nbsp%3B%3C%2FLI%3E%3CLI%3E%24Group%20%3D%20The%20SharePoint%20groups%20that%20have%20%22Full%20Control%22%20at%20that%20site%20collection%3C%2FLI%3E%3CLI%3E%24User%20%3D%20The%20members%20of%20users%20email%20in%20that%20group%20What%20does%20the%20script%20do%3C%2FLI%3E%3C%2FUL%3E%3CP%3EMy%20CSV%20file%20has%203%20columns%26nbsp%3B%3C%2FP%3E%3CUL%3E%3CLI%3EGroupName%20(A1)%3C%2FLI%3E%3CLI%3EURL%20(B1)%3C%2FLI%3E%3CLI%3EUsers%20(C1)%3C%2FLI%3E%3C%2FUL%3E%3CPRE%20class%3D%22lia-code-sample%20language-applescript%22%3E%3CCODE%3E%24AdminCenterURL%20%3D%20%22https%3A%5C%5Cmytentant-admin.sharepoint.com%22%0A%24FilePath%20%3D%20%22C%3A%5CScripts%5CPS%5CSharePoint%5CReports%5C%22%0A%24CSVReport%20%3D%20%22Group_UserReport.csv%22%0A%24CSV_OutFile%20%3D%20%24FilePath%20%2B%20%24CSVReport%0AAdd-Content%20-Path%20%24CSV_OutFile%20-Value%20'%22GroupName%22%2C%22URL%22%2C%22Users%22'%0A%23Connect%20to%20SharePoint%20Online%0AConnect-SPOService%20-url%20%24AdminCenterURL%20-Credential%20(Get-Credential)%0A%0A%20%0A%23Get%20all%20Site%20collections%0A%24Sites%20%3D%20Get-SPOSite%20-Limit%20All%0A%0A%23Loop%20through%20site%20collections%0AForEach(%24Site%20in%20%24Sites)%0A%7B%0A%20%20%20%20Write-host%20-f%20Cyan%20%22Searching%20site%3A%20%24(%24Site.URL)%22%0A%20%20%20%20%23Get%20all%20Groups%20from%20the%20site%20permissions%0A%20%20%20%20%24SiteGroups%20%3D%20Get-SPOSiteGroup%20-Site%20%24Site%20%7C%20Where-Object%20%7B%20%24_.Roles%20-ne%20%24NULL%20-and%20%24_.Users%20-ne%20%24NULL%7D%0A%0A%20%20%20%20%23Get%20Group%20info%20and%20members%20that%20have%20site%20owners%20permissions%0A%20%20%20%20ForEach%20(%24Group%20in%20%24SiteGroups)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20If(%24Group.Roles.Contains(%22Full%20Control%22))%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Write-Host%20-f%20Yellow%20%24Group.Title%0A%20%20%20%20%20%20%20%20%20%20%20%20If(0%20-lt%20%24Group.Users.Count)%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23Get%20each%20member%20of%20the%20group%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ForEach(%24User%20in%20%24Group.Users%20%7C%20Where-Object%7B%24_.contains(%22%40%22)%7D)%20%23Exclude%20system%20Users%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23This%20line%20does%20not%20add%20any%20content%20to%20the%20CSV%20File%20(blank%20file%20with%20headers)%20%20%0A%20%20%20%20%20%20%23Add-Content%20-Path%20%24CSV_OutFile%20-Value%20'%24Group.Title%2C%20%24Site.URL%2C%20%24User'%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20write-host%20-f%20Green%20%24User%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20else%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%20I've%20try%20this%20line%20and%20there%20are%20no%20entries%20add%20to%20the%20CVS%20file%20(blank%20file%20with%20just%20headers%0A%20%20%20%20%20%23Add-Content%20-Path%20%24CSV_OutFile%20-Value%20%24Group.Title%2C%20%24Site.URL%2C%20%24User%20%23%20this%20line%20does%20not%20work%20and%20writes%20nothing%20to%20the%20file%20%0A%20%20%20%20%20%0A%20%20%20%20%20%23%20This%20line%20does%20not%20add%20anything%20to%20the%20CSV%20again%20no%20data%20just%20a%20file%20with%20headers.%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23Export-Csv%20-Path%20%24CSV_OutFile%20-OutVariable%20%24Group.Title%2C%20%24Site.URL%2C%20%24User%20-NoTypeInformation%20-Append%0A%20%20%20%20%20%0A%20%20%20%20%20%23%20I%20added%20this%20Array%20to%20see%20if%20I%20can%20get%20data%20because%20the%20line%20above%20is%20blank%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24Group_user_info%20%3D%20%40(%5BPSCustomObject%5D%40%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20GroupName%20%3D%20%24Group.Title%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20URL%20%3D%20%24Site.Url%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20User%20%3D%20%24User%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%23%20This%20next%20line%20does%20not%20seem%20to%20contain%20data%20either.%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%23%24Group_user_info%20%7C%20Export-Csv%20-Path%20%24CSV_OutFile%20-NoTypeInformation%20-Append%0A%20%20%20%20%20%0A%20%20%20%20%20%23%20I%20retried%20this%20line%20again%20and%20tried%20to%20add%20the%20Array%20data%20to%20the%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20Add-Content%20-Path%20%24CSV_OutFile%20-Value%20%24Group_user_info%5B0%5D%2C%20%24Group_user_info%5B1%5D%2C%20%24Group_user_info%5B2%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2404673%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3ESharePoint%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EWindows%20PowerShell%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Senior Member

Hi, 

I've been having an issue with getting data from variables to a CSV file. I can run this script and get output data to the screen without issue, but I cannot get that data piped or written to rows of my CSV file. I just keep getting a CSV file with headers and blank data. I've tried using Export-CSV, Add-Content and now I'm trying to use an Array and piping that to the CSV.  PLEASE HELP! I've spent hours and days trying to get this to work. 

 

Background:

I've left the cmlets and comments of the commands I tried but are not working. 

I'm running the PowerShell script against SharePoint Online and all site collections which returns:

  • $Site.URL = The URL of each Site Collection 
  • $Group = The SharePoint groups that have "Full Control" at that site collection
  • $User = The members of users email in that group What does the script do

My CSV file has 3 columns 

  • GroupName (A1)
  • URL (B1)
  • Users (C1)
$AdminCenterURL = "https:\\mytentant-admin.sharepoint.com"
$FilePath = "C:\Scripts\PS\SharePoint\Reports\"
$CSVReport = "Group_UserReport.csv"
$CSV_OutFile = $FilePath + $CSVReport
Add-Content -Path $CSV_OutFile -Value '"GroupName","URL","Users"'
#Connect to SharePoint Online
Connect-SPOService -url $AdminCenterURL -Credential (Get-Credential)

 
#Get all Site collections
$Sites = Get-SPOSite -Limit All

#Loop through site collections
ForEach($Site in $Sites)
{
    Write-host -f Cyan "Searching site: $($Site.URL)"
    #Get all Groups from the site permissions
    $SiteGroups = Get-SPOSiteGroup -Site $Site | Where-Object { $_.Roles -ne $NULL -and $_.Users -ne $NULL}

    #Get Group info and members that have site owners permissions
    ForEach ($Group in $SiteGroups)
    {
        If($Group.Roles.Contains("Full Control"))
        {
            Write-Host -f Yellow $Group.Title
            If(0 -lt $Group.Users.Count)
            {
                #Get each member of the group
                ForEach($User in $Group.Users | Where-Object{$_.contains("@")}) #Exclude system Users
                {
                  #This line does not add any content to the CSV File (blank file with headers)  
				  #Add-Content -Path $CSV_OutFile -Value '$Group.Title, $Site.URL, $User'
                  write-host -f Green $User
                }
            }    
            else 
            {
              # I've try this line and there are no entries add to the CVS file (blank file with just headers
			  #Add-Content -Path $CSV_OutFile -Value $Group.Title, $Site.URL, $User # this line does not work and writes nothing to the file 
			  
			  # This line does not add anything to the CSV again no data just a file with headers. 
              #Export-Csv -Path $CSV_OutFile -OutVariable $Group.Title, $Site.URL, $User -NoTypeInformation -Append
			  
			  # I added this Array to see if I can get data because the line above is blank
              $Group_user_info = @([PSCustomObject]@{
                GroupName = $Group.Title
                URL = $Site.Url
                User = $User
              })
				# This next line does not seem to contain data either. 
              #$Group_user_info | Export-Csv -Path $CSV_OutFile -NoTypeInformation -Append
			  
			  # I retried this line again and tried to add the Array data to the 
              Add-Content -Path $CSV_OutFile -Value $Group_user_info[0], $Group_user_info[1], $Group_user_info[2]
            }
             
        }
    }
}

 

0 Replies