Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

PowerShell:レジストリキーまたはパラメーターの取得、変更、作成、および削除

レジストリエディタ(regedit.exe )およびreg.exe Windowsでレジストリにアクセスして管理するためのツールは、コマンドラインユーティリティだけではありません。 PowerShellには、管理者がレジストリを操作するための多数のツールが用意されています。 PowerShellを使用すると、レジストリキー/パラメーターを作成、変更、または削除し、値を検索して、リモートコンピューター上のレジストリに接続できます。

PowerShellを使用したファイルシステムのようにWindowsレジストリをナビゲートする

PowerShellでレジストリを操作することは、ローカルディスク上の一般的なファイルを操作することに似ています。主な違いは、この概念ではレジストリキーがファイルに類似しており、レジストリパラメータがこれらのファイルのプロパティであるということです。

コンピューターで使用可能なドライブのリストを表示します:

get-psdrive

PowerShell:レジストリキーまたはパラメーターの取得、変更、作成、および削除

ドライブ(ドライブ文字が割り当てられている)の中には、レジストリプロバイダーから入手できる特別なデバイスがあることに注意してください。 – HKCU(HKEY_CURRENT_USER)およびHKLM(HKEY_LOCAL_MACHINE)。ドライブをナビゲートするのと同じ方法でレジストリツリーを参照できます。 HKLM:\ およびHKCU:\ 特定のレジストリハイブにアクセスするために使用されます。

cd HKLM:\
Dir -ErrorAction SilentlyContinue

PowerShell:レジストリキーまたはパラメーターの取得、変更、作成、および削除

これらは、ファイルとフォルダーの管理に使用するのと同じ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つのパラメーターしかありません。

PowerShell:レジストリキーまたはパラメーターの取得、変更、作成、および削除

レジストリキーパラメータの値を取得するには、Get-ItemPropertyコマンドレットを使用します。

$DriverUpdate = Get-ItemProperty –Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching’
$DriverUpdate.SearchOrderConfig

PowerShell:レジストリキーまたはパラメーターの取得、変更、作成、および削除

SearchOrderConfigパラメーターの値は1であることがわかりました。

PowerShellを使用したレジストリ値の変更

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:レジストリキーまたはパラメーターの取得、変更、作成、および削除

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)
  • 不明(サポートされていないレジストリデータ型)

新しいキーとパラメータがレジストリに表示されていることを確認してください。

PowerShell:レジストリキーまたはパラメーターの取得、変更、作成、および削除

レジストリキーが存在するかどうかを確認するにはどうすればよいですか?

特定のレジストリキーが存在するかどうかを確認する必要がある場合は、 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

注。 –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*"}

PowerShellを使用したレジストリキーのアクセス許可の設定

Get-ACLコマンドレットを使用して現在のレジストリキーのアクセス許可を取得できます(Get-ACLコマンドレットを使用すると、ファイルとフォルダーのNTFSアクセス許可を管理することもできます)。

$rights = Get-Acl -Path 'HKCU:\Control Panel\Desktop\NewKey'
$rights.Access.IdentityReference

PowerShell:レジストリキーまたはパラメーターの取得、変更、作成、および削除

次の例では、このレジストリキーの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:レジストリキーまたはパラメーターの取得、変更、作成、および削除

PowerShellを介してリモートコンピューターからレジストリ値を取得する

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")

ヒント 。多数のドメインコンピューターで特定のレジストリパラメーターを作成/変更する必要がある場合は、GPO機能を使用する方が簡単です。

そこで、PowerShellを使用してWindowsレジストリエントリにアクセスして管理する一般的な例について説明しました。自動化スクリプトで使用できます。


  1. Macでキーを削除、移動、交換、交換する方法

    シンプルなMacキーボード修理ガイドを使用して、iMac、Mac、またはMacBookラップトップのキーを取り外し、交換、交換、修理、および清掃する方法を学びます。さらに、MacOSXと無料のMacツールを使用して主要な機能を交換する方法。 Macキーボードからキーを削除し、後で交換するにはどうすればよいですか?私はコーヒーのこぼれを片付けるために下に入りたいです。汚れた鍵や破損した鍵は、その場で交換したほうがよいでしょう。 Macでのキーの移動と交換は、2つのカテゴリに分けることができます。まず、Macキーボードのハードウェアキーを物理的に移動する方法を知りたい場合があります(

  2. レジストリ キーと値を追加、変更、削除する方法

    レジストリ エディタは、Windows コンピュータのバックボーンと言われています。インストールされているプログラムとハードウェアの情報、設定、オプション、およびその他の値が含まれています。通常のユーザーであれば、レジストリ エディターは使用しないでしょう。ただし、プロであり、Windows の詳細設定について知っている場合は、その使用方法がわかります。 エラーを修正するために、レジストリ エディターでサブキーまたは値を追加または削除する必要がある場合があります。何をしていても、レジストリ エディターに変更を加えるように求められると、少し怖がってしまいがちです。いつも言われているように、レジ