src/Private/SharePoint/Add-NewTenant.ps1
|
$environments = "Production", "PPE", "China", "Germany", "USGovernment", "USGovernmentHigh", "USGovernmentDoD", "BleuCloud", "DelosCloud", "GovSGCloud", "Custom" function Add-NewTenant { param ( [Parameter(Mandatory = $true)] $settingsFilePath ) try { $settings = Get-Content $settingsFilePath | ConvertFrom-Json Write-Host "No tenant found. Please add a new tenant." $newTenantName = Read-Host "Enter the tenant name" $newTenantId = Read-Host "Enter the tenant ID" $newTenantRootHost = Read-Host "Enter the tenant host (contoso.sharepoint.com)" $newClientId = Read-Host "Enter the client id" $normalizedRootHost = (($newTenantRootHost -replace "^https?://", "") -split "/")[0].Trim() $tenantName = ($normalizedRootHost -replace "(?i)(?:-admin|-my)?\.sharepoint\..*$", "").TrimEnd('.', '/') $tld = if ($normalizedRootHost -match "(?i)sharepoint\.(.+)$") { "sharepoint.$($Matches[1])" } else { "sharepoint.com" } $x = 0 $environments | ForEach-Object { Write-Host "$($x). $_" $x++ } $environment = Read-Host "Enter the environment (0-$($environments.Count - 1))" if ((-not $environment) -or ($environment -lt 0 -or $environment -ge $environments.Count)) { $environment = 0 } $newTenant = @{ id = ($settings.SharePoint.Count).ToString() name = $newTenantName tenantId = $newTenantId url = @("$($tenantName).$tld", "$($tenantName)-admin.$tld", "$($tenantName)-my.$tld") clientId = $newClientId environment = $environments[$environment] } $settings.SharePoint += $newTenant $settings | ConvertTo-Json -Depth 3 | Set-Content -Path $settingsFilePath Write-Host "Tenant added successfully" Write-Host "" } catch { Write-Host "An error occurred: $_" throw $_ } } function Remove-Tenant { param ( [Parameter(Mandatory = $true)] $settingsFilePath ) $settings = Get-Content $settingsFilePath | ConvertFrom-Json $tenantId = Read-Host "Enter Tenant ID to remove" $confirmVal = Read-Host "Are you sure you want to remove the tenant $($settings.SharePoint[$tenantId].name)? (y/n)" if ($confirmVal.ToLower() -eq 'y') { $x = 0 $settings.SharePoint = $settings.SharePoint | Where-Object { $_.id -ne $tenantId.ToString() } $settings.SharePoint | ForEach-Object { $_.id = $x.ToString() $x++ } $settings | ConvertTo-Json -Depth 3 | Set-Content -Path $settingsFilePath Write-Host "Tenant removed successfully" } else { Write-Host "Action Cancelled" } } function Update-Tenant { param ( [Parameter(Mandatory = $true)] $settingsFilePath ) $settings = Get-Content $settingsFilePath | ConvertFrom-Json $tenantId = Read-Host "Enter Tenant ID to update" Write-Host -ForegroundColor Yellow "Leave blank to keep the existing value" $newTenantName = Read-Host "Enter the tenant name ($($settings.SharePoint[$tenantId].name))" $newTenantAdminHost = Read-Host "Enter the tenant admin host ($($settings.SharePoint[$tenantId].url[0]))" $newTenantRootHost = Read-Host "Enter the tenant root host ($($settings.SharePoint[$tenantId].url[1]))" $newClientId = Read-Host "Enter the client id ($($settings.SharePoint[$tenantId].clientId))" $confirmVal = Read-Host "Are you sure you want to update the tenant $($settings.SharePoint[$tenantId].name)? (y/n)" if ($confirmVal.ToLower() -eq 'y') { $settings.SharePoint[$tenantId].name = if ($newTenantName) { $newTenantName } else { $settings.SharePoint[$tenantId].name } $settings.SharePoint[$tenantId].url[0] = if ($newTenantAdminHost) { $newTenantAdminHost } else { $settings.SharePoint[$tenantId].url[0] } $settings.SharePoint[$tenantId].url[1] = if ($newTenantRootHost) { $newTenantRootHost } else { $settings.SharePoint[$tenantId].url[1] } $settings.SharePoint[$tenantId].clientId = if ($newClientId) { $newClientId } else { $settings.SharePoint[$tenantId].clientId } $settings | ConvertTo-Json -Depth 3 | Set-Content -Path $settingsFilePath Write-Host "Tenant updated successfully" } else { Write-Host "Action Cancelled" } } # SIG # Begin signature block # MIIHMAYJKoZIhvcNAQcCoIIHITCCBx0CAQExDzANBglghkgBZQMEAgEFADB5Bgor # BgEEAYI3AgEEoGswaTA0BgorBgEEAYI3AgEeMCYCAwEAAAQQH8w7YFlLCE63JNLG # KX7zUQIBAAIBAAIBAAIBAAIBADAxMA0GCWCGSAFlAwQCAQUABCD8J3VUVmy/dKjI # jaMe/oWCEIN7elzZbsjuYZ8l5rtUf6CCBBwwggQYMIICgKADAgECAhBH6tQY1Crt # r02dueiKibmNMA0GCSqGSIb3DQEBCwUAMCQxIjAgBgNVBAMMGU0zNjUuVG9vbGtp # dCBDb2RlIFNpZ25pbmcwHhcNMjYwNzE2MTY1NjE0WhcNMjcwNzE2MTcwNjEzWjAk # MSIwIAYDVQQDDBlNMzY1LlRvb2xraXQgQ29kZSBTaWduaW5nMIIBojANBgkqhkiG # 9w0BAQEFAAOCAY8AMIIBigKCAYEAxQCBRWJ923yIy73AwGWtFvfBL/dZHvwCBO05 # dJopbkHGcCqifl9R21PXr5OIjcEFv16ObYL23cPwZaNKCiejuiU32MHwidYHU1k5 # AzFpjwW2uwjeA7Hip3cURwoeOH/LzNa/xNTBRiO70M7gunZCm+FixDcPKf66Tvb1 # iM6pbOFmJvzbGjFqKM6mQRofaCPU89SHW5y43HyZNdiWsJTN4TsWj96Rps4fKhh2 # gToexqi0GhLHhLtVQ8ZxMic6w0C9sCWhYBl3kw1OJdaa/MVBdVAXDOIL0HIG8jOa # l1x67U1LihXEw1hdc3YabhvSYZ5ZXPV1AZ2z6+Qa0EL9XlJWqBkn0rO6sZB1IkOo # gfeTxVuI6SjhqpW6QrAFFJzb81qd0dDWmmuVka1yoWEic7naZpDfuh3JZPOUilE1 # Wv3qhBDYN5qg1qXeh0RMosR8rMfKjE8CFvsB7LTibom+22in1x16vmIiv9ep5HNc # eS0hRa/84+vmXQ8R6hN8x+oWbG8NAgMBAAGjRjBEMA4GA1UdDwEB/wQEAwIHgDAT # BgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUu9RWiOCtUYtlrLgwzVDsor7P # p88wDQYJKoZIhvcNAQELBQADggGBAKJksJX6tgjdng//9wRM2ztQn8breDnY/Zki # 8iXrC94sqCYoYg1lT0pVHZq1ZHpdUNh/xQnjP9asbIqgUt0YiCIASCONV2nM2wyK # VjrvxaC08xefuHiO/R6Uc9sDW38mID+gDoAmswmB9JV5qm+j8b4hw3vcwuUe3nla # 5bn3YoKXLY4/YJjHNA62TmhYNfs7iwdk2vyH/dCvD35LdBhP/y2ChmOxzI1aSp4L # c65zCFVDPzw1IED/5q9NM48QUVDgVAX6VNuocjXZpWd7fHf7KFLRJSExXtaYQCdk # hBSITzd5WBT2opKF02TrTyc5h1zCTr6HU+1Eqr92fvEGfqk4yYSt4plyqbm6Unnq # gEgwDqlgm9ZNA8hzorcoxSetVVZ8z+50KB55JRTENZ/5kOJWzPtoIA+PdmFvg3wU # jQHhO6C32rdVUk+j1hI1zL6sR8gYn5VmLPVjfs49yKf+2t3iDsaYVRNawOqHrMZj # g59c2M2hT5D6krLsI8r3F/t3YfHbKjGCAmowggJmAgEBMDgwJDEiMCAGA1UEAwwZ # TTM2NS5Ub29sa2l0IENvZGUgU2lnbmluZwIQR+rUGNQq7a9Nnbnoiom5jTANBglg # hkgBZQMEAgEFAKCBhDAYBgorBgEEAYI3AgEMMQowCKACgAChAoAAMBkGCSqGSIb3 # DQEJAzEMBgorBgEEAYI3AgEEMBwGCisGAQQBgjcCAQsxDjAMBgorBgEEAYI3AgEV # MC8GCSqGSIb3DQEJBDEiBCDm71YMc4UZbLcb/xzJTEV+eGc5Hv3m4Yp1Yk+rf9Fo # lzANBgkqhkiG9w0BAQEFAASCAYB64eLP4gs0a0WYZwFt2Uf2V7DQEBYQeYbVy3KN # NeEGM90TdMu2Ori+HV7ptZg3JqE2H9pz9Y1Uyki11TZQ2WJvIXDNVOIscb/oPIGM # lxG7XuNQyzEt6wU1Nih2vTxhGQHFXGZIx5nY485CBSp5ZnCIxXoGJG6sgLJ7wnIW # LIOZspjfTpU4sEzskhtkfgQgeicJ31lkmGt0TRipN6WZTDqlwbRbU5enGsR6lbJD # pfoaGsLu9x8KxiY3gvGsyC7IaG5wzr/W4xzD9caIkZVt1rkh/V9AEU/0JPNZCUiH # Iyz7m9qvoECk2o6T0PmdzxF4yLWEwKJBw4Zq/vj1uQsha8O4rB6Z1fPPsQz5D4pB # qhLvHdDZUSPmDj7YK7KZIs4zNR1p4Tpbaatw5uFW08AJfX2X7bkgd+f/5sZtCM5B # N3B9mk0e0ku0IRGar3bDOxqYss/Cw9VwbeHMGZRRYqmWDCzp+jiKUytvF0sZ4avq # 8PmCPlaOz2TgLIq1P11kfF8p8rc= # SIG # End signature block |