Modules/AzureDevOpsDsc.Common/Resources/Functions/Public/AzDoOrganizationSettings/Set-AzDoOrganizationSettings.ps1
|
Function Set-AzDoOrganizationSettings { [CmdletBinding()] param ( [Parameter()][string]$OrganizationName, [Parameter()][bool]$AllowPublicProjects, [Parameter()][bool]$AllowExternalGuestAccess, [Parameter()][bool]$EnableOAuthAuthentication, [Parameter()][bool]$EnableSSHAuthentication, [Parameter()][bool]$DisallowAadGuestUserPolicy, [Parameter()][string]$EnableIPConditionalAccessPolicyValidation, [Parameter()][string]$LogAuditEvents, [Parameter()][string]$AllowTeamAdminsToInviteUsers, [Parameter()][string]$EnableRequestAccess, [Parameter()][string]$RequestAccessUrl, [Parameter()][string]$EnableArtifactsFeedUpstreamProtection, [Parameter()][HashTable]$LookupResult, [Parameter()][Ensure]$Ensure, [Parameter()][System.Management.Automation.SwitchParameter]$Force ) Write-Verbose "[Set-AzDoOrganizationSettings] Updating organization settings." $apiUri = 'https://dev.azure.com/{0}/' -f (Get-AzDoOrganizationName) if ($LogAuditEvents -eq 'false') { Write-Warning "[Set-AzDoOrganizationSettings] LogAuditEvents is being set to 'false'. Any AzDoAuditStream configured on this organization will receive no events while auditing is off." } $settings = @{} if ($PSBoundParameters.ContainsKey('AllowPublicProjects')) { $settings['Microsoft.VisualStudio.Services.EnablePublicProjects'] = $AllowPublicProjects.ToString().ToLower() } if ($PSBoundParameters.ContainsKey('AllowExternalGuestAccess')) { $settings['Microsoft.VisualStudio.Services.Security.EnableAADGuestPolicy'] = (!$AllowExternalGuestAccess).ToString().ToLower() } if ($PSBoundParameters.ContainsKey('EnableOAuthAuthentication')) { $settings['Microsoft.VisualStudio.Services.Security.EnableOAuthToken'] = $EnableOAuthAuthentication.ToString().ToLower() } if ($PSBoundParameters.ContainsKey('EnableSSHAuthentication')) { $settings['Microsoft.VisualStudio.Services.Security.EnableSSHPolicy'] = $EnableSSHAuthentication.ToString().ToLower() } if ($PSBoundParameters.ContainsKey('DisallowAadGuestUserPolicy')) { $settings['Microsoft.VisualStudio.Services.Security.DisallowAADGuestUserPolicy'] = $DisallowAadGuestUserPolicy.ToString().ToLower() } if ($settings.Count -gt 0) { $params = @{ ApiUri = $apiUri Settings = $settings } Set-DevOpsOrganizationSettings @params } else { Write-Verbose "[Set-AzDoOrganizationSettings] No host settings to update." } # Organization policies (separate API: PATCH _apis/OrganizationPolicy/Policies/{policyName}). # '' means unmanaged: the policy is left as it is. foreach ($entry in (Get-DevOpsOrganizationPolicyMap)) { $desiredValue = Get-Variable -Name $entry.PropertyName -ValueOnly if ([string]::IsNullOrEmpty($desiredValue)) { continue } $policyParams = @{ ApiUri = $apiUri PolicyName = $entry.PolicyName Value = ($desiredValue -eq 'true') } if ($entry.PropertyName -eq 'EnableRequestAccess' -and $EnableRequestAccess -eq 'true' -and -not [string]::IsNullOrEmpty($RequestAccessUrl)) { $policyParams.Url = $RequestAccessUrl } Set-DevOpsOrganizationPolicy @policyParams } Write-Verbose "[Set-AzDoOrganizationSettings] Organization settings updated." } |