update_skuids.ps1
Remove-Module -Name "CT-PS-UserMgmt" -Force -Verbose:$VerbosePreference -ErrorAction Continue $SKUIDLink = "https://download.microsoft.com/download/e/3/e/e3e9faf2-f28b-490a-9ada-c6089a1fc5b0/Product%20names%20and%20service%20plan%20identifiers%20for%20licensing.csv" $env:CTPSUserMgmtSelfUpdate = "True" $skuidCSV = Invoke-WebRequest -Uri $SKUIDLink -UseBasicParsing # -OutFile "skuids.csv" $SkuidList = ConvertFrom-Csv $skuidCSV $skuids = @() $TotalItems = $SkuidList.Count $CurrentItem = 0 $PercentComplete = 0 $FilePath = "$PSScriptRoot\CT-PS-UserMgmt.psm1" foreach($skuidID in $SkuidList) { Write-Progress -Activity "Compiling O365 Skuids" -Status "$PercentComplete% Complete:" -PercentComplete $PercentComplete $skuidIDName = $skuidID.String_Id.trim() $skuidIDName = $skuidIDName.replace(" ","_") $skuidIDName = $skuidIDName.replace("(","") $skuidIDName = $skuidIDName.replace(")","") $skuidIDName = $skuidIDName.replace("/","") $skuidIDName = $skuidIDName.replace("+","") $skuidIDName = $skuidIDName.replace("`t","") $skuidSPN = "$($skuidID.String_Id.trim())_$($skuidID.Service_Plan_Name.trim())" $skuidSPN = $skuidSPN.replace(" ","_") $skuidSPN = $skuidSPN.replace("(","") $skuidSPN = $skuidSPN.replace(")","") $skuidSPN = $skuidSPN.replace("/","") $skuidSPN = $skuidSPN.replace("+","") $skuidSPN = $skuidSPN.replace("`t","") if (!($skuids | where-object -FilterScript {$_ -in $skuidIDName})) { $skuids += $skuidIDName } if (!($skuids | where-object -FilterScript {$_ -in $skuidSPN})) { $skuids += $skuidSPN } $CurrentItem++ $PercentComplete = [int](($CurrentItem / $TotalItems) * 100) } $skuidreplacement = "#<!-- SKUID START -->`n enum O365skuids`n {`n" foreach($skuid in $skuids){ $skuidreplacement = $skuidreplacement + " $($skuid)`n" } $skuidreplacement = $skuidreplacement + " }`n #<!-- SKUID END -->`n" $allTheText = [System.Io.File]::ReadAllText($FilePath) $FindText = $allTheText | select-string '(?smi)#<!-- SKUID START -->[^!]+<!-- SKUID END -->' | %{ $_.Matches } | %{ $_.Value } $replacedContent = $allTheText.Replace($FindText,$skuidreplacement) $replacedContent | Set-Content -Path "$PSScriptRoot\CT-PS-UserMgmt.psm1" Import-Module -Name "CT-PS-UserMgmt" -Scope Local -Verbose:$VerbosePreference -ErrorAction Stop |