New-ItemPropertyの使い方:レジストリ値を新規作成する
New-ItemProperty コマンドレットを使用すると、レジストリキーに新しいレジストリ値を作成することができます。作成時には、値の型(文字列や数値など)を指定することができます。ここでは PowerShell における New-ItemProperty コマンドレットの使い方について解説します。
New-ItemPropertyコマンドレットの書式
New-ItemProperty コマンドレットは、レジストリキーに新しいレジストリ値を作成するためのコマンドレットです。 New-ItemProperty コマンドレットの書式は次の通りです。
New-ItemProperty [-Path] <String[]> [-Name] <String> [-PropertyType <String>] [-Value <Object>] [-Force] [-Filter <String>] [-Include <String[]>] [-Exclude <String[]>] [-Credential <PSCredential>] [-WhatIf] [-Confirm] [<CommonParameters>]
New-ItemProperty を使って新しいレジストリ値を作成するには次の書式を使用します。
New-ItemProperty -Path レジストリキー -Name レジストリ値の名前 -PropertyType 値の型 -Value レジストリ値の値
-Path は省略可能なので、通常は次のように実行します。
New-ItemProperty レジストリキー -Name レジストリ値の名前 -PropertyType 値の型 -Value レジストリ値の値
※ -PropertyType 値の型 は省略可能ですが、省略した場合は String(REG_SZ) が設定されます。
型に指定できる値は次の通りです。
String: REG_SZ 通常の文字列 ExpandString: REG_EXPAND_SZ 環境変数を展開できる文字列 MultiString: REG_MULTI_SZ 複数の文字列を配列として格納 Binary: REG_BINARY バイナリデータ DWord: REG_DWORD 32 ビット整数の数値 Qword: REG_QWORD 64 ビット整数の数値 Unknown: 不明な型(通常は使用しない)
文字列にはいくつか種類があります。通常の文字列は String (REG_SZ)、複数の文字列を配列として格納する場合は MultiString (REG_MULTI_SZ)、文字列内で %PATH% などの環境変数を使用したい場合は ExpandString (REG_EXPAND_SZ) を使用します。
通常は String または DWord を使用するケースが多いです。
New-ItemProperty を使用するときの注意点ですが、レジストリキーがあらかじめ作成されている必要があります。存在しないレジストリキーを指定すると New-ItemProperty: Cannot find path 'レジストリキー' because it does not exist. というエラーが表示されます。
また対象のレジストリキーに既に同じ名前のレジストリ値があると New-ItemProperty: The property already exists. というエラーが表示されます。(-Force オプションを指定すると上書きすることができます)。
それでは実際に試してみます。次のように実行してください。
New-ItemProperty HKCU:\Software\MyApp -Name Width -PropertyType DWord -Value 20
新しいレジストリ値が作成されました。
レジストリエディターで確認すると、指定のレジストリキーに新しいレジストリ値が作成されているのが確認できます。
このように New-ItemProperty を使用すると、新しいレジストリ値を作成することができます。
既存のレジストリ値を上書きする
New-ItemProperty はレジストリ値を新規に作成するためのコマンドレットなので、対象のレジストリキーに既に同じ名前のレジストリ値があるとエラーが表示されます。
既に同じ名前のレジストリ値があった場合にエラーを出すのではなく上書きする場合は -Force オプションを使用します。
New-ItemProperty レジストリキー -Name レジストリ値の名前 -PropertyType 値の型 -Value レジストリ値の値 -Force
それでは実際に試してみます。まず -Force オプションを付けずに既に存在しているレジストリ値を作成してみます。
New-ItemProperty HKCU:\Software\MyApp -Name Width -PropertyType DWord -Value 18
エラーが表示されました。これが通常の動作です。
今度は -Force オプションを付けて、同じレジストリ値があった場合に上書きするように作成してみます。
New-ItemProperty HKCU:\Software\MyApp -Name Width -PropertyType DWord -Value 18 -Force
既存のレジストリ値が上書きされ、値が更新されました。
レジストリエディターで確認すると、指定のレジストリ値が上書きされていることが確認できます。
既存のレジストリ値を変更する場合は Set-ItemProperty を使用するのが一般的ですが、New-ItemProperty -Force を使用して上書きすることも可能です。(Set-ItemProperty については「Set-ItemPropertyの使い方:プロパティやレジストリ値を変更する」を参照されてください)。
-- --
PowerShell における New-ItemProperty コマンドレットの使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。