রেজিস্ট্রি এডিটর (regedit.exe) এবং reg.exe কমান্ড-লাইন ইউটিলিটি উইন্ডোজে রেজিস্ট্রি অ্যাক্সেস ও পরিচালনার একমাত্র টুল নয়। পাওয়ারশেল অ্যাডমিনিস্ট্রেটরকে রেজিস্ট্রির সাথে ইন্টারঅ্যাক্ট করার জন্য প্রচুর টুল প্রদান করে। পাওয়ারশেল ব্যবহার করে আপনি রেজিস্ট্রি কী/প্যারামিটার তৈরি, পরিবর্তন বা মুছে ফেলতে পারেন, মান অনুসন্ধান করতে পারেন এবং রিমোট কম্পিউটারের রেজিস্ট্রির সাথে সংযোগ করতে পারেন।
পাওয়ারশেল দিয়ে উইন্ডোজ রেজিস্ট্রি ফাইল সিস্টেমের মতো নেভিগেট করুন
পাওয়ারশেলে রেজিস্ট্রি নিয়ে কাজ করা সাধারণ ফাইল কাজের মতোই। মূল পার্থক্য হল এই ধারণায় রেজিস্ট্রি কীগুলি ফাইলের অনুরূপ, এবং রেজিস্ট্রি প্যারামিটারগুলি এই ফাইলগুলির প্রপার্টি।
আপনার কম্পিউটারে উপলব্ধ ড্রাইভের তালিকা দেখান:
get-psdrive

লক্ষ্য করুন যে ড্রাইভ লেটারসহ ড্রাইভগুলির মধ্যে **রেজিস্ট্রি প্রোভাইডার** মাধ্যমে উপলব্ধ বিশেষ ডিভাইস রয়েছে — HKCU (HKEY_CURRENT_USER) এবং HKLM (HKEY_LOCAL_MACHINE)। আপনি সাদা ড্রাইভের মতো রেজিস্ট্রি ট্রি ব্রাউজ করতে পারেন। **HKLM:\** এবং **HKCU:\** একটি নির্দিষ্ট রেজিস্ট্রি হাইভ অ্যাক্সেস করতে ব্যবহৃত হয়।
cd HKLM:\
Dir -ErrorAction SilentlyContinue

তাই, আপনি ফাইল ও ফোল্ডার পরিচালনার জন্য ব্যবহৃত একই পাওয়ারশেল কমান্ডলেট ব্যবহার করে রেজিস্ট্রি কী এবং তাদের প্যারামিটার অ্যাক্সেস করতে পারেন।
রেজিস্ট্রি কী রেফার করতে xxx-Item সফিক্স বিশিষ্ট কমান্ডলেট ব্যবহার করুন:
Get-Item– একটি রেজিস্ট্রি কী পানNew-Item— একটি নতুন রেজিস্ট্রি কী তৈরি করুনRemove-Item– একটি রেজিস্ট্রি কী মুছুন
রেজিস্ট্রি প্যারামিটারগুলি রেজিস্ট্রি কী প্রপার্টি হিসেবে বিবেচনা করা হয় (ফাইল/ফোল্ডার প্রপার্টির অনুরূপ)। রেজিস্ট্রি প্যারামিটার পরিচালনার জন্য xxx-ItemProperty কমান্ডলেট ব্যবহার করা হয়:
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 প্যারামিটার সম্পর্কে তথ্য দেখিয়েনি।
রেজিস্ট্রি কী প্যারামিটার পেতে Get-Item কমান্ডলেট ব্যবহার করুন:
Get-Item .
অথবা
Get-Item –Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching
যে 보인다, DriverSearching কীতে শুধুমাত্র একটি প্যারামিটার রয়েছে – SearchOrderConfig যার মান ১।

একটি রেজিস্ট্রি কী প্যারামিটারের মান পেতে Get-ItemProperty কমান্ডলেট ব্যবহার করুন।
$DriverUpdate = Get-ItemProperty –Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching’
$DriverUpdate.SearchOrderConfig

আমরা পেলাম যে SearchOrderConfig প্যারামিটারের মান ১।
পাওয়ারশেল দিয়ে রেজিস্ট্রি মান পরিবর্তন করুন
SearchOrderConfig রেজিস্ট্রি প্যারামিটারের মান পরিবর্তন করতে Set-ItemProperty কমান্ডলেট ব্যবহার করুন:
Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching' -Name SearchOrderConfig -Value 0
নিশ্চিত করুন যে প্যারামিটার মান পরিবর্তন হয়েছে:
Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching' -Name SearchOrderConfig

পাওয়ারশেল দিয়ে নতুন রেজিস্ট্রি কী বা প্যারামিটার কীভাবে তৈরি করবেন?
নতুন রেজিস্ট্রি কী তৈরি করতে New-Item কমান্ড ব্যবহার করুন। আসুন 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"
রেজিস্ট্রি প্যারামিটারের জন্য নিম্নলিখিত ডেটা টাইপ ব্যবহার করা যেতে পারে:
- String (REG_SZ)
- ExpandString (REG_EXPAND_SZ)
- MultiString (REG_MULTI_SZ)
- Binary (REG_BINARY)
- DWord (REG_DWORD)
- Qword (REG_QWORD)
- Unknown (অসমর্থিত রেজিস্ট্রি ডেটা টাইপ)
নতুন কী এবং প্যারামিটার রেজিস্ট্রিতে উপস্থিত হয়েছে কিনা নিশ্চিত করুন।

রেজিস্ট্রি কী আছে কিনা চেক করার উপায়?
যদি আপনাকে চেক করতে হয় যে কোনো নির্দিষ্ট রেজিস্ট্রি কী আছে কিনা, Test-Path কমান্ডলেট ব্যবহার করুন:
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" }
Copy-Item কমান্ডলেট ব্যবহার করে আপনি এক রেজিস্ট্রি কী থেকে অন্যে এন্ট্রি কপি করতে পারেন:
$source='HKLM:\SOFTWARE\7-zip\'
$dest = 'HKLM:\SOFTWARE\backup'
Copy-Item -Path $source -Destination $dest -Recurse
সাবকী সহ সব কপি করতে –Recurse স্যুইচ যোগ করুন।
রেজিস্ট্রি কী বা প্যারামিটার মুছুন
রেজিস্ট্রি কীতে একটি প্যারামিটার মুছে ফেলতে Remove-ItemProperty কমান্ড ব্যবহার করা হয়। আসুন আগে তৈরি করা SuperParamString প্যারামিটারটি মুছে ফেলি:
$HKCU_Desktop= "HKCU:\Control Panel\Desktop"
Remove-ItemProperty –Path $HKCU_Desktop\NewKey –Name "SuperParamString"
আপনি সমস্ত কন্টেন্টসহ পুরো রেজিস্ট্রি কী মুছে ফেলতে পারেন:
Remove-Item –Path $HKCU_Desktop\NewKey –Recurse
নোট। –Recurse স্যুইচ নির্দেশ করে যে সব সাবকী রিকার্সিভলি মুছে ফেলতে হবে।
রেজিস্ট্রি কীতে সব আইটেম মুছে ফেলতে (কী নিজে নয়):
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 কমান্ডলেট ব্যবহার করে বর্তমান রেজিস্ট্রি কী পারমিশন পেতে পারেন (Get-ACL কমান্ডলেট ফাইল ও ফোল্ডারে NTFS পারমিশন পরিচালনাও করতে দেয়)।
$rights = Get-Acl -Path 'HKCU:\Control Panel\Desktop\NewKey'
$rights.Access.IdentityReference

নিচের উদাহরণে, আমরা এই রেজিস্ট্রি কীতে ACL পরিবর্তন করব বিল্ট-ইন Users গ্রুপকে রাইট অ্যাক্সেস দেওয়ার জন্য।
বর্তমান পারমিশন পান:
$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
অ্যাক্সেস টাইপ (Allow/Deny):
$acType = [System.Security.AccessControl.AccessControlType]::Allow
একটি অ্যাক্সেস 룰 তৈরি করুন:
$rule = New-Object System.Security.AccessControl.RegistryAccessRule ($idRef, $regRights, $inhFlags, $prFlags, $acType)
ব ilm ACL-এ নতুন রুল যোগ করুন:
$rights.AddAccessRule($rule)
রেজিস্ট্রি কীতে নতুন পারমিশন প্রয়োগ করুন:
$rights | Set-Acl -Path 'HKCU:\Control Panel\Desktop\NewKey'
নতুন গ্রুপ রেজিস্ট্রি কী ACL-এ প্রদর্শিত হচ্ছে কিনা নিশ্চিত করুন।

পাওয়ারশেল ব্যবহার করে রিমোট কম্পিউটার থেকে রেজিস্ট্রি মান পান
পাওয়ারশেল আপনাকে একটি রিমোট কম্পিউটারের রেজিস্ট্রি অ্যাক্সেস করতে দেয়। আপনি 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")
টিপ। আপনার যদি ডোমেন কম্পিউটারগুলোর একটি বড় সংখ্যায় নির্দিষ্ট রেজিস্ট্রি প্যারামিটার তৈরি/পরিবর্তন করতে হয়, তবে GPO ফিচার ব্যবহার করা সহজ।
আমরা পাওয়ারশেল ব্যবহার করে উইন্ডোজ রেজিস্ট্রি এন্ট্রি অ্যাক্সেস ও পরিচালনার সাধারণ উদাহরণগুলো আলোচনা করেছি। আপনি আপনার অটোমেশন স্ক্রিপ্টে এগুলো ব্যবহার করতে পারেন।