आप सक्रिय निर्देशिका में कंप्यूटर ऑब्जेक्ट के विवरण में विभिन्न उपयोगी जानकारी संग्रहीत कर सकते हैं। उदाहरण के लिए, कंप्यूटर मॉडल, हार्डवेयर इन्वेंट्री या अंतिम लॉग-ऑन उपयोगकर्ता नाम के बारे में जानकारी। इस लेख में, हम देखेंगे कि विवरण . में जानकारी को स्वचालित रूप से कैसे भरें और अपडेट करें PowerShell का उपयोग करके सक्रिय निर्देशिका में कंप्यूटर ऑब्जेक्ट का क्षेत्र।
पावरशेल के साथ सक्रिय निर्देशिका में कंप्यूटर विवरण फ़ील्ड को अपडेट करें
उदाहरण के लिए, आप चाहते हैं कि सक्रिय निर्देशिका उपयोगकर्ता और कंप्यूटर कंसोल में कंप्यूटर और सर्वर के लिए विवरण फ़ील्ड कंप्यूटर के निर्माता, मॉडल और सीरियल नंबर के बारे में जानकारी प्रदर्शित करे। आप निम्न PowerShell कमांड का उपयोग करके WMI से अपनी स्थानीय मशीन पर यह जानकारी प्राप्त कर सकते हैं:Get-WMIObject Win32_ComputerSystemProduct | Select Vendor, Name, IdentifyingNumber
WMI क्वेरी निम्न डेटा लौटाती है:
- विक्रेता - एचपी
- नाम - प्रोलिएंट 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
का उपयोग करके सभी डोमेन कंप्यूटरों के लिए दूरस्थ रूप से विवरण पॉप्युलेट कर सकते हैं कुंडली। लेकिन जब कोई उपयोगकर्ता लॉग इन करता है या कंप्यूटर बूट होता है तो कंप्यूटर स्वचालित रूप से एडी में अपनी जानकारी अपडेट करना अधिक सुविधाजनक होता है।
ऐसा करने के लिए, आपको पावरशेल लॉगऑन स्क्रिप्ट के साथ एक समूह नीति बनाने और इसे सभी कंप्यूटरों पर लागू करने की आवश्यकता है:
- डोमेन समूह नीति प्रबंधन कंसोल खोलें (
gpmc.msc
), एक GPO बनाएं और इसे कंप्यूटर के साथ OU को असाइन करें; - जीपीओ का विस्तार करें:उपयोगकर्ता कॉन्फ़िगरेशन -> नीतियां -> विंडोज सेटिंग्स -> स्क्रिप्ट (लॉगऑन / लॉगऑफ) -> लॉगऑन;
- पावरशेल स्क्रिप्ट पर जाएं टैब;
- फ़ाइलें दिखाएं क्लिक करें बटन बनाएं और एक 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 का उपयोग करके यह जानकारी प्राप्त कर सकते हैं), कंप्यूटर का IP पता, या कोई अन्य प्रासंगिक जानकारी जो आपको चाहिए।
नोट . इस दृष्टिकोण का दोष यह है कि कोई भी प्रमाणित 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
आप उस कंप्यूटर का नाम प्राप्त कर सकते हैं जिस पर एक विशिष्ट उपयोगकर्ता वर्तमान में निम्न पावरशेल स्क्रिप्ट का उपयोग करके लॉग ऑन है:
$user='*M.Becker*'
Get-ADComputer -Filter "description -like '$user'" -properties *|select name,description |ft