2010-04-16 17 views
5

मैंने पावरशेल स्क्रिप्ट निष्पादित करने के लिए एएसपी.नेट एमवीसी वेब अनुप्रयोग विकसित किया है।एएसपी.नेट पावरशेल प्रतिरूपण

मैं वीएस वेब सर्वर का उपयोग कर रहा हूं और स्क्रिप्ट ठीक से निष्पादित कर सकता हूं।

हालांकि, एक आवश्यकता यह है कि उपयोगकर्ता एडी के खिलाफ स्क्रिप्ट निष्पादित करने में सक्षम होते हैं ताकि वे अपने उपयोगकर्ता खातों को करने की अनुमति न दें।

इसलिए

मैं प्रतिरूपण का उपयोग कर रहा PowerShell runspace बनाने से पहले पहचान स्विच करने के लिए:

  Runspace runspace = RunspaceFactory.CreateRunspace(config); 

     var currentuser = WindowsIdentity.GetCurrent().Name; 

     if (runspace.RunspaceStateInfo.State == RunspaceState.BeforeOpen) { 
      runspace.Open(); 
     } 

मैं एक डोमेन व्यवस्थापक खाते का उपयोग कर परीक्षण किया है और जब runspace.Open() कॉल मैं निम्न अपवाद प्राप्त करें:

सुरक्षा अपवाद विवरण: एप्लिकेशन ने सुरक्षा नीति द्वारा अनुमत ऑपरेशन करने का प्रयास किया। इस एप्लिकेशन को आवश्यक अनुमति देने के लिए कृपया अपने सिस्टम प्रशासक से संपर्क करें या कॉन्फ़िगरेशन फ़ाइल में एप्लिकेशन के ट्रस्ट स्तर को बदलें। अपवाद विवरण: सिस्टम.Security.SecurityException: अनुरोधित रजिस्ट्री एक्सेस की अनुमति नहीं है।

वेब एप्लिकेशन पूर्ण विश्वास में चल रहा है और मैंने स्पष्ट रूप से उस खाते को जोड़ा है जिसका उपयोग मैं मशीन के स्थानीय प्रशासक समूह के प्रतिरूपण के लिए कर रहा हूं (भले ही डोमेन व्यवस्थापक समूह पहले से मौजूद था)।

मैं इस पोस्ट (http://blogs.msdn.com/webdav_101/archive/2008/09/25/howto-calling-exchange-powershell-from-an-impersonated-thead.aspx)

इस रूप में की सराहना की कोई मदद करने के लिए एक समान तरीके से प्रतिरूपण प्रदर्शन करने के लिए advapi32.dll LogonUser कॉल उपयोग कर रहा हूँ पल में एक शो डाट का एक सा है।

धन्यवाद बेन

उत्तर

3

इस ब्लॉग पोस्ट मदद करता है? PowerShell devs से सीधे आता है। अनिवार्य रूप से, पावरशेल पाइपलाइन चलाने के लिए एक नया धागा शुरू करता है, और चूंकि .NET2.0 थ्रेड को थ्रेड थ्रेड से प्रतिरूपण का उपयोग करने की अनुमति नहीं देता है, यह विफल रहता है।

http://blogs.msdn.com/powershell/archive/2007/09/10/impersonation-and-hosting-powershell.aspx

+0

हाय जेम्स, मैं जब इस पोस्ट को भर में आया था और यह मेरे लिए काम नहीं किया। हालांकि, आज किसी अन्य मशीन पर कोशिश करने के बाद (और सुनिश्चित करना कि मैंने aspnet.config फ़ाइल को बदलने के बाद रीबूट किया - महत्वपूर्ण!) मैं किसी अन्य उपयोगकर्ता को सफलतापूर्वक प्रतिरूपण करने में सक्षम था। धन्यवाद –

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