functions/crossTenantAccess/crossTenantAccessPolicy/Export-TmfCrossTenantAccessPolicy.ps1
|
<#
.SYNOPSIS Retrieves the crossTenantAccessPolicy singleton (v1.0 by default; beta with -ForceBeta or fallback) and maps key properties to a TMF object. Returns object unless -OutPath supplied. (Legacy alias: -OutPutPath) .PARAMETER SpecificResources Ignored (singleton) but accepted for consistency; wildcard accepted. .PARAMETER OutPath Root folder to write export; when omitted the object is returned. (Legacy alias: -OutPutPath) .PARAMETER Append Add content to existing file .PARAMETER ForceBeta Use beta endpoint (always) or as fallback when v1.0 retrieval fails. .PARAMETER Cmdlet Internal pipeline parameter; do not supply manually. .EXAMPLE Export-TmfCrossTenantAccessPolicy -OutPath C:\tmf .EXAMPLE Export-TmfCrossTenantAccessPolicy | ConvertTo-Json -Depth 15 #> function Export-TmfCrossTenantAccessPolicy { [CmdletBinding()] param( [string[]] $SpecificResources, [Alias('OutPutPath')] [string] $OutPath, [switch] $Append, [switch] $ForceBeta, [System.Management.Automation.PSCmdlet] $Cmdlet = $PSCmdlet ) begin { Test-GraphConnection -Cmdlet $Cmdlet $resourceName = 'crossTenantAccessPolicy' $policy = $null; $usedBeta = $false; $exports = @() } process { if (-not $ForceBeta) { try { $policy = Invoke-MgGraphRequest -Method GET -Uri "$script:graphBaseUrl1/policies/crossTenantAccessPolicy" } catch { Write-PSFMessage -Level Verbose -Message ('v1.0 retrieval failed: {0}' -f $_.Exception.Message) } } if ($ForceBeta -or -not $policy) { try { $policy = Invoke-MgGraphRequest -Method GET -Uri "$script:graphBaseUrlbeta/policies/crossTenantAccessPolicy"; $usedBeta = $true } catch { Write-PSFMessage -Level Verbose -Message ('beta retrieval failed: {0}' -f $_.Exception.Message) } } if ($policy) { $policy.PSObject.Properties.Remove('@odata.context') | Out-Null $obj = [ordered]@{ present = $true; displayName = 'CrossTenantAccessPolicy' } if ($policy.allowedCloudEndpoints) { $obj.allowedCloudEndpoints = $policy.allowedCloudEndpoints } $exports = @([pscustomobject]$obj) Write-PSFMessage -Level Verbose -FunctionName 'Export-TmfCrossTenantAccessPolicy' -Message ("Exporting cross-tenant access policy. ForceBeta={0} UsedBeta={1}" -f $ForceBeta, $usedBeta) } } end { if ($OutPath) { if ($exports.Count -gt 0) { if ($Append) { Write-TmfExportFile -OutPath $OutPath -ParentPath 'crossTenantAccess' -ResourceName $resourceName -Data $exports -Append } else { Write-TmfExportFile -OutPath $OutPath -ParentPath 'crossTenantAccess' -ResourceName $resourceName -Data $exports } } } else { return $exports } } } |