about_Registry_Provider
プロバイダー名
レジストリ
ドライブ
HKLM:
, HKCU:
機能
ShouldProcess、 UseTransactions
簡単な説明
PowerShell のレジストリ キー、エントリ、および値へのアクセスを提供します。
詳しい説明
この情報は、Windows で実行されている PowerShell にのみ適用されます。
PowerShell Registry プロバイダーを使用すると、PowerShell でレジストリ キー、エントリ、値を取得、追加、変更、クリア、および削除できます。
Registry ドライブは、コンピューター上のレジストリ キーとサブキーを含む階層型名前空間です。 レジストリ エントリと値は、その階層のコンポーネントではありません。 代わりに、各キーのプロパティです。
Registry プロバイダーでは、次のコマンドレットがサポートされています。
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Clear-ItemProperty
- Get-ItemProperty
- New-ItemProperty
- Remove-ItemProperty
- Set-ItemProperty
- Get-Acl
- Set-Acl
このプロバイダーによって公開される型
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 ではエイリアスを使用して、プロバイダー パスを使い慣れた方法で操作できます。 dir
やls
などのコマンドは、Get-ChildItem のエイリアス、cd
は Set-Location のエイリアス、pwd
は Get-Location のエイリアスです。
この最後の例では、 Registry プロバイダー内を移動するために使用できる別のパス構文を示します。 この構文では、プロバイダー名を使用し、その後に 2 つのコロンを ::
します。 この構文を使用すると、マップされたドライブ名 HKLM
ではなく、完全な HIVE 名を使用できます。
cd "Registry::HKEY_LOCAL_MACHINE\Software"
レジストリ キーの内容の表示
レジストリは、キー、サブキー、およびエントリに分割されます。 レジストリ構造の詳細については、「 レジストリの構造を参照してください。
Registry ドライブでは、各キーはコンテナーです。 キーには任意の数のキーを含めることができます。 親キーを持つレジストリ キーは、サブキーと呼ばれます。 Get-ChildItem
を使用してレジストリ キーを表示し、Set-Location
キー パスに移動できます。
レジストリ値は、レジストリ キーの属性です。 Registry ドライブでは、Item プロパティと呼ばれます。 レジストリ キーには、子キーと項目プロパティの両方を含めることができます。
この例では、 Get-Item
と Get-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-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
各レジストリ キーには、 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:
関連項目
PowerShell