2012-07-06 18 views
7

का उपयोग कर डीसीओएम कॉन्फ़िगरेशन सुरक्षा सेटिंग्स बदलें मुझे वेब एप्लिकेशन के हिस्से के रूप में हमारी सेवाओं में से किसी एक को चलाने के लिए स्क्रैच से सर्वर सेट अप करने के लिए पावरहेल स्क्रिप्ट लिखने का कार्य दिया गया है, और इस सर्वर को सेट करने के लिए आवश्यक चरणों में से एक अप स्थापित सेवा के लिए DCOM कॉन्फ़िगरेशन को बदल रहा है, विशेष रूप से "लॉन्च और एक्टिवेशन"/"एक्सेस" अनुमतियों में खाते जोड़ना और इन खातों को जोड़ने के बाद इन खातों के लिए अनुमतियां भी सेट कर सकते हैं।पावरहेल

क्या पावरहेल का उपयोग करके ऐसा करने का कोई तरीका है? मैं जो हासिल करने का लक्ष्य रख रहा हूं, उसे करने का एक ठोस तरीका नहीं ढूंढ पाया है, इसलिए कोई भी मदद महान होगी

उत्तर

12

ऐसा लगता है कि आप इसे WMI का उपयोग करके करेंगे। इस तरह Win32_DCOMApplicationSetting:

का एक उदाहरण हो जाओ

$dcom = Get-WMIObject -Class Win32_DCOMApplicationSetting -Filter 'Description="Something"' 

अब आप SetAccessSecurityDescriptor और SetLaunchSecurityDescriptor तरीकों की पहुंच है।

से: http://msdn.microsoft.com/en-us/library/windows/desktop/aa384905(v=vs.85).aspx

DCOM अनुप्रयोगों

DCOM आवेदन उदाहरणों कई सुरक्षा डिस्क्रिप्टर की है। Windows Vista के साथ प्रारंभ करना, विभिन्न सुरक्षा वर्णनकर्ताओं को प्राप्त करने या बदलने के लिए Win32_DCOMAplicationSetting कक्षा के विधियों का उपयोग करें। सुरक्षा डिस्क्रिप्टर Win32_SecurityDescriptor कक्षा के उदाहरणों के रूप में लौटाए जाते हैं।

कॉन्फ़िगरेशन अनुमतियों को प्राप्त करने या बदलने के लिए, GetConfigurationSecurityDescriptor या SetConfigurationSecurityDescriptor विधियों को कॉल करें।

एक्सेस अनुमतियां प्राप्त करने या बदलने के लिए, GetAccessSecurityDescriptor या SetAccessSecurityDescriptor विधियों को कॉल करें।

स्टार्टअप और सक्रियण अनुमतियां प्राप्त करने या बदलने के लिए, GetLaunchSecurityDescriptor या SetLaunchSecurityDescriptor विधियों को कॉल करें।

विंडोज सर्वर 2003, विंडोज एक्सपी, विंडोज 2000, विंडोज एनटी 4.0, और विंडोज़ मी/98/95: Win32_DCOM अनुप्रयोग सुरक्षा सुरक्षा वर्णनकर्ता विधियां उपलब्ध नहीं हैं। http://www.microsoft.com/en-us/download/details.aspx?id=8279

यदि आप संकलित DCOMPERM के लिए खोज के आसपास ऑनलाइन संकलित संस्करणों पा सकते हैं:

वहाँ भी एक उपकरण DCOMPERM कहा जाता है, जिसमें स्रोत कोड विंडोज एसडीके में उपलब्ध है।

यहाँ कमांड लाइन विकल्प हैं:

Syntax: dcomperm <option> [...] 
Options: 

Modify or list the machine access permission list 
-ma <"set" or "remove"> <Principal Name> ["permit" or "deny"] ["level:l,r"] 
-ma list 

Modify or list the machine launch permission list 
-ml <"set" or "remove"> <Principal Name> ["permit" or "deny"] ["level:l,r,ll,la,rl,ra"] 
-ml list 

Modify or list the default access permission list 
-da <"set" or "remove"> <Principal Name> ["permit" or "deny"] ["level:l,r"] 
-da list 

Modify or list the default launch permission list 
-dl <"set" or "remove"> <Principal Name> ["permit" or "deny"] ["level:l,r,ll,la,rl,ra"] 
-dl list 

Modify or list the access permission list for a specific AppID 
-aa <AppID> <"set" or "remove"> <Principal Name> ["permit" or "deny"] ["level:l,r"] 
-aa <AppID> default 
-aa <AppID> list 

Modify or list the launch permission list for a specific AppID 
-al <AppID> <"set" or "remove"> <Principal Name> ["permit" or "deny"] ["level:l,r,ll,la,rl,ra"] 
-al <AppID> default 
-al <AppID> list 

level: 
    ll - local launch (only applies to {ml, dl, al} options) 
    rl - remote launch (only applies to {ml, dl, al} options) 
    la - local activate (only applies to {ml, dl, al} options) 
    ra - remote activate (only applies to {ml, dl, al} options) 
    l - local (local access - means launch and activate when used with {ml, dl, al} options) 
    r - remote (remote access - means launch and activate when used with {ml, dl, al} options) 
+0

धन्यवाद एंडी, इससे बहुत मदद मिली है! अंत में मैंने दोनों तरीकों का मिश्रण इस्तेमाल किया। मैंने ऐप आईडी प्राप्त करने के लिए Win32_DCOMAplicationSetting का उपयोग किया, और उसके बाद आवश्यक अनुमतियों को जोड़ने के लिए DComPerm का उपयोग किया। मुझे थोड़ा अजीब लगता था कि सीएमडी ने पावरहेल की तुलना में बहुत कम मुद्दों के साथ डॉकपर्म चलाया, इसलिए मुझे जो चाहिए वह हासिल करने के लिए, मैंने एक बैच फ़ाइल लिखी जहां कुछ चर पारित किए गए, और इसे पावरहेल से बुलाया गया। – Vermin

+0

@ मेरा अनुमान है कि आपके पास PowerShell के साथ समस्याएं हो सकती हैं शायद सिंटैक्स/कमांड लाइन पार्सिंग संबंधित हैं। शायद आपको मिली त्रुटि पोस्ट करें? –

7

मैं ओ पी के रूप में ही प्रश्न था। उत्तर एंडी पोस्ट बहुत उपयोगी था और मुझे आधा रास्ते मिला। तब मुझे Set-DCOMLaunchPermissions किसी को लिखा गया ताकि उन्हें SharePoint को तैनात करने में मदद मिल सके।

मैंने अपने उद्देश्यों के लिए अपना कार्य अनुकूलित किया और एक समाधान के साथ आया जो मुझे आवश्यक अनुमतियों को सेट करता है।

$user = "sql2012agent" 
$domain = "MYDOMAIN" 
$appdesc = "Microsoft SQL Server Integration Services 11.0" 
$app = get-wmiobject -query ('SELECT * FROM Win32_DCOMApplicationSetting WHERE Description = "' + $appdesc + '"') -enableallprivileges 
#$appid = "{83B33982-693D-4824-B42E-7196AE61BB05}" 
#$app = get-wmiobject -query ('SELECT * FROM Win32_DCOMApplicationSetting WHERE AppId = "' + $appid + '"') -enableallprivileges 
$sdRes = $app.GetLaunchSecurityDescriptor() 
$sd = $sdRes.Descriptor 
$trustee = ([wmiclass] 'Win32_Trustee').CreateInstance() 
$trustee.Domain = $domain 
$trustee.Name = $user 
$fullControl = 31 
$localLaunchActivate = 11 
$ace = ([wmiclass] 'Win32_ACE').CreateInstance() 
$ace.AccessMask = $localLaunchActivate 
$ace.AceFlags = 0 
$ace.AceType = 0 
$ace.Trustee = $trustee 
[System.Management.ManagementBaseObject[]] $newDACL = $sd.DACL + @($ace) 
$sd.DACL = $newDACL 
$app.SetLaunchSecurityDescriptor($sd) 
+0

मैं डीसीओएम को कॉन्फ़िगर करने के लिए ऊपर @Elijah W. Gagne द्वारा पोस्ट की गई पीएस स्क्रिप्ट का उपयोग करने की कोशिश कर रहा हूं और त्रुटि प्राप्त कर रहा हूं "संपत्ति 'DACL' इस ऑब्जेक्ट पर नहीं मिल सकती है। सत्यापित करें कि संपत्ति मौजूद है और सेट की जा सकती है।" त्रुटि "$ sd.DACL = $ newDACL" पंक्ति के लिए है। मैं पीएस उपयोग में बहुत अच्छी तरह से नहीं जानता हूँ। क्या कोई मुझे बता सकता है कि मुझे यह काम करने के लिए क्या करना है। बहुत धन्यवाद! – RGuggisberg

+0

मैं लाइन 4 तक चीजें चलाऊंगा। फिर $ ऐप वैरिएबल आउटपुट करें और पुष्टि करें कि यह खाली नहीं है (शून्य)। यदि ऐसा है, तो आपको शायद लाइन 4 में अपने WHERE क्लॉज को समायोजित करना होगा। –

+0

हां, मुझे अपना बदलना पड़ा क्योंकि मैं संस्करण 12.0 नहीं 11.0 का उपयोग कर रहा था और मुझे $ ऐप शून्य होना पड़ा। लेकिन $ appdesc को मेरे लिए सही होने के बाद बदलने के बाद स्क्रिप्ट ने एक आकर्षण काम किया। –