আপনি সক্রিয় ডিরেক্টরিতে কম্পিউটার অবজেক্টের বর্ণনায় বিভিন্ন দরকারী তথ্য সংরক্ষণ করতে পারেন। উদাহরণস্বরূপ, কম্পিউটার মডেল, হার্ডওয়্যার ইনভেন্টরি বা সর্বশেষ লগ-অন ব্যবহারকারীর নাম সম্পর্কে তথ্য। এই নিবন্ধে, আমরা কীভাবে স্বয়ংক্রিয়ভাবে বিবরণ-এ তথ্য পূরণ ও আপডেট করতে হয় তা দেখব PowerShell ব্যবহার করে সক্রিয় ডিরেক্টরিতে কম্পিউটার অবজেক্টের ক্ষেত্র।
PowerShell দিয়ে অ্যাক্টিভ ডিরেক্টরিতে কম্পিউটারের বর্ণনার ক্ষেত্র আপডেট করুন
উদাহরণস্বরূপ, আপনি সক্রিয় ডিরেক্টরি ব্যবহারকারী এবং কম্পিউটার কনসোলে কম্পিউটার এবং সার্ভারের জন্য বর্ণনা ক্ষেত্রটি কম্পিউটারের নির্মাতা, মডেল এবং সিরিয়াল নম্বর সম্পর্কে তথ্য প্রদর্শন করতে চান৷ আপনি নিম্নলিখিত PowerShell কমান্ড ব্যবহার করে WMI থেকে আপনার স্থানীয় মেশিনে এই তথ্য পেতে পারেন:Get-WMIObject Win32_ComputerSystemProduct | Select Vendor, Name, IdentifyingNumber
নির্বাচন করুন
WMI প্রশ্ন নিম্নলিখিত ডেটা প্রদান করে:
- বিক্রেতা – HP
- নাম – Proliant DL 360 G5
- আইডেন্টিফাইং নম্বর – CZJ733xxxx
এনভায়রনমেন্ট ভেরিয়েবল থেকে বর্তমান কম্পিউটারের নাম নিন এবং এটি $computer
-এ বরাদ্দ করুন পরিবর্তনশীল:
$computer = $env:COMPUTERNAME
তারপর কম্পিউটারের হার্ডওয়্যার সম্পর্কে তথ্য সংরক্ষণ করুন:
$computerinfo= Get-WMIObject Win32_ComputerSystemProduct
$Vendor = $computerinfo.vendor
$Model = $computerinfo.Name
$SerialNumber = $computerinfo.identifyingNumber
চলুন দেখি ভেরিয়েবলে কি কি মান নির্ধারণ করা হয়েছে:
$computer
$vendor
$Model
$SerialNumber
অ্যাক্টিভ ডিরেক্টরিতে কম্পিউটার অ্যাকাউন্টের বর্ণনা ক্ষেত্রে প্রাপ্ত ডেটা লিখতে বাকি থাকে। নিম্নলিখিত পাওয়ারশেল স্ক্রিপ্টটি চালান:
$ComputerSearcher = New-Object DirectoryServices.DirectorySearcher
$ComputerSearcher.SearchRoot = "LDAP://$("DC=$(($ENV:USERDNSDOMAIN).Replace(".",",DC="))")"
$ComputerSearcher.Filter = "(&(objectCategory=Computer)(CN=$Computer))"
$computerObj = [ADSI]$ComputerSearcher.FindOne().Path
$computerObj.Put( "Description", "$vendor|$Model|$SerialNumber" )
$computerObj.SetInfo()
Set-ADComputer $computer –Description "$vendor|$Model|$SerialNumber”
আপনি যদি AD PowerShell মডিউল থেকে cmdlets ব্যবহার করতে চান, আপনি RSAT ইনস্টল না করেই সমস্ত কম্পিউটারে মডিউল ফাইল কপি করতে পারেন।
যাচাই করুন যে ADUC কনসোলে কম্পিউটারের বিবরণ ক্ষেত্রটি প্রস্তুতকারক এবং মডেলের তথ্য দেখায়৷
৷
এই ধরনের একটি স্ক্রিপ্ট শুধুমাত্র বর্তমান কম্পিউটার বর্ণনা বৈশিষ্ট্য আপডেট করবে AD এ। আপনি Get-ADComputer এবং foreach
ব্যবহার করে সমস্ত ডোমেন কম্পিউটারের জন্য দূরবর্তীভাবে বর্ণনাগুলি পূরণ করতে পারেন লুপ. কিন্তু কোনো ব্যবহারকারী লগ ইন করলে বা কম্পিউটার বুট আপ হলে কম্পিউটারগুলিকে স্বয়ংক্রিয়ভাবে AD-তে তাদের তথ্য আপডেট করা অনেক বেশি সুবিধাজনক৷
এটি করার জন্য, আপনাকে একটি PowerShell লগন স্ক্রিপ্ট সহ একটি গ্রুপ নীতি তৈরি করতে হবে এবং এটি সমস্ত কম্পিউটারে প্রয়োগ করতে হবে:
- ডোমেন গ্রুপ পলিসি ম্যানেজমেন্ট কনসোল খুলুন (
gpmc.msc
), একটি GPO তৈরি করুন এবং কম্পিউটারের সাথে OU-তে বরাদ্দ করুন; - জিপিও প্রসারিত করুন:ব্যবহারকারী কনফিগারেশন -> নীতি -> উইন্ডোজ সেটিংস -> স্ক্রিপ্ট (লগন / লগঅফ) -> লগন;
- PowerShell স্ক্রিপ্ট-এ যান ট্যাব;
- ফাইলগুলি দেখান ক্লিক করুন৷ বোতাম এবং একটি FillCompDesc.ps1 তৈরি করুন নিম্নলিখিত কোড সহ ফাইল:
# write information about the computer hardware/model in the Description field in Active Directory
$computer = $env:COMPUTERNAME
$computerinfo= Get-WMIObject Win32_ComputerSystemProduct
$Vendor = $computerinfo.vendor
$Model = $computerinfo.Name
$SerialNumber = $computerinfo.identifyingNumber
$DNSDOMAIN= (Get-WmiObject -Namespace root\cimv2 -Class Win32_ComputerSystem).Domain
$ComputerSearcher = New-Object DirectoryServices.DirectorySearcher
$ComputerSearcher.SearchRoot = "LDAP://$("DC=$(($DNSDOMAIN).Replace(".",",DC="))")"
$ComputerSearcher.Filter = "(&(objectCategory=Computer)(CN=$Computer))"
$computerObj = [ADSI]$ComputerSearcher.FindOne().Path
$computerObj.Put( "Description", "$vendor|$Model|$SerialNumber" )
$computerObj.SetInfo()
সহজ সমস্যা সমাধানের জন্য আপনি ঐচ্ছিকভাবে PowerShell স্ক্রিপ্ট অ্যাকশন লগ করতে পারেন। - যোগ করুন ক্লিক করুন বোতাম এবং নিম্নলিখিত স্ক্রিপ্ট প্যারামিটার সেট করুন:
স্ক্রিপ্টের নাম:FillCompDesc.ps1
স্ক্রিপ্ট প্যারামিটার:-ExecutionPolicy Bypass
এই ক্ষেত্রে, আপনাকে PowerShell এক্সিকিউশন নীতি সেটিংস পরিবর্তন করতে হবে না বা আপনার PS1 স্ক্রিপ্ট ফাইলে স্বাক্ষর করতে হবে না পাওয়ারশেল স্ক্রিপ্ট চালান। - প্রমাণিত -এর জন্য একটি নির্দিষ্ট OU-তে AD অনুমতিগুলি অর্পণ করুন ব্যবহারকারীরা ডোমেইন গ্রুপ। OU-তে সমস্ত কম্পিউটার অবজেক্টের বর্ণনা বৈশিষ্ট্য পরিবর্তন করার অধিকার বরাদ্দ করুন (
Write Description
অনুমতি)। এটি ডোমেইন ব্যবহারকারী এবং কম্পিউটারকে কম্পিউটার অবজেক্টের বর্ণনা বৈশিষ্ট্যের মান পরিবর্তন করার অনুমতি দেবে; - লক্ষ্য OU-তে কম্পিউটারগুলি পুনরায় চালু করার পরে এবং গ্রুপ নীতি সেটিংস আপডেট করার পরে, AD-এর বিবরণ ক্ষেত্রটি স্বয়ংক্রিয়ভাবে পূরণ হবে৷ এই ক্ষেত্রটিতে কম্পিউটারের হার্ডওয়্যার সম্পর্কে তথ্য থাকবে৷ আপনি
gpresult
ব্যবহার করে GPO-এর সমস্যা সমাধান করতে পারেন টুল বা নিবন্ধ থেকে টিপস ব্যবহার করে সাধারণ সমস্যা যার ফলে গ্রুপ নীতি প্রযোজ্য হয় না।
এইভাবে, আপনি AD-তে কম্পিউটার অবজেক্টের বিবরণ ক্ষেত্রে যেকোনো তথ্য যোগ করতে পারেন। উদাহরণস্বরূপ, সর্বশেষ লগ-অন ব্যবহারকারীর নাম, বিভাগ (আপনি Get-ADUser cmdlet ব্যবহার করে এই তথ্য পেতে পারেন), কম্পিউটারের আইপি ঠিকানা, বা আপনার প্রয়োজনীয় অন্য কোনো প্রাসঙ্গিক তথ্য৷
দ্রষ্টব্য . এই পদ্ধতির অপূর্ণতা হল যে কোনো প্রমাণীকৃত AD ব্যবহারকারী সক্রিয় ডিরেক্টরিতে যেকোনো কম্পিউটারের বিবরণ পরিবর্তন বা মুছে ফেলতে পারে।এডিতে কম্পিউটারের বিবরণে সর্বশেষ লগ-ইন করা ব্যবহারকারীর নাম যোগ করা
উপরের PowerShell স্ক্রিপ্টটি AD-তে কম্পিউটার অবজেক্টের বর্ণনায় অন্য কোনো তথ্য যোগ করতে ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, যখন কম্পিউটারের বিবরণ বর্তমানে লগ-অন ব্যবহারকারীকে দেখায় তখন এটি কার্যকর। ডোমেন কন্ট্রোলারের নামও যোগ করা যাক যার উপর ব্যবহারকারীকে প্রমাণীকরণ করা হয়েছে (LOGONSERVER
)।
PowerShell লগইন স্ক্রিপ্টে একটি একক লাইন পরিবর্তন করুন:
$computerObj.Put("Description","$vendor|$Model|$SerialNumber|$env:username|$env:LOGONSERVER")
লগঅফ করুন এবং আপনার ব্যবহারকারী অ্যাকাউন্টের অধীনে সাইন ইন করুন। কম্পিউটারের বিবরণ বৈশিষ্ট্যটি এখন বর্তমান ব্যবহারকারীর নাম এবং আপনি যে লগনসার্ভার (ডোমেন কন্ট্রোলার) অনুমোদন করেছেন তা দেখায় তা পরীক্ষা করুন৷
বর্ণনা বৈশিষ্ট্য থেকে ডেটা পার্স করার জন্য, আপনি নিম্নলিখিত পাওয়ারশেল কোড ব্যবহার করতে পারেন:
$ComputerName = 'PC-MUN22s7b2'
$vendor,$Model,$SerialNumber,$Username,$LogonServer = ((Get-ADComputer -identity $ComputerName -Properties *).description).split("|")
আমরা বর্ণনা ক্ষেত্রের মানকে বিভক্ত করি (| দ্বারা পৃথক ) বেশ কয়েকটি পৃথক ভেরিয়েবলে। নির্দিষ্ট দূরবর্তী কম্পিউটারে ব্যবহারকারীর নাম পেতে, শুধু চালান:
$Username
আপনি নিম্নলিখিত PowerShell স্ক্রিপ্ট ব্যবহার করে একটি নির্দিষ্ট ব্যবহারকারী বর্তমানে লগ ইন করা কম্পিউটারের নাম পেতে পারেন:
$user='*M.Becker*'
Get-ADComputer -Filter "description -like '$user'" -properties *|select name,description |ft