রেজিস্ট্রি এডিটর (regedit.exe
) এবং reg.exe
উইন্ডোজে রেজিস্ট্রি অ্যাক্সেস এবং পরিচালনা করার জন্য কমান্ড-লাইন ইউটিলিটি একমাত্র সরঞ্জাম নয়। PowerShell প্রশাসককে রেজিস্ট্রির সাথে ইন্টারঅ্যাক্ট করার জন্য প্রচুর সংখ্যক টুল সরবরাহ করে। PowerShell ব্যবহার করে, আপনি একটি রেজিস্ট্রি কী/প্যারামিটার তৈরি করতে, পরিবর্তন করতে বা মুছে ফেলতে পারেন, মানটি অনুসন্ধান করতে পারেন এবং একটি দূরবর্তী কম্পিউটারে রেজিস্ট্রির সাথে সংযোগ করতে পারেন।
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
PowerShell এর মাধ্যমে একটি রেজিস্ট্রি প্যারামিটার মান পান
অনুগ্রহ করে মনে রাখবেন যে রেজিস্ট্রি কীতে সংরক্ষিত প্যারামিটারগুলি নেস্টেড অবজেক্ট নয়, তবে একটি নির্দিষ্ট রেজিস্ট্রি কী-এর একটি বৈশিষ্ট্য। যেকোন রেজিস্ট্রি কী-তে যেকোনো সংখ্যক প্যারামিটার থাকতে পারে।
কমান্ড ব্যবহার করে বর্তমান রেজিস্ট্রি কী-এর বিষয়বস্তু তালিকাভুক্ত করুন:
dir
অথবা
Get-ChildItem
কমান্ড নেস্টেড রেজিস্ট্রি কী এবং তাদের বৈশিষ্ট্য সম্পর্কে তথ্য প্রদর্শন করেছে। কিন্তু SearchOrderConfig প্যারামিটার সম্পর্কে তথ্য প্রদর্শন করেনি, যা বর্তমান কী-এর একটি বৈশিষ্ট্য।
Get-Item ব্যবহার করুন রেজিস্ট্রি কী-এর পরামিতি পেতে cmdlet:
Get-Item .
বাGet-Item –Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching
আপনি দেখতে পাচ্ছেন, ড্রাইভার সার্চিং কী শুধুমাত্র একটি প্যারামিটার আছে – 1 এর মান সহ SearchOrderConfig।
একটি রেজিস্ট্রি কী প্যারামিটারের মান পেতে, Get-ItemProperty cmdlet ব্যবহার করুন৷
$DriverUpdate = Get-ItemProperty –Path ‘HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DriverSearching’
$DriverUpdate.SearchOrderConfig
আমরা পেয়েছি যে SearchOrderConfig প্যারামিটারের মান হল 1।
PowerShell দিয়ে রেজিস্ট্রি মান পরিবর্তন করা
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
কিভাবে PowerShell দিয়ে একটি নতুন রেজিস্টার কী বা প্যারামিটার তৈরি করবেন?
একটি নতুন রেজিস্ট্রি কী তৈরি করতে, নতুন-আইটেম কমান্ডটি ব্যবহার করুন। চলুন 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)
- DWord (REG_DWORD)
- Qword (REG_QWORD)
- অজানা (অসমর্থিত রেজিস্ট্রি ডেটা প্রকার)
নিশ্চিত করুন যে নতুন কী এবং প্যারামিটার রেজিস্ট্রিতে উপস্থিত হয়েছে।
একটি রেজিস্ট্রি কী বিদ্যমান কিনা তা কীভাবে পরীক্ষা করবেন?
যদি আপনি একটি নির্দিষ্ট রেজিস্ট্রি কী বিদ্যমান কিনা তা পরীক্ষা করতে চান, পরীক্ষা-পথ ব্যবহার করুন cmdlet:
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
রেগ কী থেকে সমস্ত আইটেম সরাতে (কিন্তু কী নিজেই নয়):
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
PowerShell ব্যবহার করে কীওয়ার্ডের জন্য সার্চ রেজিস্ট্রি
পাওয়ারশেল আপনাকে রেজিস্ট্রি অনুসন্ধান করতে দেয়। পরবর্তী নিম্নলিখিতগুলি পরামিতিগুলির জন্য 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*"}
PowerShell এর সাথে রেজিস্ট্রি কী অনুমতি সেট করা
আপনি 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 এর মাধ্যমে দূরবর্তী কম্পিউটার থেকে একটি রেজিস্ট্রি মান পাওয়া
PowerShell আপনাকে দূরবর্তী কম্পিউটারের রেজিস্ট্রি অ্যাক্সেস করতে দেয়। আপনি WinRM (ইনভোক-কমান্ড বা এন্টার-PSSession) ব্যবহার করে একটি দূরবর্তী কম্পিউটারের সাথে সংযোগ করতে পারেন। দূরবর্তী কম্পিউটার থেকে রেজিস্ট্রি প্যারামিটারের মান পেতে:
Invoke-Command –ComputerName srv-fs1 –ScriptBlock {Get-ItemProperty -Path 'HKLM:\System\Setup' -Name WorkingDirectory}
অথবা একটি দূরবর্তী রেজিস্ট্রি সংযোগ ব্যবহার করে (রিমোট রেজিস্ট্রি পরিষেবাটি সক্ষম হতে হবে)
$Server = "lon-fs1"
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Server)
$RegKey= $Reg.OpenSubKey("System\Setup")
$RegValue = $RegKey.GetValue("WorkingDirectory")
তাই আমরা উইন্ডোজ রেজিস্ট্রি এন্ট্রি অ্যাক্সেস এবং পরিচালনা করতে পাওয়ারশেল ব্যবহার করার সাধারণ উদাহরণগুলি কভার করেছি। আপনি এগুলিকে আপনার অটোমেশন স্ক্রিপ্টগুলিতে ব্যবহার করতে পারেন৷
৷