次の方法で共有


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 では、エイリアスを使用して、プロバイダー パスを使い慣れた方法で操作できます。 や ls などのdirコマンドは、Get-ChildItem のエイリアスになり、 cdSet-Location のエイリアスでありpwdGet-Location のエイリアスです。

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

cd "Registry::HKEY_LOCAL_MACHINE\Software"

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

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

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

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

この例では、 と Get-ChildItem の違Get-Itemいを示します。 "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-ServiceStartTypeAutomatic に戻します。

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-ItemPropertySet-Item使用して変更できます。

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

注意

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

コマンドレットの使用方法の詳細については、「 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\ContosoCompanyHKLM:\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

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

および Set-Acl コマンドレットを使用して、レジストリ キーへのアクセスをGet-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:

こちらもご覧ください