मैं पॉवर्सशेल का उपयोग करके किसी सेवा को दूरस्थ रूप से शुरू / बंद करने की अनुमति कैसे दे सकता हूं?


10

हमारे पास एक PowerShell स्क्रिप्ट है जो दूसरे कंप्यूटर पर एक सेवा को पुनरारंभ करता है। जब हम PowerShell की अंतर्निहित सेवा नियंत्रण cmdlets का उपयोग करते हैं, जैसे:

$svc = Get-Service -Name MyService -ComputerName myservicehostname
Stop-Service -InputObject $svc
Start-Service -InputObject $svc

हमें यह त्रुटि वापस मिलती है:

स्टॉप-सर्विस: कंप्यूटर 'myservicehostname' पर MyService सेवा नहीं खोल सकता।

हालाँकि, जब हम sc.exe का उपयोग करते हैं, तो जैसे:

C:\Windows\System32\sc \\myservicehostname stop MyService
C:\Windows\System32\sc \\myservicehostname start MyService

शुरू और सफल बंद करो।

पुनरारंभ करने वाला उपयोगकर्ता व्यवस्थापक नहीं है । सेवा को शुरू / बंद करने और क्वेरी करने के लिए उपयोगकर्ता की अनुमति देने के लिए हम सबइंक्ल का उपयोग करते हैं:

subinacl.exe /service MyService /GRANT=MyServiceControlUser=STO

कैसे आएँ PowerShell मेरी सेवा को रोक नहीं सकता है लेकिन sc.exeकर सकता हूँ?

जवाबों:


20

यह पता चला है कि मैं पर्याप्त अनुमति नहीं दे रहा थाsubinacl । अनुदान कार्रवाई के लिए संभावित पहुँच मान हैं:

    F : Full Control  
    R : Generic Read  
    W : Generic Write  
    X : Generic eXecute  
  or any following values  
    L : Read controL  
    Q : Query Service Configuration  
    S : Query Service Status  
    E : Enumerate Dependent Services  
    C : Service Change Configuration  
    T : Start Service  
    O : Stop Service  
    P : Pause/Continue Service  
    I : Interrogate Service  
    U : Service User-Defined Control Commands  

मैं एस (क्वेरी सर्विस स्टेटस), टी (स्टार्ट सर्विस), और (स्टॉप सर्विस) का उपयोग कर रहा था । मुझे भी E (Enumerate Dependent Services) की जरूरत थी। ऐसा प्रतीत होता है कि PowerShell cmdlets को शुरू / रोकते समय आश्रित सेवाओं को देखने की आवश्यकता है।

यहाँ मेरी अद्यतन subinaclकमांड है:

subinacl.exe /service MyService /GRANT=MyServiceControlUser=STOE

यदि आप डाउनलोड / उपयोग नहीं करना चाहते हैं subinacl.exe, तो आप PowerShell का उपयोग कार्बन मॉड्यूल के ग्रांट-सर्विसकंट्रोलरिपिशन या ग्रांट-सर्विसप्रर्मिशन कार्यों के माध्यम से कर सकते हैं । (अस्वीकरण: मैं कार्बन प्रोजेक्ट का मालिक / अनुरक्षक हूं।)


कृपया इसे अपने सही उत्तर के रूप में चिह्नित करें। यह मेरे लिए सटीक एक ही मुद्दे के लिए एक बहुत बड़ी मदद थी :)
एलन

मैंने पहले कभी नहीं सुना subinacl। क्या उपयोगी उपयोगिता है! हम में से बाकी लोगों के लिए यह जानकारी छोड़ने के लिए धन्यवाद।
दान

दूरस्थ कंप्यूटर पर सेवाओं को नियंत्रित करने के लिए Windows 2016 सर्वर के साथ गैर-डोमेन वातावरण में महान काम करता है।
डग नूडसन

0

निम्न आदेश मेरे Windows Server 2008 R2 मशीन पर अपेक्षित रूप से काम करता है।

Start-Service -InputObject $(Get-Service -Computer [ComputerName] -Name spooler)  

क्या आप यह निर्धारित करने के लिए कि यह काम करता है, और क्या आपने यह सत्यापित किया है कि उपयोगकर्ता समूह का सदस्य है जो लक्ष्य सर्वर पर उपयोगकर्ता समूह का सदस्य है, यह निर्धारित करने के लिए यह एक-बंद आदेश आज़मा सकता है?


आपका स्निप मेरे लिए काम नहीं करता है। सुरक्षा आवश्यकताओं के कारण, मैं उपयोगकर्ता को उपयोगकर्ता समूह (या किसी भी अंतर्निहित विंडोज समूह) का सदस्य नहीं बना सकता।
बिखरे हुए बिट्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.