about_Registry_Provider

プロバイダー名

レジストリ

ドライブ

HKLM:, HKCU:

機能

ShouldProcessUseTransactions

簡単な説明

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

詳しい説明

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

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

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

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

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

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

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

Set-Location HKLM:

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

Set-Location C:

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

PS C:\> cd HKLM:\Software

Note

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

この最後の例では、レジストリ プロバイダーの移動に使用できる別のパス構文を示します。 この構文では、プロバイダー名を使用し、その後に 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 、各サブキーのプロパティを含む、"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 StartType を Automatic戻します。

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-ItemSet-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 $path -Name Test -Type DWORD -Value 1

Note

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

コマンドレットの使用方法の詳細については、「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-ItemPropertyコマンドレットはMove-Item、対応する "コピー" と同様に動作します。 変換先が存在する場合は、 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-AclSet-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 コマンドレットでも使用できますが、効果はありません。

Value 説明
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:

関連項目