PowerShell:レジストリキーまたはパラメーターの取得、変更、作成、および削除
レジストリエディタ(regedit.exe
)およびreg.exe
Windowsでレジストリにアクセスして管理するためのツールは、コマンドラインユーティリティだけではありません。 PowerShellには、管理者がレジストリを操作するための多数のツールが用意されています。 PowerShellを使用すると、レジストリキー/パラメーターを作成、変更、または削除し、値を検索して、リモートコンピューター上のレジストリに接続できます。
PowerShellでレジストリを操作することは、ローカルディスク上の一般的なファイルを操作することに似ています。主な違いは、この概念ではレジストリキーがファイルに類似しており、レジストリパラメータがこれらのファイルのプロパティであるということです。
コンピューターで使用可能なドライブのリストを表示します:
get-psdrive
ドライブ(ドライブ文字が割り当てられている)の中には、レジストリプロバイダーから入手できる特別なデバイスがあることに注意してください。 – HKCU(HKEY_CURRENT_USER)およびHKLM(HKEY_LOCAL_MACHINE)。ドライブをナビゲートするのと同じ方法でレジストリツリーを参照できます。 HKLM:\ およびHKCU:\ 特定のレジストリハイブにアクセスするために使用されます。
cd HKLM:\
Dir -ErrorAction SilentlyContinue
これらは、ファイルとフォルダーの管理に使用するのと同じPowerShellコマンドレットを使用してレジストリキーとそのパラメーターにアクセスできます。
レジストリキーを参照するには、 xxx-Itemでコマンドレットを使用します :
-
Get-Item
–レジストリキーを取得する New-Item
—新しいレジストリキーを作成しますRemove-Item
–レジストリキーを削除します
レジストリパラメータは、レジストリキーのプロパティと見なす必要があります(ファイル/フォルダのプロパティと同様)。 xxx -ItemProperty コマンドレットは、レジストリパラメータを管理するために使用されます:
-
Get-ItemProperty
–レジストリパラメータの値を取得する -
Set-ItemProperty
–レジストリパラメータの値を変更する -
New-ItemProperty
–レジストリパラメータを作成する Rename-ItemProperty
–パラメータの名前を変更-
Remove-ItemProperty
—レジストリパラメータを削除します
次の2つのコマンドのいずれかを使用して、特定のレジストリキー(たとえば、ドライバーの自動更新の設定を担当するレジストリキー)に移動できます。
cd HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching
またはSet-Location -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching
PowerShellを介してレジストリパラメータ値を取得する
レジストリキーに格納されているパラメータはネストされたオブジェクトではなく、特定のレジストリキーのプロパティであることに注意してください。これらの任意のレジストリキーには、任意の数のパラメータを含めることができます。
次のコマンドを使用して、現在のレジストリキーの内容を一覧表示します。
dir
または
Get-ChildItem
このコマンドは、ネストされたレジストリキーとそのプロパティに関する情報を表示しました。ただし、現在のキーのプロパティであるSearchOrderConfigパラメータに関する情報は表示されませんでした。
Get-Itemを使用します レジストリキーのパラメータを取得するコマンドレット:
Get-Item .
またはGet-Item –Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching
ご覧のとおり、DriverSearchingキーには、値が1のSearchOrderConfigという1つのパラメーターしかありません。
レジストリキーパラメータの値を取得するには、Get-ItemPropertyコマンドレットを使用します。
$DriverUpdate = Get-ItemProperty –Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching’
$DriverUpdate.SearchOrderConfig
SearchOrderConfigパラメーターの値は1であることがわかりました。
SearchOrderConfig regパラメーターの値を変更するには、Set-ItemPropertyコマンドレットを使用します。
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching' -Name SearchOrderConfig -Value 0
パラメータ値が変更されていることを確認してください:
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching' -Name SearchOrderConfig
PowerShellを使用して新しいレジスタキーまたはパラメータを作成するにはどうすればよいですか?
新しいレジストリキーを作成するには、New-Itemコマンドを使用します。 NewKeyという名前の新しいキーを作成しましょう :
$HKCU_Desktop= "HKCU:\Control Panel\Desktop"
New-Item –Path $HKCU_Desktop –Name NewKey
次に、新しいレジストリキーに新しいパラメータを作成しましょう。 SuperParamStringという名前のREG_SZ型の新しい文字列パラメータを作成する必要があるとします。 および値filetmp1.txt:
New-ItemProperty -Path $HKCU_Desktop\NewKey -Name "SuperParamString" -Value ”filetmp1.txt” -PropertyType "String"
- 文字列(REG_SZ)
- ExpandString(REG_EXPAND_SZ)
- MultiString(REG_MULTI_SZ)
- バイナリ(REG_BINARY)
- DWord(REG_DWORD)
- Qword(REG_QWORD)
- 不明(サポートされていないレジストリデータ型)
新しいキーとパラメータがレジストリに表示されていることを確認してください。
レジストリキーが存在するかどうかを確認するにはどうすればよいですか?
特定のレジストリキーが存在するかどうかを確認する必要がある場合は、 Test-Pathを使用してください コマンドレット:
Test-Path 'HKCU:\Control Panel\Desktop\NewKey'
次のPowerShellスクリプトは、特定のレジストリ値が存在するかどうかを確認し、存在しない場合は作成します。
regkey='HKCU:\Control Panel\Desktop\NewKey'
$regparam='testparameter'
if (Get-ItemProperty -Path $regkey -Name $regparam -ErrorAction Ignore)
{ write-host 'The registry entry already exist' }
else
{ New-ItemProperty -Path $regkey -Name $regparam -Value ”woshub_test” -PropertyType "String" }
コピーアイテムの使用 コマンドレットを使用すると、あるレジストリキーから別のレジストリキーにエントリをコピーできます。
$source='HKLM:\SOFTWARE\7-zip\'
$dest = 'HKLM:\SOFTWARE\backup'
Copy-Item -Path $source -Destination $dest -Recurse
サブキーを含むすべてをコピーする場合は、 –Recurseを追加します。 スイッチ。
Remove-ItemProperty コマンドは、レジストリキーのパラメータを削除するために使用されます。以前に作成したパラメータSuperParamStringを削除しましょう:
$HKCU_Desktop= "HKCU:\Control Panel\Desktop"
Remove-ItemProperty –Path $HKCU_Desktop\NewKey –Name "SuperParamString"
レジストリキー全体とそのすべての内容を削除できます:
Remove-Item –Path $HKCU_Desktop\NewKey –Recurse
regキー内のすべてのアイテムを削除するには(キー自体は削除しません):
Remove-Item –Path $HKCU_Desktop\NewKey\* –Recurse
レジストリキーまたはパラメータの名前を変更するにはどうすればよいですか?
次のコマンドを使用して、レジストリパラメータの名前を変更できます。
Rename-ItemProperty –path ‘HKCU:\Control Panel\Desktop\NewKey’ –name "SuperParamString" –newname “OldParamString”
同様に、レジストリキーの名前を変更できます:
Rename-Item -path 'HKCU:\Control Panel\Desktop\NewKey' OldKey
PowerShellを使用してレジストリでキーワードを検索
PowerShellを使用すると、レジストリを検索できます。次の例では、HKCU:\ Control Panel \ Desktopで、名前に* dpiが含まれているパラメーターを検索します。 *キー。
$Path = (Get-ItemProperty ‘HKCU:\Control Panel\Desktop’)
$Path.PSObject.Properties | ForEach-Object {
If($_.Name -like '*dpi*'){
Write-Host $_.Name ' = ' $_.Value
}
}
特定の名前のレジストリキーを見つけるには:
Get-ChildItem -path HKLM:\ -recurse -ErrorAction SilentlyContinue | Where-Object {$_.Name -like "*woshub*"}
Get-ACLコマンドレットを使用して現在のレジストリキーのアクセス許可を取得できます(Get-ACLコマンドレットを使用すると、ファイルとフォルダーのNTFSアクセス許可を管理することもできます)。
$rights = Get-Acl -Path 'HKCU:\Control Panel\Desktop\NewKey'
$rights.Access.IdentityReference
次の例では、このレジストリキーのACLを変更して、組み込みのUsersグループへの書き込みアクセスを許可します。
現在の権限を取得する:
$rights = Get-Acl -Path 'HKCU:\Control Panel\Desktop\NewKey'
アクセスを許可するユーザーまたはグループを指定します:
$idRef = [System.Security.Principal.NTAccount]"BuiltIn\Users"
アクセスレベルを選択します:
$regRights = [System.Security.AccessControl.RegistryRights]::WriteKey
権限継承設定を設定します:
$inhFlags = [System.Security.AccessControl.InheritanceFlags]::None
$prFlags = [System.Security.AccessControl.PropagationFlags]::None
アクセスタイプ(許可/拒否):
$acType = [System.Security.AccessControl.AccessControlType]::Allow
アクセスルールを作成する:
$rule = New-Object System.Security.AccessControl.RegistryAccessRule ($idRef, $regRights, $inhFlags, $prFlags, $acType)
現在のACLに新しいルールを追加します:
$rights.AddAccessRule($rule)
レジストリキーに新しい権限を適用します:
$rights | Set-Acl -Path 'HKCU:\Control Panel\Desktop\NewKey'
新しいグループがレジストリキーのACLに表示されていることを確認してください。
PowerShellを使用すると、リモートコンピューターのレジストリにアクセスできます。 WinRM(Invoke-CommandまたはEnter-PSSession)を使用して、リモートコンピューターに接続できます。リモートコンピュータからレジストリパラメータの値を取得するには:
Invoke-Command –ComputerName srv-fs1 –ScriptBlock {Get-ItemProperty -Path 'HKLM:\System\Setup' -Name WorkingDirectory}
または、リモートレジストリ接続を使用します(RemoteRegistryサービスを有効にする必要があります)
$Server = "lon-fs1"
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Server)
$RegKey= $Reg.OpenSubKey("System\Setup")
$RegValue = $RegKey.GetValue("WorkingDirectory")
そこで、PowerShellを使用してWindowsレジストリエントリにアクセスして管理する一般的な例について説明しました。自動化スクリプトで使用できます。
-
Macでキーを削除、移動、交換、交換する方法
シンプルなMacキーボード修理ガイドを使用して、iMac、Mac、またはMacBookラップトップのキーを取り外し、交換、交換、修理、および清掃する方法を学びます。さらに、MacOSXと無料のMacツールを使用して主要な機能を交換する方法。 Macキーボードからキーを削除し、後で交換するにはどうすればよいですか?私はコーヒーのこぼれを片付けるために下に入りたいです。汚れた鍵や破損した鍵は、その場で交換したほうがよいでしょう。 Macでのキーの移動と交換は、2つのカテゴリに分けることができます。まず、Macキーボードのハードウェアキーを物理的に移動する方法を知りたい場合があります(
-
レジストリ キーと値を追加、変更、削除する方法
レジストリ エディタは、Windows コンピュータのバックボーンと言われています。インストールされているプログラムとハードウェアの情報、設定、オプション、およびその他の値が含まれています。通常のユーザーであれば、レジストリ エディターは使用しないでしょう。ただし、プロであり、Windows の詳細設定について知っている場合は、その使用方法がわかります。 エラーを修正するために、レジストリ エディターでサブキーまたは値を追加または削除する必要がある場合があります。何をしていても、レジストリ エディターに変更を加えるように求められると、少し怖がってしまいがちです。いつも言われているように、レジ