AMSoftware.Dataverse.PowerShell.Administration.psm1
# PowerShell Module for Power Platform Dataverse # Copyright(C) 2024 AMSoftwareNL # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. # .EXTERNALHELP AMSoftware.Dataverse.PowerShell.Administration.psm1-help.xml function Add-DataverseLanguage { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [Alias('Language', 'LCID')] [ValidateRange(1, 99999)] [int]$Locale ) process { Send-DataverseRequest -Name 'ProvisionLanguage' -Parameters @{Language = $Locale } } } # .EXTERNALHELP AMSoftware.Dataverse.PowerShell.Administration.psm1-help.xml function Get-DataverseLanguage { [CmdletBinding()] param ( [Parameter()] [switch]$All ) process { if ($All) { $response = Send-DataverseRequest -Name 'RetrieveAvailableLanguages' $languageIds = $response.LocaleIds } else { $response = Send-DataverseRequest -Name 'RetrieveProvisionedLanguages' $languageIds = $response.RetrieveProvisionedLanguages; } $cultures = $languageIds | Select-Object @{ n = 'Culture'; e = { [System.Globalization.CultureInfo]::GetCultureInfo($_) } } Write-Output $cultures } } # .EXTERNALHELP AMSoftware.Dataverse.PowerShell.Administration.psm1-help.xml function Remove-DataverseLanguage { [CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = 'High')] param ( [Parameter(Mandatory = $true)] [Alias('Language', 'LCID')] [ValidateRange(1, 99999)] [int]$Locale, [switch]$Force ) process { if ($Force -and -not $PSBoundParameters.ContainsKey('Confirm')) { $ConfirmPreference = 'None' } if ($PSCmdlet.ShouldProcess("Deprovision Language ($Locale)", $DataverseClient.ConnectedOrgFriendlyName)) { Send-DataverseRequest -Name 'DeprovisionLanguage' -Parameters @{Language = $Locale } } } } # .EXTERNALHELP AMSoftware.Dataverse.PowerShell.Administration.psm1-help.xml function Export-DataverseTranslation { [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [ValidateNotNull()] [Alias('Name')] [string]$SolutionName, [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string]$OutputPath ) process { $result = Send-DataverseRequest -Name 'ExportTranslation' -Parameters @{'SolutionName' = $SolutionName } New-Item -Path $OutputPath -Name "$($SolutionName).zip" -ItemType File -Value $result.ExportTranslationFile } } # .EXTERNALHELP AMSoftware.Dataverse.PowerShell.Administration.psm1-help.xml function Import-DataverseTranslation { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [Alias('PSPath')] [ValidateNotNullOrEmpty()] [string]$LiteralPath ) process { Send-DataverseRequest -Name 'ImportTranslation' -Parameters @{ 'TranslationFile' = Get-Content -LiteralPath $LiteralPath -Raw 'ImportJobId' = [guid]::Newguid() } } } # .EXTERNALHELP AMSoftware.Dataverse.PowerShell.Administration.psm1-help.xml function Get-DataverseEnvironmentVariableValue { [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Alias('EnvironmentVariable')] [ValidateNotNullOrEmpty()] [string]$Name ) process { Send-DataverseRequest -Name 'RetrieveEnvironmentVariableValue' -Parameters @{ 'DefinitionSchemaName' = $Name } } } # .EXTERNALHELP AMSoftware.Dataverse.PowerShell.Administration.psm1-help.xml function Get-DataverseSPDocumentLocation { [CmdletBinding()] param ( [Parameter(Mandatory = $true, ParameterSetName = 'GetBySharePointDocumentLocation')] [ValidateNotNullOrEmpty()] [guid]$DocumentLocation, [Parameter(Mandatory = $true, ParameterSetName = 'GetByRegardingObject')] [ValidateNotNullOrEmpty()] [guid]$RegardingObject ) process { switch ($PSCmdlet.ParameterSetName) { 'GetBySharePointDocumentLocation' { Send-DataverseRequest -Name 'RetrieveAbsoluteAndSiteCollectionUrl' -TargetTable 'sharepointdocumentlocation' -TargetRow $DocumentLocation } 'GetByRegardingObject' { $documentlocations = Get-DataverseRows -Table 'sharepointdocumentlocation' -Query @{'regardingobjectid' = $RegardingObject } $documentlocations | ForEach-Object { Send-DataverseRequest -Name 'RetrieveAbsoluteAndSiteCollectionUrl' -TargetTable 'sharepointdocumentlocation' -TargetRow $_.Id } } Default {} } } } # .EXTERNALHELP AMSoftware.Dataverse.PowerShell.Administration.psm1-help.xml function Invoke-DataverseWorkflow { [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)] [Alias('Id')] [ValidateNotNullOrEmpty()] [guid]$Row, [Parameter(Mandatory = $true)] [Alias('Process')] [ValidateNotNullOrEmpty()] [guid]$Workflow ) process { Send-DataverseRequest -Name 'ExecuteWorkflow' -Parameters @{ 'EntityId' = $Row; 'WorkflowId' = $Workflow } } } |