2012-05-03 17 views
7

मैं ऐसी स्क्रिप्ट चलाने की कोशिश कर रहा हूं जिसके लिए कुछ चीजों को संसाधित करने के लिए व्यवस्थापक इनपुट की आवश्यकता है। स्क्रिप्ट चलाने में असफल होने की बजाय मैं त्रुटि को फँसाने की कोशिश कर रहा हूं और उसे वापस प्रमाण पत्र में फेंक रहा हूं, लेकिन मुझे एक कमांड नहीं मिल रहा है जिसे मैं एक ट्रैप के साथ स्थानीय व्यवस्थापक प्रमाण-पत्र पास कर सकता हूं। क्या किसी के पास कुछ भी काम कर सकता है?पावरहेल स्थानीय व्यवस्थापक प्रमाण-पत्रों की जांच करने के लिए

मुझे कई मिल गया है जो डोमेन प्रमाण-पत्र जांचेंगे, लेकिन यह एक स्थानीय व्यवस्थापक खाता है।

स्पष्ट करने के लिए, मैं उपयोग कर रहा हूँ:

$Cred = Get-Credential

मुझे लगता है कि से सही है और सामान लिपि में और नीचे चलाने के लिए व्यवस्थापकीय पहुंच है उत्पादन सत्यापन करना होगा।

कार्य समाधान (User978511 के लिए धन्यवाद)

$Cred = Get-Credential 
$Computer = (gwmi Win32_ComputerSystem).Name 
$User = $Cred.Username 
$Pass = $Cred.GetNetworkCredential().Password 
$Users = ("$Computer"+"$User") 

Add-Type -assemblyname System.DirectoryServices.AccountManagement 
$DS = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Machine) 
$DS.ValidateCredentials($Users, $pass) 

if ($Result -ne "True") 
{ 
<Perform Tasks Here> 
} 

उत्तर

3

यह आपको स्थानीय व्यवस्थापक वापस आ जाएगी (एक और जवाब शायद यहां बेहतर फिट है):

$group =[ADSI]"WinNT://./Administrators" 
$members = @($group.psbase.Invoke("Members")) 
$admins = $members | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)} 

और यह जाँच करेगा साख:

Add-Type -assemblyname system.DirectoryServices.accountmanagement 
$DS = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Machine) 
$DS.ValidateCredentials("test", "password") 

आपको बस यह करना है कि यह प्रमाण पत्र ठीक है और वह उपयोगकर्ता सदस्य है एफ प्रशासन समूह

+0

धन्यवाद, यह बहुत उपयोगी है, लेकिन मुझे खाता सत्यापित करने की आवश्यकता है। मुझे reexplain करते हैं: मैं उपयोग कर रहा हूँ निम्नलिखित: '$ cred = Get-Credential' मैं जाँच करने के लिए है कि क्या दर्ज किया गया है वैध है और कार्यों के बाकी प्रदर्शन करने के लिए व्यवस्थापक अधिकार होगा चाहते हैं। – Steve

+0

@Steve मेरा अपडेट देखें –

+0

धन्यवाद, अगर मैं उपयोगकर्ता नाम और पासवर्ड इनपुट करता हूं तो अद्यतन अच्छी तरह से काम कर रहा है। $ Cred से उन फ़ील्ड में जानकारी खींचने में सक्षम होने के लिए अब एक तरीके से काम करना। – Steve

4
function Is-Current-User-Admin 
{ 
    return ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator") 
} 
+0

एमएमएचएच। अपना संपादन पढ़ने के बाद, यह वही नहीं है जो आप चाहते हैं। हालांकि, यहां कुछ ट्रैक आपके लिए अनुसरण किए जा सकते हैं: http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/11/check-for-admin-credentials-in-a- शक्तियां- स्क्रिप्ट .aspx –

+0

धन्यवाद डेविड। जबकि मैं सिफारिश की सराहना करता हूं, मैंने पहले ही उस साइट को देखा था और मैं वहां से ज्यादा काम नहीं कर पाया। हालांकि वर्तमान उपयोगकर्ता की जांच के लिए यह एक बहुत ही उपयोगी लिपि है। – Steve

संबंधित मुद्दे