Files

70 lines
2.2 KiB
PowerShell

<#
.SYNOPSIS
Remove a stored IntuneManagement setting so it falls back to the next level.
.DESCRIPTION
Exported as Remove-IMSetting.
Removing a value is not the same as setting it to nothing: a removed tenant value
reverts to the global value, and a removed global value reverts to the default
the setting was registered with. That is how the settings dialog's per-tenant
checkbox works, and this is the same operation.
Like Set-IMSetting this changes the persistent store unless the session is using
an in-memory one.
.PARAMETER Key
The setting key.
.PARAMETER Scope
Global (default) removes the value every tenant sees, so the setting falls back
to its registered default. Tenant removes the tenant-specific value only,
leaving the global one in place.
.PARAMETER TenantID
The tenant to remove for. Defaults to the connected tenant.
.PARAMETER SubPath
Storage path for a key that is not a registered setting. Required in that case,
reported and ignored for a registered one (its registration decides the path).
.EXAMPLE
Remove-IMSetting ExportFolder -Scope Tenant
Stop overriding the export folder for this tenant; the global value applies again.
.EXAMPLE
Get-IMSetting UseBatchAPI -Detailed
Remove-IMSetting UseBatchAPI
Get-IMSetting UseBatchAPI -Detailed
Source goes from Global back to Default.
.LINK
Set-IMSetting
.LINK
Get-IMSetting
#>
function Remove-Setting
{
[CmdletBinding(SupportsShouldProcess = $true)]
param(
[Parameter(Mandatory = $true, Position = 0)]
[string]$Key,
[ValidateSet("Global", "Tenant")]
[string]$Scope = "Global",
[string]$TenantID,
$SubPath = $null
)
$store = Get-SettingsStoreInfo
$target = if($store.Path) { "$($store.Mode) store at $($store.Path)" } else { "$($store.Mode) store" }
$scopeText = if($Scope -eq "Tenant") { " for tenant scope" } else { "" }
if(-not $PSCmdlet.ShouldProcess($target, "Remove setting '$Key'$scopeText")) { return }
Write-Log "Remove setting '$Key' from the $target$scopeText"
Remove-SettingValue -Key $Key -Tenant:($Scope -eq "Tenant") -TenantID $TenantID -SubPath $SubPath
}