कमांड लाइन संदर्भ
bws का हर कमांड, हर विकल्प और हर एग्ज़िट कोड, संस्करण 0.5.0। bws --help आधिकारिक है और लंबा है। यह पृष्ठ वही सतह है, जिसे पढ़ने लायक ढंग से सजाया गया है।
कमांड
ग्यारह कमांड। snapshot एक संज्ञा है और उसके बाद एक शब्द लेता है। tool भी संज्ञा है, और अकेला होने पर वह टूल की सूची देता है।
bws list [--query TEXT] [--signatures] [--memory] [--required-by] [--follow-network] [--json] [--timing]
bws show NAME [--full] [--follow-network] [--json] [--timing]
bws stop|start|restart NAME [--dry-run] [--dependents] [--timeout SECONDS] [--json] [--timing]
bws kill NAME [--force] [--restart] [--dry-run] [--dependents] [--timeout SECONDS] [--json] [--timing]
bws start-type NAME automatic|delayed|manual|disabled [--stop] [--dry-run] [--json] [--timing]
bws snapshot create [FILE] [--note TEXT] [--follow-network] [--force] [--json] [--timing]
bws snapshot diff EARLIER LATER [--exit-code] [--json] [--timing]
bws snapshot diff EARLIER --live [--exit-code] [--json] [--timing]
bws history [NAME] [--json] [--timing]
bws tool
bws tool fix
bws tool fix NAME [--dry-run] [--timeout SECONDS] [--json] [--timing]
bws license [--components]
bws --help
bws --version
गलत टाइप किए गए कमांड को वह कमांड सुझाया जाता है जो आपका शायद मतलब था, और रन कोड 2 के साथ खत्म होता है, आपके माँगे हुए के आसपास कुछ करने के बजाय।
$ bws lst
There is no command lst. Did you mean list?
हर कमांड क्या करता है
list और show
list पूरी मशीन है, जिसे --query से सीमित किया जाता है। show एक प्रविष्टि है और उसके बारे में जो कुछ पता है वह सब: हस्ताक्षर, विशेषाधिकार, security descriptor और मेमोरी, सब हर बार पढ़े जाते हैं, क्योंकि एक प्रविष्टि पर इसकी लागत लगभग साठ मिलीसेकंड है जबकि पूरी मशीन पर एक सेकंड। जो फ़ील्ड सचमुच खाली हैं उन्हें तब तक छोड़ दिया जाता है जब तक आप --full न दें। जिस फ़ील्ड को कोई पढ़ नहीं सका वह हर हाल में छापा जाता है, क्योंकि उसे छोड़ देना जवाब जैसा दिखता।
stop, start और restart
हर एक योजना बनाता है और उसे पूरा करता है। --dry-run योजना छापता है और कुछ नहीं बदलता, --dependents उन सेवाओं को, जो टूटतीं, अलग चरणों के रूप में उसमें रख देता है, और --timeout बताता है कि एक चरण बिना प्रगति के कितनी देर तक चल सकता है। ड्राइवरों को आज़माया नहीं जाता, मना कर दिया जाता है, क्योंकि कर्नेल ड्राइवर रोकना अक्सर रीस्टार्ट के बिना वापस नहीं किया जा सकता।
kill: उस सेवा के लिए जो रुकती नहीं
यह सेवा से रुकने को कहता है और उसके पीछे की प्रक्रिया को तभी खत्म करता है जब वह काम न करे, इसलिए जो प्रविष्टि अपने आप रुक जाती है उसे कभी खत्म नहीं किया जाता। प्रक्रिया खत्म करने से उसमें रहने वाली हर दूसरी सेवा भी साथ जाती है, चाहे वे पहले रुकी हों या नहीं, और पूर्वावलोकन उनके नाम बताता है और प्रक्रिया को नंबर से नाम देता है। --force विनम्र चरण छोड़ देता है और तब पूर्वावलोकन में दो के बजाय एक चरण दिखता है। --restart बाद में सब कुछ वापस ले आता है।
Windows इस विचार को अलग ढंग से लिखता है। Stop-Service पर --force का मतलब है “भले ही कुछ उस पर निर्भर हो”, जो यहाँ --dependents करता है। इसीलिए यह अपना अलग कमांड है, stop पर कोई विकल्प नहीं।
start-type: एक सेटिंग, कोई चाल नहीं
यह बताता है कि प्रबंधक अगले बूट पर किसी प्रविष्टि के साथ क्या करेगा, और --stop के बिना यह कुछ भी नहीं हिलाता: जो प्रविष्टि चल रही है वह चलती रहती है, जो रुकी है वह रुकी रहती है, और योजना यही कहती है। disabled वह है जिस पर ठहरना ज़रूरी है, क्योंकि यह प्रबंधक को प्रविष्टि शुरू करने से ही रोक देता है, उस स्थिति में भी जब किसी और चीज़ को उसकी माँग पर ज़रूरत हो। delayed ऑटोमैटिक है, जो बाकी ऑटोमैटिक प्रविष्टियों से थोड़ी देर बाद शुरू होता है, यही वह शब्द है जिसके बारे में क्वेरी में start:delayed पूछता है, और Windows इसे लोड ऑर्डर ग्रुप वाली प्रविष्टि के लिए मना कर देता है, जो योजना कुछ होने से पहले ही बता देती है। चारों में से हर एक यह भी लिखता है कि प्रविष्टि देर से शुरू होती है या नहीं, जैसा sc.exe करता है। --stop, सिर्फ़ disabled के साथ, सेटिंग लिखे जाने के बाद उसी योजना में प्रविष्टि को रोक देता है।
snapshot create और snapshot diff
create हमेशा हस्ताक्षर और हैश पढ़ता है, क्योंकि स्नैपशॉट रखा जाता है और बाद में तुलना की जाती है, और उनके बिना बना स्नैपशॉट उनके साथ वाले से तुलना में ऐसा दिखाता मानो मशीन बदल गई हो। diff बताता है कि पहली फ़ाइल से दूसरी तक जाने में क्या बदला, या --live के साथ किसी फ़ाइल से इस मशीन तक। स्नैपशॉट पृष्ठ में प्रारूप और उसके पीछे का तर्क है।
history: किसने बदला, System लॉग से
स्टार्टअप प्रकार के बदलाव और इंस्टॉलेशन System लॉग से, सबसे नए पहले, उस खाते के साथ जो Windows ने दर्ज किया। पहली पंक्ति बताती है कि लॉग कितना पीछे तक जाता है और क्या उसे साफ़ किया गया था, क्योंकि इतिहास उतना ही लंबा होता है जितना लॉग। नाम देने पर वह उसी सेवा के स्टार्टअप प्रकार के बदलाव हैं। इंस्टॉलेशन सिर्फ़ बिना नाम के सूचीबद्ध होते हैं, क्योंकि Windows इंस्टॉलेशन को प्रदर्शन नाम के तहत दर्ज करता है, सेवा के नाम के तहत कभी नहीं। खाते का नाम वहाँ बताया जाता है जहाँ यह मशीन उसे अपने आप बता सकती है, और वरना उसका SID दिखाया जाता है, और स्टार्टअप प्रकार उन्हीं शब्दों में आते हैं जो Windows ने लिखे।
tool: आम समस्याओं के तैयार जवाब
वही टूल जो विंडो अपने Tools टैब पर दिखाती है। bws tool उनकी सूची देता है और bws tool fix त्वरित समाधानों की सूची देता है: printer, sound, indexing और search, हर एक एक Windows सेवा का रीस्टार्ट, उस पर निर्भर चीज़ों के साथ, जिसे इसलिए चुना गया कि Microsoft के अपने समस्या-निवारण पृष्ठ उसे सुझाते हैं। bws tool fix printer ठीक bws restart Spooler --dependents है: वही योजना, वही आउटपुट और वही एग्ज़िट कोड, और यहाँ के हर उस कमांड की तरह जो कुछ बदलता है, यह पहले पूछता नहीं, इसलिए चलने से पहले देखने का तरीका --dry-run है।
license: आपकी डाउनलोड की फ़ाइल के अंदर क्या है
यह कुछ भी नहीं पढ़ता, न सेवा प्रबंधक, न डिस्क, न नेटवर्क, और निष्पादन योग्य फ़ाइल में संकलित रजिस्टर से जवाब देता है। --components नोटिस को हर घटक में बदल देता है, उसके संस्करण, उसके लाइसेंस और उसके स्रोत के साथ। वही सेट जो डाउनलोड के बगल में प्रकाशित सामग्री-सूची में है, क्योंकि दोनों एक ही रजिस्टर से बनते हैं, और इसके होने की वजह यही है: प्रोग्राम एक अपने-आप में पूर्ण फ़ाइल है, इसलिए उसके बगल में स्कैनर के पढ़ने लायक कुछ नहीं है।
उदाहरण
नीचे की योजनाओं को उस प्रोग्राम के विरुद्ध --dry-run से जाँचा गया जिसका यह पृष्ठ वर्णन करता है। जो कमांड कुछ बदलता है वह पहले पूछता नहीं, इसलिए चलने से पहले देखने का तरीका --dry-run है। Spooler किसी भी सेवा की जगह है, उसकी जगह अपनी सेवा का नाम रखें।
खोजें और पढ़ें
bws list इस मशीन की हर सेवा और ड्राइवर
bws list --query "start:auto !status:running" जो चालू होना चाहिए और नहीं है
bws list --query "status:running" --memory हर चल रही प्रविष्टि की प्रक्रिया क्या इस्तेमाल कर रही है
bws show Spooler एक प्रविष्टि के बारे में जो कुछ पता है
bws show Spooler --full वे फ़ील्ड भी जो सचमुच खाली हैं
पहले देखें, फिर बदलें
bws restart Spooler --dry-run योजना, और कुछ नहीं
bws restart Spooler --dependents इसे उन चीज़ों के साथ रीस्टार्ट करें जो इस पर निर्भर हैं
bws stop Spooler --dependents --timeout 120 बिना प्रगति के हर चरण के लिए दो मिनट दें
bws start-type WSearch delayed --dry-run इसे बाकी ऑटोमैटिक प्रविष्टियों से थोड़ी देर बाद शुरू करें
bws start-type Spooler disabled --stop एक ही योजना में इसे disable करें और रोकें
ऐसी सेवा जो रुकती नहीं
bws kill Spooler --dry-run प्रक्रिया, और उसमें रहने वाली हर सेवा
bws kill Spooler --restart प्रक्रिया तभी खत्म करें जब रोकना विफल हो, फिर सब कुछ वापस ले आएँ
bws kill Spooler --force --dry-run दो के बजाय एक चरण: प्रक्रिया तुरंत खत्म
स्नैपशॉट और ड्रिफ्ट
bws snapshot create before.json --note "before the patch" मशीन को फ़्रीज़ करें, एक नोट के साथ जो अंदर रहता है
bws snapshot diff before.json after.json दो फ़ाइलें: दो दिन, या दो मशीनें
bws snapshot diff before.json --live फ़ाइल की तुलना इस मशीन से, जैसी वह अभी है
bws snapshot diff before.json --live --exit-code वही, कॉन्फ़िगरेशन ड्रिफ्ट होने पर 5 के साथ खत्म
किसने बदला
bws history हर स्टार्टअप प्रकार का बदलाव और इंस्टॉलेशन जो System लॉग में है
bws history Spooler एक सेवा के स्टार्टअप प्रकार के बदलाव
bws history --json वही दस्तावेज़ के रूप में, लॉग और बदलावों के साथ
त्वरित समाधान
bws tool जो टूल हैं
bws tool fix त्वरित समाधान, और हर एक के पीछे की सेवा
bws tool fix sound --dry-run दोनों ऑडियो सेवाओं के रीस्टार्ट की योजना
bws tool fix printer Print Spooler को उस पर निर्भर चीज़ों के साथ रीस्टार्ट करें
फ़ाइल के अंदर क्या है
bws license --components हर घटक, उसका संस्करण, उसका लाइसेंस और वह कहाँ से आया
bws --version इस निष्पादन योग्य फ़ाइल का संस्करण
PowerShell स्क्रिप्ट में
# जो प्रविष्टियाँ चालू होनी चाहिए और नहीं हैं, ऑब्जेक्ट के रूप में
bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
# बिना हस्ताक्षर वाली फ़ाइलें, स्प्रेडशीट में
bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
# एक सेवा को क्या चाहिए
(bws show Spooler --json | ConvertFrom-Json).dependsOn
# एक रात्रिकालीन जाँच जो एग्ज़िट कोड पर शाखा बनाती है
bws snapshot diff C:\baselines\web01.json --live --exit-code > $null
switch ($LASTEXITCODE) {
0 { 'no configuration drift' }
5 { 'the configuration drifted' }
default { "no clean answer, exit code $LASTEXITCODE" }
}
cmd और बैच फ़ाइल में
rem दूसरा कमांड तभी जब पहला साफ़-सुथरा खत्म न हुआ हो
bws restart Spooler || echo the restart did not end cleanly
rem डिले एक्सपैंशन चालू वाली बैच फ़ाइल में ! को कैरेट चाहिए
bws list --query "start:auto ^!status:running"
विकल्प
18 विकल्प। तीसरा कॉलम वे कमांड हैं जिनसे हर एक जुड़ा है। जिस कमांड को किसी विकल्प की ज़रूरत नहीं, उसे दिया गया विकल्प उस सूची के साथ एक त्रुटि है, चुपचाप अनदेखा किया गया फ़्लैग नहीं।
| विकल्प | यह क्या करता है | यह कहाँ काम करता है |
|---|---|---|
--query | क्वेरी भाषा से सूची को सीमित करें। | list |
--signatures | पढ़ें कि हर निष्पादन योग्य फ़ाइल पर किसने हस्ताक्षर किए और Windows उस पर भरोसा करता है या नहीं। पूरी मशीन पर इसमें कई सेकंड लगते हैं, इसलिए माँगे बिना यह बंद रहता है, और हस्ताक्षरों के बारे में क्वेरी इसे अपने आप चालू कर देती है। | list |
--memory | पढ़ें कि हर चल रही प्रविष्टि की प्रक्रिया क्या इस्तेमाल कर रही है। यह डिफ़ॉल्ट रूप से बंद है क्योंकि यह सेटिंग नहीं, एक माप है: एक सेकंड बाद यह अलग होता है। | list |
--required-by | पढ़ें कि किसी एक को रोकने पर कौन सी प्रविष्टियाँ टूटती हैं, यह Windows से सीधे पूछा जाता है, इस पर आधारित नहीं कि सब कुछ खुद क्या घोषित करता है। हर प्रविष्टि के लिए एक कॉल, इसलिए माँगे बिना बंद। show और snapshot create इसे हर बार पढ़ते हैं। | list |
--follow-network | टूल को इस मशीन से बाहर पहुँचने दें: किसी और के शेयर पर रहने वाला लॉन्च पथ, और ऐसा प्रमाणपत्र जो इस मशीन के पास पहले से नहीं है। सुरक्षा के लिए यह डिफ़ॉल्ट रूप से बंद है: एक पहुँच से बाहर शेयर की कीमत इक्कीस सेकंड है और वह उसी खाते के रूप में प्रमाणीकृत होता है जिसने इसे चलाया, और प्रमाणपत्र लाना एक सामान्य सूची के बीच में किसी तीसरे पक्ष से कनेक्शन है। इसके बिना हस्ताक्षर की जाँच उसके विरुद्ध होती है जो यहाँ है, और ऐसा नतीजा जो न देखने की वजह से हुआ हो सकता है उसे फ़ैसले के रूप में नहीं, बिना पढ़े के रूप में रिपोर्ट किया जाता है। | list, show, snapshot create |
--force | kill पर, प्रक्रिया को विनम्रता से कहे बिना तुरंत खत्म करें, तब पूर्वावलोकन में दो के बजाय एक चरण दिखता है। snapshot create पर, पहले से मौजूद स्नैपशॉट को बदल दें, और जो फ़ाइल स्नैपशॉट नहीं है उसे कभी नहीं बदला जाता। | snapshot create, kill |
--restart | kill पर, प्रक्रिया के चले जाने के बाद प्रविष्टि को वापस ले आएँ, उस सबके साथ जो उसे साझा करता था। | kill |
--stop | start-type पर, और सिर्फ़ disabled के साथ, सेटिंग लिखे जाने के बाद उसी योजना में प्रविष्टि को रोक दें। स्टार्टअप प्रकार अगले बूट को बदलता है, अभी कुछ नहीं, इसलिए इसके बिना disabled पर सेट चल रही प्रविष्टि चलती रहती है। | start-type |
--full | show पर, वे फ़ील्ड भी छापें जो सचमुच खाली हैं। जिस फ़ील्ड को कोई पढ़ नहीं सका वह दोनों हाल में छापा जाता है। | show |
--json | वही दस्तावेज़, मशीन-पठनीय, स्टैंडर्ड आउटपुट पर। | list, show, stop, start, restart, start-type, snapshot create, snapshot diff, kill, history, tool fix NAME |
--note | स्नैपशॉट किस लिए लिया गया था, फ़ाइल के अंदर रखा जाता है। | snapshot create |
--exit-code | कॉन्फ़िगरेशन अलग होने पर कोड 5 के साथ खत्म करें: कोई प्रविष्टि जुड़ी या हटी, या किसी का सेटअप अलग है। सिर्फ़ चलने की स्थिति नहीं गिनी जाती। डिफ़ॉल्ट रूप से बंद, ताकि वह स्क्रिप्ट जो सिर्फ़ अंतर छपवाना चाहती है, कुछ अंतर मिलने से बाधित न हो। | snapshot diff |
--live | फ़ाइल की तुलना इस मशीन से करें जैसी वह अभी है, दूसरी फ़ाइल से करने के बजाय। | snapshot diff |
--timing | पढ़ने के हर हिस्से में कितना समय लगा, स्टैंडर्ड एरर पर। | list, show, stop, start, restart, start-type, snapshot create, snapshot diff, kill, history, tool fix NAME |
--dry-run | योजना छापें और कुछ न बदलें। यह वही योजना है जो निष्पादन चलाता है: असली काम के लिए कोई दूसरा कोड पथ नहीं है। | stop, start, restart, start-type, kill, tool fix NAME |
--dependents | जो सेवाएँ टूटतीं उन्हें योजना में अलग चरणों के रूप में रखें। | stop, restart, kill |
--timeout | एक चरण बिना प्रगति के कितनी देर तक चल सकता है, उसके बाद उसे छोड़ दिया जाता है, और सेवा हर बार प्रगति बताती है तो गिनती फिर से शुरू होती है। जब तक आप कुछ और न कहें, साठ सेकंड। जो सेवा प्रगति बताती रहती है उस पर उतनी देर नज़र रखी जाती है जितनी लगे। समय खत्म होना निगरानी का अंत है, विफलता नहीं, और रिपोर्ट बताती है कि प्रविष्टि कहाँ छोड़ी गई। | stop, start, restart, kill, tool fix NAME |
--components | license पर, नोटिस को इस निष्पादन योग्य फ़ाइल के अंदर के हर घटक में बदल दें, उसके संस्करण, उसके लाइसेंस और उसके स्रोत के साथ। वही सेट जो डाउनलोड के बगल में प्रकाशित सामग्री-सूची में है, क्योंकि दोनों एक ही रजिस्टर से बनते हैं। | license |
एग्ज़िट कोड
6 अंत, और हर एक किसी स्क्रिप्ट के लिए एक अलग काम है। डेटा स्टैंडर्ड आउटपुट में जाता है और बाकी सब स्टैंडर्ड एरर में, इसलिए bws list --json | jq काम करता है और कोई चेतावनी आपके JSON में कभी नहीं आती।
हर JSON दस्तावेज़ सादा ASCII है: उसके बाहर का अक्षर छह वर्णों के एस्केप के रूप में लिखा जाता है जिसे हर JSON रीडर वापस अक्षर में बदल देता है, इसलिए bws list --json > file.json वैध UTF-8 है और | ConvertFrom-Json उसे सही पढ़ता है, कंसोल का कोड पेज चाहे जो हो। जिस पाठ को व्यक्ति पढ़ता है उसमें ऐसा वर्ण जो छपने के बजाय टर्मिनल को हिला देता, यानी टैब, पंक्ति विराम, एस्केप सीक्वेंस या दिशा ओवरराइड, अपने कोड पॉइंट के रूप में दिखाया जाता है, <U+001B>।
-- विकल्पों को खत्म कर देता है, इसलिए जिस सेवा का नाम डैश से शुरू होता है उसे भी नाम दिया जा सकता है: bws show -- -odd। टूल जो कमांड लाइनें आपको थमाता है वे PowerShell के लिए लिखी होती हैं: रिक्त स्थान वाला नाम दोहरे उद्धरण चिह्नों में जाता है, जिसे cmd भी उसी तरह पढ़ता है, और ऐसा नाम जिसे PowerShell उनके अंदर विस्तारित कर देता, जैसे MSSQL$SQLEXPRESS, एकल उद्धरण चिह्नों में जाता है।
| कोड | अर्थ |
|---|---|
0 | हो गया, और सब कुछ वहाँ पहुँचा जहाँ उसे जाना था। |
1 | टूल विफल हुआ: जो माँगा गया वह नहीं कर सका, किसी ऐसे कारण से जो योजना के बारे में नहीं बल्कि टूल के बारे में है। |
2 | कमांड लाइन गलत थी। गलत टाइप किए गए कमांड को वह कमांड सुझाया जाता है जो आपका शायद मतलब था। |
3 | योजना सही थी, वह चली, और उसमें कुछ वहाँ नहीं पहुँचा जहाँ उसे जाना था: प्रबंधक ने मना कर दिया, या सत्र के पास उसके अधिकार नहीं थे। |
4 | किसी ने रन को हाथ से रोक दिया। शून्य से अलग, तब भी जब हर चरण पहुँच चुका हो, ताकि कोई रैपर बीच में रोके गए रन को साफ़ न माने। |
5 | एक तुलना चली और उसने पाया कि कॉन्फ़िगरेशन ड्रिफ्ट हुआ: कोई प्रविष्टि जुड़ी या हटी, या किसी का सेटअप अलग है। सिर्फ़ चलने की स्थिति ड्रिफ्ट नहीं है। केवल --exit-code के साथ, क्योंकि ड्रिफ्ट ढूँढना ही इस टूल का काम है, और उसे ढूँढना विफलता नहीं है। |
Ctrl+C के तीन स्तर हैं, और हर एक बताता है कि अगला क्या कीमत लेगा। पहला आगे बढ़ना रोकता है और जो लिया गया था उसे फिर भी वापस रखता है, दूसरा चीज़ों को जैसी हैं वैसी छोड़ देता है और फिर भी रिपोर्ट छापता है, तीसरा प्रक्रिया को खत्म कर देता है। हाथ से रोका गया रन 4 के साथ खत्म होता है, भले ही हर चरण पहुँच चुका हो।
कंसोल विंडो बंद करना पहले Ctrl+C में गिना जाता है। इसके बाद Windows प्रोग्राम को पाँच सेकंड देता है, और उनमें यह आगे बढ़ना रोक देता है और जो बंद किया था उसे वापस रख देता है। साइन आउट और शटडाउन इसे ऐसी किसी चेतावनी के बिना खत्म कर देते हैं जिस पर यह कुछ कर सके, और टूटा हुआ रिमोट सत्र भी कर सकता है।
शेड्यूल किए गए टास्क में
वह रूप जिसके लिए यह टूल बनाया गया था: मशीन को तब फ़्रीज़ करें जब वह ठीक हो, फिर हर रात पूछें कि क्या वह अब भी ठीक है।
# जिस दिन मशीन सेवा में जाती है
bws snapshot create C:\baselines\web01.json --note "after the build"
# हर रात, शेड्यूल किए गए टास्क से
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
# 0 - कोई कॉन्फ़िगरेशन ड्रिफ्ट नहीं
# 5 - कॉन्फ़िगरेशन ड्रिफ्ट हुआ, और drift.json बताता है कि क्या
# 3 - यह चला और सब कुछ नहीं पढ़ सका, इसलिए जवाब आंशिक है
विंडो उसी इंजन का दूसरा आधा हिस्सा है: BetterWindowsServices-win-x64.zip उसे रखता है, और डाउनलोड पृष्ठ बताता है कि हर आर्काइव क्या है।
विंडो का आर्ग्युमेंट
BetterWindowsServices.exe एक आर्ग्युमेंट लेता है जो किसी व्यक्ति के लिए है: --catalogue एक डेवलपर की शीट खोलता है जो विंडो के हर घटक को हर स्थिति में दिखाती है, और आपकी मशीन से कुछ नहीं पढ़ती। दूसरा, --carry, वह तरीका है जिससे कोई विंडो जो दिखा रही थी उसे अपनी उस प्रति को सौंपती है जिसे वह व्यवस्थापक के रूप में रीस्टार्ट करती है। इसे कोई टाइप नहीं करता, और उसमें जो कुछ उस विंडो ने नहीं लिखा हो सकता उसे मना कर दिया जाता है।