PowerShell का उपयोग करते हुए, मैं ActiveDirect मॉड्यूल की आवश्यकता के बिना वर्तमान में डोमेन उपयोगकर्ता के पूर्ण नाम (न केवल इसके उपयोगकर्ता नाम) पर कैसे लॉग इन कर सकता हूं?
PowerShell का उपयोग करते हुए, मैं ActiveDirect मॉड्यूल की आवश्यकता के बिना वर्तमान में डोमेन उपयोगकर्ता के पूर्ण नाम (न केवल इसके उपयोगकर्ता नाम) पर कैसे लॉग इन कर सकता हूं?
जवाबों:
$dom = $env:userdomain
$usr = $env:username
([adsi]"WinNT://$dom/$usr,user").fullname
यह दिखाता है:
John Doe
कुछ अन्य (अधिकतर) अस्पष्ट गुण भी उपलब्ध हैं। कुछ उपयोगी:
प्रयत्न:
[adsi]"WinNT://$dom/$usr,user" | select *
मुझे स्वीकृत उत्तर पसंद है, लेकिन सिर्फ इसलिए कि मैं खुद इसे आज़माना चाहता था:
$user = whoami
Get-WMIObject Win32_UserAccount | where caption -eq $user | select FullName
रिटर्न:
FullName
--------
TheCleaner
या यदि आप शीर्ष लेख की जानकारी और सिर्फ परिणाम नहीं चाहते हैं:
$user = whoami
Get-WMIObject Win32_UserAccount | where caption -eq $user | select FullName | ft -hide
Powershell 3.0 का उपयोग कर एक लाइनर:
gwmi win32_useraccount | where {$_.caption -match $env:USERNAME} | select fullname | ft -HideTableHeaders
Craig620 के स्वीकृत उत्तर पर आपकी टिप्पणी के आधार पर,
क्या मुझे इस आदेश को चलाने के लिए डोमेन व्यवस्थापक अधिकारों की आवश्यकता है? या क्या डोमेन उपयोगकर्ता स्वयं इस कमांड को चला सकता है?
ऐसा लगता है कि आप उपयोगकर्ता कार्यस्थानों पर पॉवरशेल मॉड्यूल स्थापित करने से बचने की कोशिश कर रहे हैं, हां, लेकिन यह भी, नहीं, आपको AD में अपना नाम देखने के लिए एक डोमेन व्यवस्थापक होने की आवश्यकता नहीं है। आप एक मानक उपयोगकर्ता के रूप में पूर्ण नाम सहित, आउटलुक में GAL में दिखाई देने वाली बहुत अधिक जानकारी देख सकते हैं।
आप AD में एक मानक उपयोगकर्ता के रूप में अन्य लोगों का पूरा नाम देख सकते हैं ( Get-WmiObject Win32_userAccount
यदि आप AD मॉड्यूल से बचना चाहते हैं)। सेवा खाते जो क्वेरी AD (अच्छी तरह से, प्रबंधित सेवा खातों से पहले ) आमतौर पर मानक, अप्रभावित AD उपयोगकर्ता हैं।
का उपयोग करना -मैच एक अच्छा विकल्प नहीं है क्योंकि एक $ en: USERNAME of "ed" "fred" और "edit" से मेल खाएगा। इसके बजाय एक सटीक मैच के लिए -q का उपयोग करें और यदि आवश्यक हो तो डोमेन में जोड़ें। मैं एक अनुगामी व्हाट्सएप को "एक पूर्ण चयन | फुलनाम | ft -HideTableHeaders" के विकल्प के रूप में बंद करने के लिए अंत में एक फॉर्च लूप का उपयोग करता हूं जो एक अग्रणी और अनुगामी न्यूलाइन प्रिंट करता है।
gwmi win32_useraccount | where {$_.caption -eq $("domain\" + $env:USERNAME)} | foreach {$_.fullname}
यदि आपको हमेशा .Net 3.5 या अधिक मिलता है (जो आपको PowerShell v4.0 और उच्चतर के साथ चाहिए):
Add-Type -AssemblyName System.DirectoryServices.AccountManagement;
$DisplayName = [System.DirectoryServices.AccountManagement.UserPrincipal]::Current.DisplayName;
वह वर्ग सभी सामान्य LDAP संपत्तियों तक बहुत आसान पहुँच प्रदान करता है, इसलिए आपको दो बार (एक बार WinNT और फिर LDAP के साथ) लुकअप करने की आवश्यकता नहीं है या [ADSISearcher]
यदि आप कुछ विस्तारित गुण जो WinNT लागू नहीं करते हैं, तो LDAP खोज करने के लिए उपयोग करें ।
यदि आप सक्रिय निर्देशिका मॉड्यूल का उपयोग नहीं करना चाहते हैं, तो आप नहीं कर सकते हैं; जब तक आप और भी गहरे जाना चाहते हैं और एक डोमेन नियंत्रक के खिलाफ वास्तविक LDAP क्वेरी निष्पादित करते हैं।
उपयोगकर्ता नाम के अलावा किसी भी उपयोगकर्ता जानकारी को सक्रिय निर्देशिका में संग्रहीत किया जाता है, और इसे फिर से प्राप्त करना होगा।
[ADSI]
इंटरफ़ेस AD मॉड्यूल की तुलना में बहुत अधिक लंबा है, और वास्तव में यह सभी जटिल नहीं है, जैसे स्वीकृत डेटा शो।