about_Registry_Provider

プロバイダー名

レジストリ

ドライブ

HKLM:, HKCU:

機能

ShouldProcessUseTransactions

簡単な説明

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

詳しい説明

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

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

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

レジストリ プロバイダーは、この記事で説明する次のコマンドレットをサポートしています。

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

レジストリ キーは、 Microsoft.Win32.RegistryKey クラスのインスタンスとして表されます。 レジストリ エントリは、 PSCustomObject クラスのインスタンスとして表されます。

レジストリ プロバイダーは、データ ストアを 2 つの既定のドライブとして公開します。 レジストリの場所HKEY_LOCAL_MACHINEはドライブに HKLM: マップされ、HKEY_CURRENT_USERはドライブに HKCU: マップされます。 レジストリを操作するには、次のコマンドを使用して、場所を HKLM: ドライブに変更できます。

Set-Location HKLM:

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

Set-Location C:

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

PS C:\> cd HKLM:\Software

注意

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

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

cd "Registry::HKEY_LOCAL_MACHINE\Software"

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

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

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

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

この例では、違い 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 、各サブキーのプロパティを含む"スプーラー" キーの子項目が表示されます。 使用する場合 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

各レジストリ キーには 既定値 があります。 レジストリ キーの 既定値 は、次のいずれかをSet-Item``Set-ItemProperty使用して変更できます。

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

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

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

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

mkdir ContosoCompany
    Hive: HKEY_LOCAL_MACHINE\SOFTWARE

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

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

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

注意

その他の許容される型値については、この記事の「動的パラメーター」セクションを参照してください。

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

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

レジストリ プロバイダーで、コマンドレットを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 was not 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

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

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 Null 終了文字列を指定します。 REG_SZ値に使用されます。
ExpandString 展開されていない文字列を含む null で終わる文字列を指定します。
時に展開される環境変数への参照
値が取得されます。 REG_EXPAND_SZ値に使用されます。
Binary あらゆる形式のバイナリ データを指定します。 REG_BINARY値に使用されます。
DWord 32 ビットのバイナリ数値を指定します。 REG_DWORD値に使用されます。
MultiString で終わる null で終わる文字列の配列を指定します。
2 つの null 文字。 REG_MULTI_SZ値に使用されます。
QWord 64 ビットの 2 進数を指定します。 REG_QWORD値に使用されます。
Unknown サポートされていないレジストリ データ型を示します (例:
REG_RESOURCE_LIST値。

サポートされているコマンドレット

パイプラインの使用

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

ヘルプの表示

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

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

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

関連項目