Megosztás a következőn keresztül:


Beállításjegyzék-bejegyzések használata

Ez a minta csak Windows-platformokra vonatkozik.

Mivel a beállításjegyzék-bejegyzések a kulcsok tulajdonságai, ezért nem lehet közvetlenül böngészni, a velük végzett munka során kissé eltérő megközelítést kell alkalmaznunk.

Beállításjegyzék-bejegyzések listázása

A beállításjegyzék bejegyzéseinek vizsgálatára számos különböző módszer létezik. A legegyszerűbb módszer a kulcshoz társított tulajdonságnevek lekérése. Például a beállításkulcs HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersionbejegyzéseinek nevének megtekintéséhez használja Get-Itema következőt: A beállításkulcsok olyan tulajdonsággal rendelkeznek, amelynek általános neve "Tulajdonság", amely a kulcs beállításjegyzék-bejegyzéseinek listája. Az alábbi parancs kijelöli a Tulajdonság tulajdonságot, és kibontja az elemeket, hogy azok megjelenjenek a listában:

Get-Item -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion |
    Select-Object -ExpandProperty Property
DevicePath
MediaPathUnexpanded
ProgramFilesDir
CommonFilesDir
ProductId

A beállításjegyzék bejegyzéseinek olvashatóbb formában való megtekintéséhez használja Get-ItemPropertya következőt:

Get-ItemProperty -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
ProgramFilesDir          : C:\Program Files
CommonFilesDir           : C:\Program Files\Common Files
ProgramFilesDir (x86)    : C:\Program Files (x86)
CommonFilesDir (x86)     : C:\Program Files (x86)\Common Files
CommonW6432Dir           : C:\Program Files\Common Files
DevicePath               : C:\WINDOWS\inf
MediaPathUnexpanded      : C:\WINDOWS\Media
ProgramFilesPath         : C:\Program Files
ProgramW6432Dir          : C:\Program Files
SM_ConfigureProgramsName : Set Program Access and Defaults
SM_GamesName             : Games
PSPath                   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWA
                           RE\Microsoft\Windows\CurrentVersion
PSParentPath             : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWA
                           RE\Microsoft\Windows
PSChildName              : CurrentVersion
PSDrive                  : HKLM
PSProvider               : Microsoft.PowerShell.Core\Registry

A kulcs Windows PowerShell-hez kapcsolódó tulajdonságai mind "PS" előtaggal rendelkeznek, például PSPath, PSParentPath, PSChildName és PSProvider.

A jelölést használhatja az *.* aktuális helyre való hivatkozáshoz. Először a CurrentVersion beállításjegyzék-tárolóra válthatSet-Location:

Set-Location -Path Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

Másik lehetőségként használhatja a beépített PSDrive-ot HKLM: a következőkkel Set-Location:

Set-Location -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion

Ezután az . aktuális hely jelölésével teljes elérési út megadása nélkül listázhatja a tulajdonságokat:

Get-ItemProperty -Path .
...
DevicePath          : C:\WINDOWS\inf
MediaPathUnexpanded : C:\WINDOWS\Media
ProgramFilesDir     : C:\Program Files
...

Az útvonalbővítés ugyanúgy működik, mint a fájlrendszeren belül, így innen lekérheti az ItemProperty listát a használathoz HKLM:\SOFTWARE\Microsoft\Windows\Help Get-ItemProperty -Path ..\Help.

Egyetlen beállításjegyzék-bejegyzés lekérése

Ha egy adott bejegyzést szeretne lekérni egy beállításkulcsban, számos lehetséges módszer egyikét használhatja. Ez a példa a DevicePath értékét keresi meg a következőbenHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion: .

Az Elérési út paraméterrel Get-ItemPropertyadja meg a kulcs nevét, a Név paramétert pedig a DevicePath-bejegyzés nevének megadásához.

Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion -Name DevicePath
DevicePath   : C:\WINDOWS\inf
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows
PSChildName  : CurrentVersion
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry

Ez a parancs a Windows PowerShell szabványos tulajdonságait és a DevicePath tulajdonságot adja vissza.

Feljegyzés

Bár Get-ItemProperty a Szűrő, a Belefoglalás és a Kizárás paraméterekkel rendelkezik, nem használhatók tulajdonságnév szerinti szűrésre. Ezek a paraméterek a beállításkulcsokra vonatkoznak, amelyek elemútvonalak, és nem beállításjegyzék-bejegyzések, amelyek elemtulajdonságok.

Egy másik lehetőség a parancssori reg.exe eszköz használata. Ha segítségre van szüksége reg.exe, írja be reg.exe /? a parancssort. A DevicePath bejegyzés megkereséséhez használja reg.exe az alábbi parancsot:

reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion /v DevicePath
! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
    DevicePath  REG_EXPAND_SZ   %SystemRoot%\inf

A WshShell COM-objektummal is megkereshet néhány beállításjegyzék-bejegyzést, bár ez a módszer nem működik nagy bináris adatokkal vagy olyan beállításjegyzék-bejegyzésnevekkel, amelyek karaktereket, például fordított perjelet (\) tartalmaznak. Fűzze hozzá a tulajdonság nevét az elem elérési útjára egy \ elválasztóval:

(New-Object -ComObject WScript.Shell).RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\DevicePath")
%SystemRoot%\inf

Egyetlen beállításjegyzék-bejegyzés beállítása

Ha módosítani szeretne egy adott bejegyzést egy beállításkulcsban, számos lehetséges módszer egyikét használhatja. Ez a példa módosítja az Elérési út bejegyzést a következő alattHKEY_CURRENT_USER\Environment: . Az Elérési út bejegyzés megadja, hogy hol találhatók végrehajtható fájlok.

  1. Az Elérési út bejegyzés aktuális értékének lekérése a következő használatávalGet-ItemProperty: .
  2. Adja hozzá az új értéket, és válassza el egy ;.
  3. Használja Set-ItemProperty a megadott kulccsal, bejegyzésnévvel és értékkel a beállításjegyzék-bejegyzés módosításához.
$value = Get-ItemProperty -Path HKCU:\Environment -Name Path
$newpath = $value.Path += ";C:\src\bin\"
Set-ItemProperty -Path HKCU:\Environment -Name Path -Value $newpath

Feljegyzés

Bár Set-ItemProperty a Szűrő, a Belefoglalás és a Kizárás paraméterekkel rendelkezik, nem használhatók tulajdonságnév szerinti szűrésre. Ezek a paraméterek olyan beállításkulcsokra vonatkoznak , amelyek elemútvonalak, és nem beállításjegyzék-bejegyzések, amelyek elemtulajdonságok.

Egy másik lehetőség a Reg.exe parancssori eszköz használata. Ha segítségre van szüksége reg.exe, írjon be reg.exe /? egy parancssort.

Az alábbi példa úgy módosítja az Elérési út bejegyzést, hogy eltávolítja a fenti példában hozzáadott elérési utat. Get-ItemProperty a rendszer továbbra is az aktuális érték lekérésére szolgál, hogy ne kelljen elemeznie a visszaadott sztringet reg query. A SubString és a LastIndexOf metódusok az Elérési út bejegyzéshez hozzáadott utolsó elérési út lekérésére szolgálnak.

$value = Get-ItemProperty -Path HKCU:\Environment -Name Path
$newpath = $value.Path.SubString(0, $value.Path.LastIndexOf(';'))
reg add HKCU\Environment /v Path /d $newpath /f
The operation completed successfully.

Új beállításjegyzék-bejegyzések létrehozása

Ha a CurrentVersion kulcshoz egy "PowerShellPath" nevű új bejegyzést szeretne hozzáadni, használja New-ItemProperty a kulcs elérési útját, a bejegyzés nevét és értékét. Ebben a példában a Windows PowerShell változó $PSHomeértékét fogjuk használni, amely a Windows PowerShell telepítési könyvtárának elérési útját tárolja.

Az új bejegyzést a következő paranccsal adhatja hozzá a kulcshoz, és a parancs az új bejegyzéssel kapcsolatos információkat is visszaadja:

$newItemPropertySplat = @{
    Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion'
    Name = 'PowerShellPath'
    PropertyType = 'String'
    Value = $PSHome
}
New-ItemProperty @newItemPropertySplat
PSPath         : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
PSParentPath   : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows
PSChildName    : CurrentVersion
PSDrive        : HKLM
PSProvider     : Microsoft.PowerShell.Core\Registry
PowerShellPath : C:\Program Files\Windows PowerShell\v1.0

A PropertyType-nak egy Microsoft.Win32.RegistryValueKind enumerálási tagnak kell lennie a következő táblázatból:

  • String - REG_SZ értékekhez használatos. Objektum átadása [System.String] az Érték paraméternek.
  • ExpandString - REG_EXPAND_SZ értékekhez használatos. Objektum átadása [System.String] az Érték paraméternek. A sztringnek az érték lekérésekor kibontott környezeti változókra mutató nem létező hivatkozásokat kell tartalmaznia.
  • Binary - REG_BINARY értékekhez használatos. Objektum átadása [System.Byte[]] az Érték paraméternek.
  • DWord - REG_DWORD értékekhez használatos. Objektum átadása [System.Int32] az Érték paraméternek.
  • MultiString - REG_MULTI_SZ értékekhez használatos. Objektum átadása [System.String[]] az Érték paraméternek.
  • QWord - REG_QWORD értékekhez használatos. Objektum átadása [System.Int64] az Érték paraméternek.

A beállításjegyzék-bejegyzéseket több helyre is felveheti az Elérési út paraméter értéktömbjének megadásával:

$newItemPropertySplat = @{
    Name = 'PowerShellPath'
    PropertyType = 'String'
    Value = $PSHome
    Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion',
           'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion'
}
New-ItemProperty @newItemPropertySplat

Felülírhat egy már meglévő beállításjegyzékbejegyzési értéket is, ha a Force paramétert bármely New-ItemProperty parancshoz hozzáadja.

Az alábbi példák bemutatják, hogyan hozhat létre új beállításjegyzék-bejegyzéseket különböző típusúakból. A beállításjegyzék értékei egy MySoftwareKey nevű új kulccsal jönnek létre a következő helyenHKEY_CURRENT_USER\Software: . A $key változó az új kulcsobjektum tárolására szolgál.

$key = New-Item -Path HKCU:\Software -Name MySoftwareKey
$newItemPropertySplat = @{
    Path = $key.PSPath
    Name = 'DefaultFolders'
    PropertyType = 'MultiString'
    Value = 'Home', 'Temp', 'Publish'
}
New-ItemProperty @newItemPropertySplat
DefaultFolders : {Home, Temp, Publish}
PSPath         : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\MySoftwareKey
PSParentPath   : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software
PSChildName    : MySoftwareKey
PSProvider     : Microsoft.PowerShell.Core\Registry

A következő parancsokban használhatja a kulcsobjektum PSPath tulajdonságát.

New-ItemProperty -Path $key.PSPath -Name MaxAllowed -PropertyType QWord -Value 1024
MaxAllowed   : 1024
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\MySoftwareKey
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software
PSChildName  : MySoftwareKey
PSProvider   : Microsoft.PowerShell.Core\Registry

A pipával $key New-ItemProperty is hozzáadhat értéket a kulcshoz.

$date = Get-Date -Format 'dd-MMM-yyyy'
$newItemPropertySplat = @{
    Name = 'BinaryDate'
    PropertyType = 'Binary'
    Value = ([System.Text.Encoding]::UTF8.GetBytes($date))
}
$key | New-ItemProperty @newItemPropertySplat
BinaryDate   : {51, 49, 45, 74…}
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software\MySoftwareKey
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Software
PSChildName  : MySoftwareKey
PSProvider   : Microsoft.PowerShell.Core\Registry

Az új bejegyzések tartalmának $key megjelenítése.

$key
    Hive: HKEY_CURRENT_USER\Software

Name                           Property
----                           --------
MySoftwareKey                  DefaultFolders : {Home, Temp, Publish}
                               MaxAllowed     : 1024
                               BinaryDate     : {51, 49, 45, 74…}

Az alábbi példa az egyes beállításjegyzék-bejegyzések értéktípusát mutatja be:

$key.GetValueNames() | Select-Object @{n='ValueName';e={$_}},
     @{n='ValueKind';e={$key.GetValueKind($_)}},
     @{n='Type';e={$key.GetValue($_).GetType()}},
     @{n='Value';e={$key.GetValue($_)}}
ValueName        ValueKind Type            Value
---------        --------- ----            -----
DefaultFolders MultiString System.String[] {Home, Temp, Publish}
MaxAllowed           QWord System.Int64    1024
BinaryDate          Binary System.Byte[]   {51, 49, 45, 74…}

Beállításjegyzék-bejegyzések átnevezése

A PowerShellPath-bejegyzés "PSHome" névre való átnevezéséhez használja a következőtRename-ItemProperty:

$renameItemPropertySplat = @{
    Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion'
    Name = 'PowerShellPath'
    NewName = 'PSHome'
}
Rename-ItemProperty @renameItemPropertySplat

Az átnevezett érték megjelenítéséhez adja hozzá a PassThru paramétert a parancshoz.

$renameItemPropertySplat = @{
    Path = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion'
    Name = 'PowerShellPath'
    NewName = 'PSHome'
    PassThru = $true
}
Rename-ItemProperty @renameItemPropertySplat

Beállításjegyzék-bejegyzések törlése

A PSHome és a PowerShellPath beállításjegyzék-bejegyzéseinek törléséhez használja a következőt Remove-ItemProperty:

Remove-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PSHome
Remove-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion -Name PowerShellPath