Summary: Use Windows PowerShell to create and manage registry keys.
Microsoft Scripting Guy, Ed Wilson, is here. Today I am happy to provide you with an excerpt from my book, Windows PowerShell 3.0 Step by Step, published by Microsoft Press.
Note The registry contains information that is vital to the operation and configuration of your computer. Serious problems could arise if you edit the registry incorrectly. Therefore, it is important to back up your system prior to attempting to make any changes. For information about backing up your registry, see article 322756 in the Microsoft Knowledge Base. For general information about working with the registry, see article 310516.
Creating a new registry key by using Windows PowerShell is the same as creating a new file or a new folder. All three processes use the New-Item cmdlet. In addition, you might use the Test-Path cmdlet to determine if the registry key already exists. You may also want to change your working location to one of the registry drives. If you do this, you might use the Push-Location, Set-Location, and Pop-Location cmdlets. This is, of course, the long way of doing things…
Just the steps
- Store the current working location by using the Push-Location cmdlet.
- Change the current working location to the appropriate registry drive by using the Set-Location cmdlet.
- Use the Test-Path cmdlet to determine if the registry key already exists.
- Use the New-Item cmdlet to create the new registry key.
- Use the Pop-Location cmdlet to return to the starting working location.
The following example creates a new registry key named hsg off the HKEY_CURRENT_USERS software registry hive. It illustrates each of the five steps previously detailed.
New-Item -Path .\Software -Name test
The commands and the associated output from the commands are shown in the following image:
The short way to create a new registry key
It is not always necessary to change the working location to a registry drive when you create a new registry key. In fact, it is not even necessary to use the Test-Path cmdlet to determine if the registry key exists. If the registry key already exists, an error generates. If you want to overwrite the registry key, use the Force parameter.
Note How you choose to deal with an already existing registry key is one of those design decisions that confront IT pros who venture very far into the world of scripting. Software developers are very familiar with these types of decisions, and they usually deal with them during the analyzing requirements portion of the development lifecycle. IT pros who open the Windows PowerShell ISE first, and think about the design requirements second, become easily stymied, or else write-in problems. For more information about this, see my Microsoft Press book, Windows PowerShell 2.0 Best Practices.
The following example creates a new registry key named test in the HKCU:\Software location. Because the command includes the full path, it does not need to execute from the HKCU drive. Because the command uses the Force switched parameter, the command overwrites the HKCU:\Software\test registry key if it already exists.
New-Item -Path HKCU:\Software -Name test –Force
Just the steps: The short way to create a new registry key
- Include the full path to the registry key to create.
- Use the Force parameter to overwrite any existing registry key of the same name.
In the following image, the first attempt to create a test registry key fails because it already exists. The second command uses the Force parameter, which causes the command to overwrite the existing registry key, and therefore it succeeds without creating an error.
Setting the default value for the key
The previous examples do not set the default value for the newly created registry key. If the registry key already exists (as it does in this specific case), use the Set-Item cmdlet to assign a default value to the registry key. The steps to accomplish this are shown here:
Just the steps: Assign a default value to an existing registry key
- Use the Set-Item cmdlet and supply the complete path to the existing registry key.
- Supply the default value in the Value parameter of the Set-Item cmdlet.
The following command assigns the value “test key” to the default property value of the hsg registry key contained in the HKCU:\Software location.
Set-Item -Path HKCU:\Software\test -Value "test key"
Join me tomorrow when I will talk about more cool Windows PowerShell stuff.
I invite you to follow me on Twitter and Facebook. If you have any questions, send email to me at firstname.lastname@example.org, or post your questions on the Official Scripting Guys Forum. See you tomorrow. Until then, peace.
Ed Wilson, Microsoft Scripting Guy