sc.exe, Get-Service, और यह
दोनों मशीन पर पहले से हैं, और दोनों काम के बने रहेंगे। यह पृष्ठ इस बारे में है कि वे कहाँ रुक जाते हैं, और यह साफ़ कहता है कि वे कहाँ अब भी बेहतर जवाब हैं।
हर एक कहाँ रुकता है
sc.exe
सेवा नियंत्रण प्रबंधक जो कुछ भी जानता है, लगभग उस सब तक यह पहुँच सकता है, और पूछने का तरीका क्या है इसके बारे में यह आपको कुछ नहीं बताता। सिंटैक्स नब्बे के दशक का है: sc config X start= auto, जहाँ बराबर के चिह्न के बाद का रिक्त स्थान अनिवार्य है और उसका न होना वह करने में चुपचाप विफल होना है जो आपका मतलब था।
यह एक बार में एक प्रविष्टि के बारे में जवाब देता है। कोई फ़िल्टरिंग नहीं, ऐसा कोई आउटपुट नहीं जिसे स्क्रिप्ट बिना पार्सर लिखे पार्स कर सके, और कोई पूर्वावलोकन नहीं: sc stop या तो काम करता है या एक नंबर लौटाता है।
Get-Service और *-Service cmdlet
असली ऑब्जेक्ट, एक पाइपलाइन, और एक उथला दृश्य। Windows PowerShell 5.1 में, जो Windows के साथ आता है, Get-Service यह नहीं दिखाता कि सेवा किस खाते से चलती है, न उसका विवरण। PowerShell 7 दोनों दिखाता है, और लॉन्च पथ भी, और वह अलग से इंस्टॉल होता है।
Stop-Service -Force का मतलब है “भले ही कुछ उस पर निर्भर हो”: यह निर्भर सेवाओं को रोक देता है, और आपको बाद में बताता है, पहले नहीं।
वही सवाल, तीन तरीकों से
| सवाल | मशीन पर जो है उसके साथ | यहाँ |
|---|---|---|
| क्या चलना चाहिए और नहीं चल रहा | Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
bws list --query "start:auto !status:running" |
| किन सेवाओं की निष्पादन योग्य फ़ाइल पर हस्ताक्षर नहीं है | हर लॉन्च पथ पढ़ें, उसे हल करें, हर एक पर Get-AuthenticodeSignature चलाएँ: एक स्क्रिप्ट, कमांड नहीं |
bws list --query "signed:no" |
| इसे रोकने से क्या बंद होगा | sc enumdepend X, फिर सूची पढ़ें और खुद तय करें |
bws stop X --dry-run --dependents, यानी वह योजना जो चलेगी |
| पिछले हफ़्ते से क्या बदला | कुछ नहीं, जब तक आपने कलेक्टर खुद न लिखा हो | bws snapshot diff before.json --live |
| स्टार्टअप प्रकार किसने और कब बदला | Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, फिर हर इवेंट का संदेश पढ़ें |
bws history Spooler, जिसकी पहली पंक्ति बताती है कि लॉग कितना पीछे तक जाता है |
| मशीन-पठनीय आउटपुट | PowerShell से ऑब्जेक्ट, sc.exe से पाठ |
हर कमांड पर --json, स्टैंडर्ड आउटपुट पर, चेतावनियाँ स्टैंडर्ड एरर पर |
जहाँ यह टूल किसी सेवा के बारे में sc.exe से असहमत हो, वहाँ यहाँ बग है। टेस्ट सूट का एक हिस्सा दोनों को उसी मशीन पर चलाकर प्रविष्टि-दर-प्रविष्टि तुलना करता है, और दोनों के बीच का अंतर वह सबसे उपयोगी चीज़ है जो इश्यू में डाली जा सकती है।
जो आपके पास है उसे कब इस्तेमाल करते रहें
- आप ऐसी मशीन पर हैं जिसे एक बार छुएँगे। दोनों पहले से वहाँ हैं और किसी नीति से कुछ पार नहीं कराना।
- आपको खाता, लॉन्च पथ या रिकवरी क्रियाएँ बदलनी हैं।
sc.exeतीनों करता है। यह टूल खाता और लॉन्च पथ दिखाता है और दोनों में से कुछ नहीं बदलता, और रिकवरी क्रियाएँ सिर्फ़ इसलिए पढ़ता है कि प्रक्रिया खत्म करने से पहले चेतावनी दे सके। - आपको सेवा बनानी या हटानी है।
sc createऔरsc delete। यहाँ नहीं, जानबूझकर। - आप पहले से किसी PowerShell पाइपलाइन में गहरे हैं।
bws list --jsonConvertFrom-Jsonके ज़रिए ऑब्जेक्ट के रूप में आता है, इसलिए यह पाइपलाइन की जगह लेने के बजाय उसमें जुड़ जाता है।
साथ में, उसके बजाय नहीं
वह टूल जो जवाब देता है कि इस मशीन में क्या गड़बड़ है और वे टूल जो एक सेटिंग बदलते हैं, एक ही टूल नहीं हैं। सवाल यहाँ पूछें, योजना यहाँ पढ़ें, और उसे पूरा करने के लिए जो चाहें इस्तेमाल करें। योजना वह कमांड लाइन छापती है जो यही काम माँगती है, और उस पंक्ति को कॉपी करने के लिए ही बनाया गया है।