次の方法で共有


about_Registry_Provider

プロバイダー名

レジストリ

ドライブ

HKLM:, HKCU:

機能

ShouldProcessUseTransactions

簡単な説明

PowerShell のレジストリ キー、エントリ、および値へのアクセスを提供します。

詳しい説明

この情報は、Windows で実行されている PowerShell にのみ適用されます。

PowerShell Registry プロバイダーを使用すると、PowerShell でレジストリ キー、エントリ、値を取得、追加、変更、クリア、および削除できます。

Registry ドライブは、コンピューター上のレジストリ キーとサブキーを含む階層型名前空間です。 レジストリ エントリと値は、その階層のコンポーネントではありません。 代わりに、各キーのプロパティです。

Registry プロバイダーでは、次のコマンドレットがサポートされています。

このプロバイダーによって公開される型

Registry プロバイダーは、次の 2 種類のいずれかでレジストリ データを返します。

Registry プロバイダーは、データ ストアを 2 つの既定のドライブとして公開します。

  • HKLM:HKEY_LOCAL_MACHINE レジストリ ハイブにマップされます
  • HKCU:HKEY_CURRENT_USER レジストリ ハイブにマップされます

レジストリを操作するには、次のコマンドを使用して、場所を HKLM: ドライブに変更します。

Set-Location HKLM:

ファイル システム ドライブに戻るには、ドライブ名を入力します。 たとえば、次のように入力します。

Set-Location C:

他の PowerShell ドライブから Registry プロバイダーを操作することもできます。 別の場所からレジストリ キーを参照するには、パスのドライブ名 (HKLM:HKCU:) を使用します。 バックスラッシュ (\) またはスラッシュ (/) を使用して、 Registry ドライブのレベルを示します。

PS C:\> cd HKLM:\Software

Note

PowerShell ではエイリアスを使用して、プロバイダー パスを使い慣れた方法で操作できます。 dirlsなどのコマンドは、Get-ChildItem のエイリアスcdSet-Location のエイリアス、pwdGet-Location のエイリアスです。

この最後の例では、 Registry プロバイダー内を移動するために使用できる別のパス構文を示します。 この構文では、プロバイダー名を使用し、その後に 2 つのコロンを ::します。 この構文を使用すると、マップされたドライブ名 HKLMではなく、完全な HIVE 名を使用できます。

cd "Registry::HKEY_LOCAL_MACHINE\Software"

レジストリ キーの内容の表示

レジストリは、キー、サブキー、およびエントリに分割されます。 レジストリ構造の詳細については、「 レジストリの構造を参照してください。

Registry ドライブでは、各キーはコンテナーです。 キーには任意の数のキーを含めることができます。 親キーを持つレジストリ キーは、サブキーと呼ばれます。 Get-ChildItemを使用してレジストリ キーを表示し、Set-Locationキー パスに移動できます。

レジストリ値は、レジストリ キーの属性です。 Registry ドライブでは、Item プロパティと呼ばれます。 レジストリ キーには、子キーと項目プロパティの両方を含めることができます。

この例では、 Get-ItemGet-ChildItem の違いを示します。 "Spooler" レジストリ キーで Get-Item を使用すると、そのプロパティを表示できます。

Get-Item -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services


Name        Property
----        --------
Spooler     DependOnService    : {RPCSS, http}
            Description        : @%systemroot%\system32\spoolsv.exe,-2
            DisplayName        : @%systemroot%\system32\spoolsv.exe,-1
            ErrorControl       : 1
            FailureActions     : {16, 14, 0, 0...}
            Group              : SpoolerGroup
            ImagePath          : C:\WINDOWS\System32\spoolsv.exe
            ObjectName         : LocalSystem
            RequiredPrivileges : {SeTcbPrivilege, SeImpersonatePrivilege, ...
            ServiceSidType     : 1
            Start              : 2
            Type               : 27

各レジストリ キーには、サブキーを含めることもできます。 レジストリ キーで Get-Item を使用すると、サブキーは表示されません。 Get-ChildItem コマンドレットには、各サブキーのプロパティを含む "Spooler" キーのサブキーが表示されます。 Get-ChildItemを使用する場合、親キーのプロパティは表示されません。

Get-ChildItem -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler


Name             Property
----             --------
Performance      Close           : PerfClose
                 Collect         : PerfCollect
                 Collect Timeout : 2000
                 Library         : C:\Windows\System32\winspool.drv
                 Object List     : 1450
                 Open            : PerfOpen
                 Open Timeout    : 4000
Security         Security : {1, 0, 20, 128...}

Get-Item コマンドレットは、現在の場所でも使用できます。 次の例では、"Spooler" レジストリ キーに移動し、項目のプロパティを取得します。 ドット . は、現在の場所を示すために使用されます。

cd HKLM:\System\CurrentControlSet\Services\Spooler
Get-Item .
    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Name             Property
----             --------
Spooler          DependOnService    : {RPCSS, http}
                 Description        : @%systemroot%\system32\spoolsv.exe,-2
...

このセクションで説明するコマンドレットの詳細については、次の記事を参照してください。

-Get-Item -Get-ChildItem

レジストリ キー値の表示

レジストリ キーの値は、各レジストリ キーのプロパティとして格納されます。 Get-ItemProperty コマンドレットは、指定した名前を使用してレジストリ キーのプロパティを表示します。 結果は、指定したプロパティを含む PSCustomObject になります。

次の例では、 Get-ItemProperty コマンドレットを使用してすべてのプロパティを表示します。 結果のオブジェクトを変数に格納すると、目的のプロパティ値にアクセスできます。

$p = Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Spooler
$p.DependOnService
RPCSS
http

-Name パラメーターの値を指定すると、指定したプロパティが選択され、PSCustomObject が返されます。 次の例は、 -Name パラメーターを使用する場合の出力の違いを示しています。

Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Wbem
BUILD                      : 17134.1
Installation Directory     : C:\WINDOWS\system32\WBEM
MOF Self-Install Directory : C:\WINDOWS\system32\WBEM\MOF
PSPath                     : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
PSParentPath               : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName                : Wbem
PSDrive                    : HKLM
PSProvider                 : Microsoft.PowerShell.Core\Registry
Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
BUILD        : 17134.1
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Wbem
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
PSChildName  : Wbem
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry

PowerShell 5.0 以降、 Get-ItemPropertyValue コマンドレットは指定したプロパティの値のみを返します。

Get-ItemPropertyValue -Path HKLM:\SOFTWARE\Microsoft\Wbem -Name BUILD
17134.1

このセクションで使用されるコマンドレットの詳細については、次の記事を参照してください。

レジストリ キーの値の変更

Set-ItemProperty コマンドレットは、レジストリ キーに関連付けられているレジストリ値を設定します。 次の例では、 Set-ItemProperty を使用して、スプーラー サービスの開始の種類を手動に変更します。 この例では、Set-Service コマンドレットを使用してStartTypeAutomaticに戻します。

Get-Service spooler | Select-Object Name, StartMode
Name    StartType
----    ---------
spooler Automatic
$path = "HKLM:\SYSTEM\CurrentControlSet\Services\Spooler\"
Set-ItemProperty -Path $path -Name Start -Value 3
Get-Service spooler | Select-Object Name, StartMode
Name    StartType
----    ---------
spooler    Manual
Set-Service -Name Spooler -StartupType Automatic

各レジストリ キーには、 default 値があります。 レジストリ キーの default 値は、 Set-Item または Set-ItemPropertyで変更できます。

Set-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name "(default)" -Value "one"
Set-Item -Path HKLM:\SOFTWARE\Contoso -Value "two"

このセクションで使用されるコマンドレットの詳細については、次の記事を参照してください。

レジストリ キーと値の作成

New-Item コマンドレットは、指定した名前を持つ新しいレジストリ キーを作成します。 New-Item コマンドレットを内部的に呼び出すmkdir関数を使用することもできます。

mkdir ContosoCompany
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name                           Property
----                           --------
ContosoCompany

New-ItemProperty コマンドレットを使用して、指定したレジストリ キーに値を作成できます。 次の例では、ContosoCompany レジストリ キーに新しい DWORD 値を作成します。

$path = "HKLM:\SOFTWARE\ContosoCompany"
New-ItemProperty -Path $path -Name Test -Type DWORD -Value 1

Note

この記事の「動的パラメーター」セクションで、許可されているその他の型値を確認します。

コマンドレットの使用方法の詳細については、「 New-ItemPropertyを参照してください。

レジストリ キーと値のコピー

Registry プロバイダーで、レジストリ キーと値をコピーCopy-Itemコマンドレットを使用します。 レジストリ値のみをコピーするには、 Copy-ItemProperty コマンドレットを使用します。 次のコマンドは、"Contoso" レジストリ キーとそのプロパティを、指定した場所の HKLM:\Software\Fabrikamにコピーします。

Copy-Item は、存在しない場合はコピー先キーを作成します。 ターゲット キーが存在する場合、 Copy-Item はコピー元キーの複製をコピー先キーの子項目 (サブキー) として作成します。

Copy-Item -Path  HKLM:\Software\Contoso -Destination HKLM:\Software\Fabrikam

次のコマンドでは、 Copy-ItemProperty コマンドレットを使用して、"Contoso" キーから "Fabrikam" キーに "Server" 値をコピーします。

$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Copy-ItemProperty -Path $source -Destination $dest -Name Server

このセクションで使用されるコマンドレットの詳細については、次の記事を参照してください。

レジストリ キーと値の移動

Move-Itemコマンドレットと Move-ItemProperty コマンドレットは、対応する "コピー" コマンドレットと同様に動作します。 変換先が存在する場合は、 Move-Item ソース キーを宛先キーの下に移動します。 宛先キーが存在しない場合、ソース キーは宛先パスに移動されます。

次のコマンドは、"Contoso" キーをパス HKLM:\SOFTWARE\Fabrikamに移動します。

Move-Item -Path HKLM:\SOFTWARE\Contoso -Destination HKLM:\SOFTWARE\Fabrikam

このコマンドは、すべてのプロパティを HKLM:\SOFTWARE\ContosoCompany から HKLM:\SOFTWARE\Fabrikam に移動します。

$source = "HKLM:\SOFTWARE\Contoso"
$dest = "HKLM:\SOFTWARE\Fabrikam"
Move-ItemProperty -Path $source -Destination $dest -Name *

このセクションで使用されるコマンドレットの詳細については、次の記事を参照してください。

レジストリ キーと値の名前変更

ファイルやフォルダーと同様に、レジストリ キーと値の名前を変更できます。 Rename-Item はレジストリ キーの名前を変更し、 Rename-ItemProperty はレジストリ値の名前を変更します。

$path = "HKLM:\SOFTWARE\Contoso"
Rename-ItemProperty -Path $path -Name ContosoTest -NewName FabrikamTest
Rename-Item -Path $path -NewName Fabrikam

セキュリティ記述子の変更

Get-AclコマンドレットとSet-Aclコマンドレットを使用して、レジストリ キーへのアクセスを制限できます。 次の例では、 HKLM:\SOFTWARE\Contoso レジストリ キーにフル コントロールを持つ新しいユーザーを追加します。

$acl = Get-Acl -Path HKLM:\SOFTWARE\Contoso
$rule = New-Object System.Security.AccessControl.RegistryAccessRule `
("CONTOSO\jsmith", "FullControl", "Allow")
$acl.SetAccessRule($rule)
$acl | Set-Acl -Path HKLM:\SOFTWARE\Contoso

その他の例とコマンドレットの使用方法の詳細については、次の記事を参照してください。

レジストリ キーと値の削除とクリア

Remove-Itemを使用して、含まれている項目を削除できます。 アイテムに他のものが含まれている場合は、削除を確認するメッセージが表示されます。 次の例では、キー HKLM:\SOFTWARE\Contosoの削除を試みます。

dir HKLM:\SOFTWARE\Contoso\
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE\Contoso

Name                           Property
----                           --------
ChildKey
Remove-Item -Path HKLM:\SOFTWARE\Contoso
Confirm
The item at HKLM:\SOFTWARE\Contoso has children and the -Recurse
parameter wasn't specified. If you continue, all children will be removed
with the item. Are you sure you want to continue?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):

メッセージを表示せずに包含アイテムを削除するには、 -Recurse パラメーターを指定します。

Remove-Item -Path HKLM:\SOFTWARE\Contoso -Recurse

HKLM:\SOFTWARE\Contoso内のすべての項目を削除するが、それ自体は HKLM:\SOFTWARE\Contoso削除しない場合は、末尾の円記号\ワイルドカードを使用します。

Remove-Item -Path HKLM:\SOFTWARE\Contoso\* -Recurse

このコマンドは、 HKLM:\SOFTWARE\Contoso レジストリ キーから "ContosoTest" レジストリ値を削除します。

Remove-ItemProperty -Path HKLM:\SOFTWARE\Contoso -Name ContosoTest

Clear-Item は、キーのすべてのレジストリ値をクリアします。 次の例では、 HKLM:\SOFTWARE\Contoso レジストリ キーからすべての値をクリアします。 特定のプロパティのみをクリアするには、 Clear-ItemPropertyを使用します。

Get-Item .\Contoso\
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name           Property
----           --------
Contoso        Server     : {a, b, c}
               HereString : {This is text which contains
               newlines. It also contains "quoted" strings}
               (default)  : 1
Clear-Item .\Contoso\
Get-Item .\Contoso\
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

Name                           Property
----                           --------
Contoso

その他の例とコマンドレットの使用方法の詳細については、次の記事を参照してください。

動的パラメーター

動的パラメーターは、PowerShell プロバイダーによって追加されるコマンドレット パラメーターであり、プロバイダー対応ドライブでコマンドレットが使用されている場合にのみ使用できます。

型 <Microsoft.Win32.RegistryValueKind>

レジストリ値のデータ型を確立または変更します。 既定値は String (REG_SZ) です。

このパラメーターは、 Set-ItemProperty コマンドレットで設計されたとおりに機能します。 レジストリ ドライブの Set-Item コマンドレットでも使用できますが、効果はありません。

  • String - REG_SZ 値に使用済み。 [System.String] オブジェクトをパラメーターに渡します。
  • ExpandString - REG_EXPAND_SZ 値に使用済み。 [System.String] オブジェクトをパラメーターに渡します。 文字列は、値が読み出されるときに展開される環境変数の展開されない参照を含む必要があります。
  • Binary - REG_BINARY 値に使用済み。 [System.Byte[]] オブジェクトをパラメーターに渡します。
  • DWord - REG_DWORD 値に使用済み。 [System.Int32] オブジェクトをパラメーターに渡します。
  • MultiString - REG_MULTI_SZ 値に使用済み。 [System.String[]] オブジェクトをパラメーターに渡します。
  • QWord - REG_QWORD 値に使用済み。 [System.Int64] オブジェクトをパラメーターに渡します。
  • Unknown - REG_RESOURCE_LIST値など、サポートされていないレジストリ データ型を示します。

パイプラインの使用

プロバイダー コマンドレットは、パイプライン入力を受け入れます。 パイプラインを使用すると、あるコマンドレットから別のプロバイダー コマンドレットにプロバイダー データを送信することで、タスクを簡略化できます。 プロバイダー コマンドレットでパイプラインを使用する方法の詳細については、この記事全体で提供されているコマンドレットリファレンスを参照してください。

ヘルプの表示

Windows PowerShell 3.0 より、プロバイダー コマンドレットのためにカスタマイズされたヘルプ トピックを取得できます。これはファイル システム ドライブでのプロバイダー コマンドレットの動作を説明します。

ファイル システム ドライブ用にカスタマイズされたヘルプ トピックを取得するには、ファイル システム ドライブで Get-Help コマンドを実行するか、 Path パラメーターを使用してファイル システム ドライブを指定します。

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path HKLM:

関連項目