Microsoft PowerToys › PowerToys Run
Configure enabled state for individual plugins
Supported on PowerToys version 0.75.0 or later
What it does
With this policy you can configure an individual enabled state for each PowerToys Run plugin that you add to the list. If you enable this setting, you can define the list of plugins and their enabled states: - The value name (first column) is the plugin ID. You will find it in the plugin.json file which is located in the plugin folder. - The value (second column) is a numeric value: 0 for disabled, 1 for enabled and 2 for user takes control. - Example to disable the Program plugin: 791FC278BA414111B8D1886DFE447410 | 0 If you disable or don't configure this policy, either the user or the policy "Configure enabled state for all plugins" takes control over the enabled state of the plugins. You can set the enabled state for all plugins not configured by this policy using the policy "Configure enabled state for all plugins". Note: Changes require a restart of PowerToys Run.
What it writes
- Hive
- HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
- Registry key
Software\Policies\PowerToys\PowerLauncherIndividualPluginEnabledList
Options
| Option | Type | Registry value | Allowed values |
|---|---|---|---|
| List of managed plugins | List of values | |
Name and value pairs |
Configure and deploy
Choose a state and the option values; the output below is generated from the template for exactly that.
Enabled · Computer · template defaults
Registry file (.reg)
Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\Software\Policies\PowerToys\PowerLauncherIndividualPluginEnabledList]
PowerShell
$ErrorActionPreference = 'Stop'
function Set-RegistryValue {
param(
[Parameter(Mandatory = $true)][string] $Path,
[Parameter(Mandatory = $true)][string] $Name,
[Parameter(Mandatory = $true)][string] $PropertyType,
[Parameter(Mandatory = $true)][object] $Value
)
if (-not (Test-Path -LiteralPath $Path)) {
New-Item -Path $Path -Force | Out-Null
}
New-ItemProperty -LiteralPath $Path -Name $Name -PropertyType $PropertyType -Value $Value -Force | Out-Null
}
function Remove-RegistryValue {
param(
[Parameter(Mandatory = $true)][string] $Path,
[Parameter(Mandatory = $true)][string] $Name
)
if (Test-Path -LiteralPath $Path) {
Remove-ItemProperty -LiteralPath $Path -Name $Name -Force -ErrorAction SilentlyContinue
}
}
function Clear-RegistryKeyValues {
param(
[Parameter(Mandatory = $true)][string] $Path
)
if (-not (Test-Path -LiteralPath $Path)) {
return
}
foreach ($propertyName in (Get-Item -LiteralPath $Path).Property) {
Remove-ItemProperty -LiteralPath $Path -Name $propertyName -Force -ErrorAction SilentlyContinue
}
}
# Policy: Configure enabled state for individual plugins
# Name: PowerToysRunIndividualPluginEnabledState
# Scope: Machine
# State: Enabled
# Source: PowerToys.admx
Clear-RegistryKeyValues -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Policies\PowerToys\PowerLauncherIndividualPluginEnabledList'
- The OMA-URI is an inferred ADMX-backed Policy CSP candidate derived from the source ADMX file name and policy name.
- Some Microsoft policies use built-in Policy CSP pages whose area names don't match the ADMX file name, so verify the candidate against Microsoft Learn before deployment.
- The generated payload is incomplete because one or more ADMX element values were not supplied: PowerToysRunIndividualPluginEnabledList
ADMX profile candidate (OMA-URI)
./Device/Vendor/MSFT/Policy/Config/ADMX_PowerToys/PowerToysRunIndividualPluginEnabledStateIntune remediation scripts
Detection
$ErrorActionPreference = 'Stop'
$reasons = [System.Collections.Generic.List[string]]::new()
function Test-RegistryValueExists {
param(
[Parameter(Mandatory = $true)][string] $Path,
[Parameter(Mandatory = $true)][string] $Name
)
if (-not (Test-Path -LiteralPath $Path)) {
return $false
}
return $null -ne (Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction SilentlyContinue)
}
function Test-RegistryValueEquals {
param(
[Parameter(Mandatory = $true)][string] $Path,
[Parameter(Mandatory = $true)][string] $Name,
[Parameter(Mandatory = $true)][string] $Kind,
[Parameter(Mandatory = $true)][object] $Expected
)
if (-not (Test-Path -LiteralPath $Path)) {
return $false
}
$valueObject = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction SilentlyContinue
if ($null -eq $valueObject) {
return $false
}
$actual = $valueObject.$Name
switch ($Kind) {
'String' { return [string]$actual -ceq [string]$Expected }
'ExpandString' { return [string]$actual -ceq [string]$Expected }
'DWord' { return [uint32]$actual -eq [uint32]$Expected }
'QWord' { return [uint64]$actual -eq [uint64]$Expected }
'MultiString' {
$actualArray = @($actual)
$expectedArray = @($Expected)
if ($actualArray.Count -ne $expectedArray.Count) { return $false }
for ($index = 0; $index -lt $actualArray.Count; $index++) {
if ([string]$actualArray[$index] -cne [string]$expectedArray[$index]) { return $false }
}
return $true
}
'Binary' {
$actualArray = [byte[]]$actual
$expectedArray = [byte[]]$Expected
if ($actualArray.Length -ne $expectedArray.Length) { return $false }
for ($index = 0; $index -lt $actualArray.Length; $index++) {
if ($actualArray[$index] -ne $expectedArray[$index]) { return $false }
}
return $true
}
default { return [string]$actual -ceq [string]$Expected }
}
}
# Policy: Configure enabled state for individual plugins
# Name: PowerToysRunIndividualPluginEnabledState
# Scope: Machine
# State: Enabled
# Source: PowerToys.admx
$keyPath = 'Registry::HKEY_LOCAL_MACHINE\Software\Policies\PowerToys\PowerLauncherIndividualPluginEnabledList'
if (Test-Path -LiteralPath $keyPath) {
$propertyNames = (Get-Item -LiteralPath $keyPath).Property
if ($propertyNames.Count -gt 0) {
$reasons.Add('Key should be empty: HKEY_LOCAL_MACHINE\Software\Policies\PowerToys\PowerLauncherIndividualPluginEnabledList') | Out-Null
}
}
if ($reasons.Count -eq 0) {
Write-Output 'Compliant'
exit 0
}
$reasons | ForEach-Object { Write-Output $_ }
exit 1
Remediation
$ErrorActionPreference = 'Stop'
function Set-RegistryValue {
param(
[Parameter(Mandatory = $true)][string] $Path,
[Parameter(Mandatory = $true)][string] $Name,
[Parameter(Mandatory = $true)][string] $PropertyType,
[Parameter(Mandatory = $true)][object] $Value
)
if (-not (Test-Path -LiteralPath $Path)) {
New-Item -Path $Path -Force | Out-Null
}
New-ItemProperty -LiteralPath $Path -Name $Name -PropertyType $PropertyType -Value $Value -Force | Out-Null
}
function Remove-RegistryValue {
param(
[Parameter(Mandatory = $true)][string] $Path,
[Parameter(Mandatory = $true)][string] $Name
)
if (Test-Path -LiteralPath $Path) {
Remove-ItemProperty -LiteralPath $Path -Name $Name -Force -ErrorAction SilentlyContinue
}
}
function Clear-RegistryKeyValues {
param(
[Parameter(Mandatory = $true)][string] $Path
)
if (-not (Test-Path -LiteralPath $Path)) {
return
}
foreach ($propertyName in (Get-Item -LiteralPath $Path).Property) {
Remove-ItemProperty -LiteralPath $Path -Name $propertyName -Force -ErrorAction SilentlyContinue
}
}
# Policy: Configure enabled state for individual plugins
# Name: PowerToysRunIndividualPluginEnabledState
# Scope: Machine
# State: Enabled
# Source: PowerToys.admx
Clear-RegistryKeyValues -Path 'Registry::HKEY_LOCAL_MACHINE\Software\Policies\PowerToys\PowerLauncherIndividualPluginEnabledList'
History 63 retained releases
- 0.81.021 May 2024
- Template definition changed; registry values, options and limits are the same.
- 0.76.04 Dec 2023
- Description
With this policy you can configure
[removed: s]an individual enabled state for each PowerToys Run plugin that you add … column) is the plugin ID. You will find it in the plugin.json [added: file ]which is located in the plugin folder. - The value (second column) … the plugins. You can set the enabled state for all plugins not[removed: listed here][added: configured by this policy] using the policy "Configure enabled state for all plugins". Note: Changes require …Whole description, marked
With this policy you can configure
[removed: s]an individual enabled state for each PowerToys Run plugin that you add to the list. If you enable this setting, you can define the list of plugins and their enabled states: - The value name (first column) is the plugin ID. You will find it in the plugin.json [added: file ]which is located in the plugin folder. - The value (second column) is a numeric value: 0 for disabled, 1 for enabled and 2 for user takes control. - Example to disable the Program plugin: 791FC278BA414111B8D1886DFE447410 | 0 If you disable or don't configure this policy, either the user or the policy "Configure enabled state for all plugins" takes control over the enabled state of the plugins. You can set the enabled state for all plugins not[removed: listed here][added: configured by this policy] using the policy "Configure enabled state for all plugins". Note: Changes require a restart of PowerToys Run.
- Description
With this policy you can configure
- 0.75.030 Oct 2023
- Added in this release.
44 later releases left it unchanged.
Template
- Internal name
PowerToysRunIndividualPluginEnabledState- Namespace
Microsoft.Policies.PowerToys- Template file
PowerToys.admx- Release
- Microsoft PowerToys 0.101.2362.0 · file set
d5e4003f3cfc59f8…
Definition, editor controls and support
Definition
<policy class="Both" displayName="$(string.PowerToysRunIndividualPluginEnabledState)" explainText="$(string.PowerToysRunIndividualPluginEnabledStateDescription)" key="Software\Policies\PowerToys\PowerLauncherIndividualPluginEnabledList" name="PowerToysRunIndividualPluginEnabledState" presentation="$(presentation.PowerToysRunIndividualPluginEnabledState)" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="Microsoft.Policies.PowerToys:PowerToysRun" />
<supportedOn ref="Microsoft.Policies.PowerToys:SUPPORTED_POWERTOYS_0_75_0" />
<elements>
<list explicitValue="true" id="PowerToysRunIndividualPluginEnabledList" />
</elements>
</policy>Editor controls
<presentation id="PowerToysRunIndividualPluginEnabledState" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<listBox refId="PowerToysRunIndividualPluginEnabledList">List of managed plugins:</listBox>
</presentation>Supported platforms and category
Microsoft.Policies.PowerToys:category:PowerToys
<category displayName="$(string.PowerToys)" name="PowerToys" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
Microsoft.Policies.PowerToys:category:PowerToysRun
<category displayName="$(string.PowerToysRun)" name="PowerToysRun" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="Microsoft.Policies.PowerToys:PowerToys" />
</category>
Microsoft.Policies.PowerToys:definition:SUPPORTED_POWERTOYS_0_75_0
<definition displayName="$(string.SUPPORTED_POWERTOYS_0_75_0)" name="SUPPORTED_POWERTOYS_0_75_0" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
Microsoft.Policies.PowerToys:category:PowerToys
<category displayName="$(string.PowerToys)" name="PowerToys" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
<strings><string id="Microsoft.Policies.PowerToys:PowerToys">Microsoft PowerToys</string></strings>
Microsoft.Policies.PowerToys:category:PowerToysRun
<category displayName="$(string.PowerToysRun)" name="PowerToysRun" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
<parentCategory ref="Microsoft.Policies.PowerToys:PowerToys" />
</category>
<strings><string id="Microsoft.Policies.PowerToys:PowerToysRun">PowerToys Run</string></strings>
Microsoft.Policies.PowerToys:definition:SUPPORTED_POWERTOYS_0_75_0
<definition displayName="$(string.SUPPORTED_POWERTOYS_0_75_0)" name="SUPPORTED_POWERTOYS_0_75_0" xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" />
<strings><string id="Microsoft.Policies.PowerToys:SUPPORTED_POWERTOYS_0_75_0">PowerToys version 0.75.0 or later</string></strings>