about_Registry_Provider
プロバイダー名
レジストリ
ドライブ
HKLM:
, HKCU:
機能
ShouldProcess、 UseTransactions
簡単な説明
PowerShell のレジストリ キー、エントリ、および値へのアクセスを提供します。
詳しい説明
PowerShell レジストリ プロバイダーを使用すると、PowerShell でレジストリ キー、エントリ、値を取得、追加、変更、クリア、および削除できます。
レジストリ ドライブは、コンピューター上のレジストリ キーとサブキーを含む階層型名前空間です。 レジストリ エントリと値はその階層の構成要素ではありません。 各キーのプロパティです。
レジストリ プロバイダーは、この記事で説明する次のコマンドレットをサポートしています。
- 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
このプロバイダーによって公開される型
レジストリ キーは、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 のエイリアス、dir
ls
Set-Location のエイリアス、 cd
Get-Locationpwd
のエイリアスなどのコマンドです。
この最後の例では、レジストリ プロバイダーの移動に使用できる別のパス構文を示します。 この構文では、プロバイダー名を使用し、その後に 2 つのコロンを使用します ::
。 この構文を使用すると、マップされたドライブ名ではなく、完全な HIVE 名を使用できます HKLM
。
cd "Registry::HKEY_LOCAL_MACHINE\Software"
レジストリ キーの内容の表示
レジストリは、キー、サブキー、およびエントリに分割されます。 レジストリ構造の詳細については、「レジストリの構造」を参照してください。
レジストリ ドライブでは、各キーはコンテナーです。 キーには任意の数のキーを含めることができます。 親キーを持つレジストリ キーは、サブキーと呼ばれます。 レジストリ キーを表示したり、Set-Location
キー パスに移動したりするために使用Get-ChildItem
できます。
レジストリ値は、レジストリ キーの属性です。 レジストリ ドライブでは、項目のプロパティと呼ばれます。 レジストリ キーには、子キーと項目プロパティの両方を含めることができます。
この例では、違い 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
各レジストリ キーには既定値があります。 レジストリ キーの既定値は、次のいずれかを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 $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-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 コマンドレットでも使用できますが、効果はありません。
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:
関連項目
PowerShell
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示