Private/Get-ArgusData.ps1
|
function Get-ArgusData { <# .SYNOPSIS Returns a shared tenant data set, fetching it once per run. .DESCRIPTION Data sets (Users, Groups, SubscribedSkus, ...) are fetched by the loader registered in $script:ArgusDataSetLoaders and cached in $script:ArgusDataCache for the rest of the run. Invoke-Argus clears the cache at the start of each run. Loaders are implemented in Phase 4. #> [CmdletBinding()] [OutputType([object])] param( [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [string] $Name, [Parameter()] [switch] $Force ) if (-not $Force -and $script:ArgusDataCache.ContainsKey($Name)) { Write-Output -InputObject $script:ArgusDataCache[$Name] -NoEnumerate return } $loader = $script:ArgusDataSetLoaders[$Name] if ($null -eq $loader) { throw "No loader is registered for data set '$Name'." } Write-Verbose "Loading data set '$Name'." $data = & $loader $script:ArgusDataCache[$Name] = $data Write-Output -InputObject $data -NoEnumerate } |