I was at a client’s yesterday and wanted to “True Up” SCCM/ConfigMgr’s Collection memberships compared to a spread sheet they had of their servers. Now I’m not an Excel wizard by any stretch of the Imagination! So the client said “Can you get me a CSV with the server names listed”.
The next thing that happened is bellow! It’s really quite a simple script when you think about it. As always comments throughout the script explain what is happening.
Anyway here it is:
################################################################################################################# #Author: Richie Schuster - SCCMOG.COM # #ModdedBy: You Name Here # #Script: Export-CMCollectionMembers # #Date: 23/05/2017 # #Usage: Export-CMCollectionMembers -CollectionIDs S0G000F4,S0G000F2 -SiteCode S0G -CSVout C:\Temp\YourCSV.CSV# #Update: 26/06/2017 - Removed Quotes from output. # ################################################################################################################# #Input Parameters for Script param ( [parameter(mandatory=$true,HelpMessage="Please, provide Collection ID(s). To list more than one Collection ID seprate with , e.g. S0G000F4,S0G000F2")][ValidateNotNullOrEmpty()][String[]]$CollectionIDS, [parameter(mandatory=$true,HelpMessage="Please, provide a SCCM SiteCode. e.g S0G")][ValidateNotNullOrEmpty()][String]$SiteCode, [parameter(mandatory=$true,HelpMessage="Please, provide a location to save the Exported CSV with the filename. e.g C:\Temp\YourCSV.CSV")][ValidateNotNullOrEmpty()][String]$CSVOut ) #Set delimiter for CSV $delimiter = ',' #Import the ConfigurationManager.psd1 module Import-Module "$($ENV:SMS_ADMIN_UI_PATH)\..\ConfigurationManager.psd1" # Set the current location to be the site code. Set-Location "$SiteCode`:" #Loop through Collection Members and add to Variable Foreach ($Collection in $CollectionIDS) { $MembersSep = Get-CMCollectionMember -CollectionId $Collection | Select-Object Name $Members += $MembersSep } #Export to CSV specified removing quotes. $Members | ConvertTo-Csv -Delimiter $delimiter -NoTypeInformation | foreach { $_ -replace '^"','' -replace "`"$delimiter`"",$delimiter -replace '"$','' } | out-file $CSVOut -fo -en ascii #Set Location Back to Script Root Set-Location -Path $PSScriptRoot #################################################################################################################
hello,
Thanks for the script.
I ran the script, but i couldn’t get the results.
when I run the script , its asking for collection ID, which I gave and then it stops at
#Set delimiter for CSV
$delimiter = ‘,’
then what values we have to input in?
Regards
Aj
Worked like a charm, thank you!
Happy Days!
Cheers,
SCCMOG