W jaki sposób dodawać nowe klucze, wartości, dane w Rejestrze Windows za pomocą PowerShella?
Czy da się podczas dodawania wymusić (kontrolować) typy danych?
W jaki sposób dodawać nowe klucze, wartości, dane w Rejestrze Windows za pomocą PowerShella?
Czy da się podczas dodawania wymusić (kontrolować) typy danych?
Jeżeli do edycji rejestru za pomocą PowerShella użyjemy dyski PSDrive, możemy dzięki dostawcy Registry poruszać się po rejestrze jak po systemie plików.
Klucz Rejestru (Key) jest dla PowerShella obiektem, wartości klucza (Value) – właściwością obiektu, dane wartości klucza (Data) – wartością właściwości.
Chcąc stworzyć klucz musimy w PowerShellu stworzyć obiekt.
Wiec New-Item z przełącznikiem –Path (wpisanie HKCU:\TEST – spowoduje utworzenie klucza TEST w gałęzi HKEY_CURRENT_USER).
Chcąc stworzyć wartość i jej dane w kluczu rejestru, musimy w PowerShellu stworzyć właściwość obiektu i jej wartość.
Więc New-ItemProperty z przełącznikami -Path (. oznacza w bieżącej ścieżce), -Name to oczywiście nazwa naszej właściwości i -Value to analogicznie wartość właściwości.
PS HKCU:\TEST\> New-ItemProperty -Path . -Name test1 -Value test1_data
Jeżeli chcemy wymusić typ wprowadzanych danych możemy użyć PowerShellowego operatora –As, który pozwala na konwersje typu obiekty w PowerShell.
Wpisanie:
PS HKCU:\TEST\> New-ItemProperty -Path . -Name test2 -Value (2 –As [STRING])
PS HKCU:\TEST\> New-ItemProperty -Path . -Name test3 -Value (3 –As [INT])
Powoduje odpowiednio utworzenie wartości w rejestrze typu tekstowego i liczbowego.
Bardzo dobra odpowiedź mojego poprzednika wymaga drobnego sprostowania -
typ danych dla wartości klucza nie powinien być ustawiany za pomocą
operatora -as tylko dynamicznego parametru Type.
Operator -As służy do rzutowania (konwersji) typów .NET Framework, tworząc
wpis w rejestrze posługujemy się z kolei typami rejestru a nie .NET Framwework
(nawet jeśli istnieje niejawne rzutowanie, jak w poprzednim przykładzie).
Wracając do dynamicznego parametru Type, jest on dodawany przez dostawcę Registry
do cmdletu Set-ItemProperty oraz New-ItemProperty i powinien być wykorzystany do
określenia typu danych wpisu zamiast operatora -As. Przykład zastosowania:
new-itemproperty -path hkcu:\environment -name PSTest -value 1 -propertyType dword
Typ danych parametru [property]Type to Microsoft.Win32.RegistryValueKind a jego
dozwolone wartości prezentuje poniższa tabela:
Value | Description |
String |
Specifies a null-terminated string. Equivalent to REG_SZ. |
ExpandString |
Specifies a null-terminated string that contains unexpanded references to environment variables that are expanded when the value is retrieved. Equivalent to REG_EXPAND_SZ. |
Binary |
Specifies binary data in any form. Equivalent to REG_BINARY. |
DWord |
Specifies a 32-bit binary number. Equivalent to REG_DWORD. |
MultiString |
Specifies an array of null-terminated strings terminated by two null characters. Equivalent to REG_MULTI_SZ. |
QWord |
Specifies a 64-bit binary number. Equivalent to REG_QWORD. |
Unknown |
Indicates an unsupported registry data type, such as REG_RESOURCE_LIST. |
* źródło:
http://technet.microsoft.com/en-us/library/hh847848.aspx