रजिस्ट्री संपादक (regedit.exe
) और reg.exe
विंडोज़ में रजिस्ट्री तक पहुँचने और प्रबंधित करने के लिए कमांड-लाइन उपयोगिता एकमात्र उपकरण नहीं है। PowerShell व्यवस्थापक को रजिस्ट्री के साथ सहभागिता करने के लिए बड़ी संख्या में उपकरण प्रदान करता है। पावरशेल का उपयोग करके, आप रजिस्ट्री कुंजी/पैरामीटर बना सकते हैं, संशोधित कर सकते हैं या हटा सकते हैं, मान की खोज कर सकते हैं और दूरस्थ कंप्यूटर पर रजिस्ट्री से कनेक्ट कर सकते हैं।
Windows रजिस्ट्री को PowerShell के साथ फ़ाइल सिस्टम की तरह नेविगेट करें
PowerShell में रजिस्ट्री के साथ कार्य करना स्थानीय डिस्क पर सामान्य फ़ाइलों के साथ कार्य करने के समान है। मुख्य अंतर यह है कि इस अवधारणा में रजिस्ट्री कुंजियाँ फ़ाइलों के अनुरूप हैं, और रजिस्ट्री पैरामीटर इन फ़ाइलों के गुण हैं।
अपने कंप्यूटर पर उपलब्ध ड्राइव की सूची प्रदर्शित करें:
get-psdrive
ध्यान दें कि ड्राइव के बीच (साइन किए गए ड्राइव अक्षरों के साथ) रजिस्ट्री प्रदाता के माध्यम से विशेष उपकरण उपलब्ध हैं। - HKCU (HKEY_CURRENT_USER) और HKLM (HKEY_LOCAL_MACHINE)। आप रजिस्ट्री ट्री को उसी तरह ब्राउज़ कर सकते हैं जैसे आप अपने ड्राइव पर नेविगेट करते हैं। HKLM:\ और HKCU:\ एक विशिष्ट रजिस्ट्री हाइव तक पहुँचने के लिए उपयोग किया जाता है।
cd HKLM:\
Dir -ErrorAction SilentlyContinue
यानी, आप उसी PowerShell cmdlets का उपयोग करके रजिस्ट्री कुंजी और उनके पैरामीटर तक पहुंच सकते हैं जिसका उपयोग आप फ़ाइलों और फ़ोल्डरों को प्रबंधित करने के लिए करते हैं।
रजिस्ट्री कुंजियों को संदर्भित करने के लिए, xxx-आइटम . के साथ cmdlets का उपयोग करें :
Get-Item
- एक रजिस्ट्री कुंजी प्राप्त करेंNew-Item
— एक नई रजिस्ट्री कुंजी बनाएंRemove-Item
- एक रजिस्ट्री कुंजी हटाएं
रजिस्ट्री पैरामीटर को रजिस्ट्री कुंजी के गुणों के रूप में माना जाना चाहिए (फ़ाइल/फ़ोल्डर गुणों के समान)। xxx -आइटमप्रॉपर्टी cmdlets का उपयोग रजिस्ट्री मापदंडों को प्रबंधित करने के लिए किया जाता है:
Get-ItemProperty
- रजिस्ट्री पैरामीटर का मान प्राप्त करेंSet-ItemProperty
- रजिस्ट्री पैरामीटर का मान बदलेंNew-ItemProperty
- रजिस्ट्री पैरामीटर बनाएंRename-ItemProperty
- पैरामीटर का नाम बदलेंRemove-ItemProperty
- रजिस्ट्री पैरामीटर हटाएं
आप दो आदेशों में से एक का उपयोग करके विशिष्ट रजिस्ट्री कुंजी (उदाहरण के लिए, स्वचालित ड्राइवर अपडेट की सेटिंग के लिए जिम्मेदार) पर नेविगेट कर सकते हैं:
cd HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching
याSet-Location -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching
पावरशेल के माध्यम से रजिस्ट्री पैरामीटर मान प्राप्त करें
कृपया ध्यान दें कि रजिस्ट्री कुंजी में संग्रहीत पैरामीटर नेस्टेड ऑब्जेक्ट नहीं हैं, बल्कि एक विशिष्ट रजिस्ट्री कुंजी की संपत्ति हैं। उन किसी भी रजिस्ट्री कुंजी में कितने भी पैरामीटर हो सकते हैं।
कमांड का उपयोग करके वर्तमान रजिस्ट्री कुंजी की सामग्री को सूचीबद्ध करें:
dir
या
Get-ChildItem
कमांड ने नेस्टेड रजिस्ट्री कुंजियों और उनके गुणों के बारे में जानकारी प्रदर्शित की है। लेकिन SearchOrderConfig पैरामीटर के बारे में जानकारी प्रदर्शित नहीं की, जो वर्तमान कुंजी की एक संपत्ति है।
गेट-आइटम का उपयोग करें cmdlet रजिस्ट्री कुंजी के पैरामीटर प्राप्त करने के लिए:
Get-Item .
याGet-Item –Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching
जैसा कि आप देख सकते हैं, DriverSearching कुंजी का केवल एक पैरामीटर है - SearchOrderConfig 1 के मान के साथ।
रजिस्ट्री कुंजी पैरामीटर का मान प्राप्त करने के लिए, Get-ItemProperty cmdlet का उपयोग करें।
$DriverUpdate = Get-ItemProperty –Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching’
$DriverUpdate.SearchOrderConfig
हमने पाया कि SearchOrderConfig पैरामीटर का मान 1 है।
पावरशेल के साथ रजिस्ट्री मान बदलना
SearchOrderConfig reg पैरामीटर का मान बदलने के लिए, Set-ItemProperty cmdlet का उपयोग करें:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching' -Name SearchOrderConfig -Value 0
सुनिश्चित करें कि पैरामीटर मान बदल गया है:
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching' -Name SearchOrderConfig
पावरशेल के साथ एक नई रजिस्टर कुंजी या पैरामीटर कैसे बनाएं?
नई रजिस्ट्री कुंजी बनाने के लिए, न्यू-आइटम कमांड का उपयोग करें। आइए 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)
- विस्तार स्ट्रिंग (REG_EXPAND_SZ)
- मल्टीस्ट्रिंग (REG_MULTI_SZ)
- बाइनरी (REG_BINARY)
- डीवर्ड (REG_DWORD)
- Qword (REG_QWORD)
- अज्ञात (असमर्थित रजिस्ट्री डेटा प्रकार)
सुनिश्चित करें कि नई कुंजी और पैरामीटर रजिस्ट्री में दिखाई दिए हैं।
कैसे जांचें कि रजिस्ट्री कुंजी मौजूद है या नहीं?
यदि आपको यह जाँचने की आवश्यकता है कि क्या कोई विशिष्ट रजिस्ट्री कुंजी मौजूद है, तो परीक्षण-पथ . का उपयोग करें सीएमडीलेट:
Test-Path 'HKCU:\Control Panel\Desktop\NewKey'
निम्न पावरशेल स्क्रिप्ट जांच करेगी कि क्या कोई विशिष्ट रजिस्ट्री मान मौजूद है, और यदि नहीं, तो इसे बनाएं।
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" }
कॉपी-आइटम का उपयोग करना cmdlet, आप प्रविष्टियों को एक रजिस्ट्री कुंजी से दूसरे में कॉपी कर सकते हैं:
$source='HKLM:\SOFTWARE\7-zip\'
$dest = 'HKLM:\SOFTWARE\backup'
Copy-Item -Path $source -Destination $dest -Recurse
यदि आप उपकुंजियों सहित सब कुछ कॉपी करना चाहते हैं, तो –Recurse . जोड़ें स्विच करें।
रजिस्ट्री कुंजी या पैरामीटर मिटाना
निकालें-आइटमप्रॉपर्टी कमांड का उपयोग रजिस्ट्री कुंजी में एक पैरामीटर को हटाने के लिए किया जाता है। आइए पहले बनाए गए SuperParamString पैरामीटर को हटा दें:
$HKCU_Desktop= "HKCU:\Control Panel\Desktop"
Remove-ItemProperty –Path $HKCU_Desktop\NewKey –Name "SuperParamString"
आप संपूर्ण रजिस्ट्री कुंजी को उसकी सभी सामग्री के साथ हटा सकते हैं:
Remove-Item –Path $HKCU_Desktop\NewKey –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
पावरशेल का उपयोग करके कीवर्ड के लिए रजिस्ट्री खोजें
पावरशेल आपको रजिस्ट्री को खोजने की अनुमति देता है। अगला निम्नलिखित पैरामीटर के लिए 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*"}
पावरशेल के साथ रजिस्ट्री कुंजी अनुमतियां सेट करना
आप Get-ACL cmdlet का उपयोग करके वर्तमान रजिस्ट्री कुंजी अनुमतियां प्राप्त कर सकते हैं (Get-ACL cmdlet आपको फ़ाइलों और फ़ोल्डरों पर NTFS अनुमतियों को प्रबंधित करने की भी अनुमति देता है)।
$rights = Get-Acl -Path 'HKCU:\Control Panel\Desktop\NewKey'
$rights.Access.IdentityReference
निम्नलिखित उदाहरण में, हम अंतर्निहित उपयोगकर्ता समूह को लेखन पहुंच प्रदान करने के लिए इस रजिस्ट्री कुंजी में ACL को संशोधित करेंगे।
वर्तमान अनुमतियां प्राप्त करें:
$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 के माध्यम से रजिस्ट्री मान प्राप्त करना
पावरशेल आपको दूरस्थ कंप्यूटर की रजिस्ट्री तक पहुंचने की अनुमति देता है। आप 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")
इसलिए हमने Windows रजिस्ट्री प्रविष्टियों तक पहुँचने और प्रबंधित करने के लिए PowerShell का उपयोग करने के विशिष्ट उदाहरणों को शामिल किया है। आप उन्हें अपनी ऑटोमेशन स्क्रिप्ट में उपयोग कर सकते हैं।