อ้างอิง

เอกสารอ้างอิงบรรทัดคำสั่ง

ทุกคำสั่ง ทุกตัวเลือก และทุกรหัสออกของ bws เวอร์ชัน 0.5.0 bws --help เป็นฉบับที่เชื่อถือได้และยาวกว่า หน้านี้คือพื้นผิวเดียวกันที่จัดไว้ให้อ่าน

คำสั่ง

11 คำสั่ง 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 และหน่วยความจำ อ่านทั้งหมดทุกครั้ง เพราะกับหนึ่งรายการมันใช้ประมาณ 60 มิลลิวินาที ขณะที่กับทั้งเครื่องใช้ 1 วินาที ฟิลด์ที่ว่างจริงๆ จะถูกละไว้ เว้นแต่คุณส่ง --full ฟิลด์ที่ไม่มีใครอ่านได้จะถูกพิมพ์เสมอ เพราะการละไว้จะดูเหมือนเป็นคำตอบ

stop, start และ restart

แต่ละคำสั่งสร้างแผนและทำตามแผนนั้น --dry-run พิมพ์แผนและไม่เปลี่ยนอะไร --dependents ใส่บริการที่จะเสียหายลงไปเป็นขั้นตอนของตัวเอง และ --timeout บอกว่าหนึ่งขั้นตอนอยู่ได้นานเท่าไรโดยไม่มีความคืบหน้า ไดรเวอร์ถูกปฏิเสธแทนที่จะลอง เพราะการหยุดไดรเวอร์เคอร์เนลมักย้อนกลับไม่ได้ถ้าไม่รีสตาร์ต

kill: สำหรับบริการที่หยุดไม่ลง

มันขอให้บริการหยุด และจบกระบวนการที่อยู่เบื้องหลัง เฉพาะเมื่อวิธีนั้นไม่ได้ผล รายการที่หยุดเองได้จึงไม่เคยถูกจบ การจบกระบวนการพาทุกบริการอื่นที่อยู่ในกระบวนการนั้นไปด้วย ไม่ว่าพวกมันจะหยุดก่อนหรือไม่ และตัวอย่างจะบอกชื่อพวกมันและระบุกระบวนการด้วยหมายเลข --force ข้ามขั้นตอนที่สุภาพ และตัวอย่างจะแสดงหนึ่งขั้นตอนแทนที่จะเป็นสอง --restart นำทุกอย่างกลับมาหลังจากนั้น

Windows สะกดความคิดนี้ต่างออกไป --force บน Stop-Service หมายถึง “แม้ว่าจะมีบางอย่างขึ้นอยู่กับมัน” ซึ่งคือสิ่งที่ --dependents ทำที่นี่ นั่นคือเหตุผลที่นี่เป็นคำสั่งของตัวเองแทนที่จะเป็นตัวเลือกของ stop

start-type: เป็นการตั้งค่า ไม่ใช่การเคลื่อนไหว

มันบอกว่าตัวจัดการจะทำอะไรกับรายการตอนบูตครั้งถัดไป และถ้าไม่มี --stop มันไม่ขยับอะไรเลย รายการที่กำลังทำงานก็ทำงานต่อ รายการที่หยุดอยู่ก็หยุดต่อ และแผนบอกไว้อย่างนั้น disabled คืออันที่ควรหยุดคิด เพราะมันทำให้ตัวจัดการไม่เริ่มรายการเลย รวมถึงเริ่มตามความต้องการให้สิ่งอื่นที่ต้องใช้มัน delayed คืออัตโนมัติที่เริ่มช้ากว่ารายการอัตโนมัติอื่นเล็กน้อย เป็นคำที่ start:delayed ถามถึงในคิวรี และ Windows ปฏิเสธมันสำหรับรายการในกลุ่มลำดับการโหลด ซึ่งแผนบอกก่อนจะมีอะไรเกิดขึ้น ทั้งสี่แบบเขียนว่ารายการเริ่มช้าหรือไม่ เหมือนที่ sc.exe ทำ --stop ซึ่งใช้ได้เฉพาะคู่กับ disabled จะหยุดรายการในแผนเดียวกันเมื่อเขียนการตั้งค่าแล้ว

snapshot create และ snapshot diff

create อ่านลายเซ็นและแฮชเสมอ เพราะสแนปช็อตถูกเก็บไว้และเปรียบเทียบทีหลัง และสแนปช็อตที่ไม่มีมันเมื่อเทียบกับอันที่มีจะดูเหมือนเครื่องเปลี่ยนไป diff บอกว่าอะไรเปลี่ยนจากไฟล์แรกไปไฟล์ที่สอง หรือจากไฟล์ไปเครื่องนี้ด้วย --live หน้าสแนปช็อตมีรูปแบบและเหตุผล

history: ใครเปลี่ยน จาก System log

การเปลี่ยนประเภทการเริ่มต้นและการติดตั้งจาก System log ใหม่สุดก่อน พร้อมบัญชีที่ Windows บันทึกไว้ บรรทัดแรกบอกว่า log ย้อนไปไกลแค่ไหนและเคยถูกล้างหรือไม่ เพราะประวัติยาวเท่า log เท่านั้น เมื่อมีชื่อ จะเป็นการเปลี่ยนประเภทการเริ่มต้นของบริการนั้น การติดตั้งแสดงเฉพาะเมื่อไม่มีชื่อ เพราะ 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       ปิดใช้งานและหยุดมันในแผนเดียว

บริการที่หยุดไม่ลง

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 log เก็บไว้
bws history Spooler  การเปลี่ยนประเภทการเริ่มต้นของบริการหนึ่งตัว
bws history --json   เหมือนกันแต่เป็นเอกสาร พร้อม log และการเปลี่ยนแปลง

การแก้ด่วน

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 ในไฟล์แบตช์ที่เปิด delayed expansion ไว้ ! ต้องมี caret
bws list --query "start:auto ^!status:running"

ตัวเลือก

18 ตัว คอลัมน์ที่สามคือคำสั่งที่แต่ละตัวเป็นของ ตัวเลือกที่ส่งให้คำสั่งที่ไม่ได้ใช้มันคือข้อผิดพลาดที่มีรายการนั้นอยู่ข้างใน แทนที่จะเป็นแฟล็กที่ถูกเมินเงียบๆ

ตัวเลือกทำอะไรใช้ได้ที่ไหน
--queryจำกัดรายชื่อให้แคบลงด้วยภาษาคิวรีlist
--signaturesอ่านว่าใครลงลายเซ็นไฟล์ปฏิบัติการแต่ละไฟล์และ Windows เชื่อถือหรือไม่ ใช้เวลาหลายวินาทีทั้งเครื่อง จึงปิดไว้เว้นแต่จะขอ และคิวรีเกี่ยวกับลายเซ็นจะเปิดมันเองlist
--memoryอ่านว่ากระบวนการของแต่ละรายการที่กำลังทำงานใช้อะไรอยู่ ปิดไว้เป็นค่าเริ่มต้นเพราะเป็นการวัดไม่ใช่การตั้งค่า อีกวินาทีเดียวก็ต่างไปแล้วlist
--required-byอ่านว่ารายการไหนจะเสียหายถ้าหยุดรายการหนึ่ง ถาม Windows โดยตรงแทนการสรุปจากสิ่งที่ทุกอย่างประกาศไว้ ต้องเรียกหนึ่งครั้งต่อรายการ จึงปิดไว้เว้นแต่จะขอ show และ snapshot create อ่านมันทุกครั้งlist
--follow-networkให้เครื่องมือเอื้อมออกนอกเครื่องนี้ได้เลย พาธการเปิดใช้งานที่อยู่บนโฟลเดอร์แชร์ของคนอื่น และใบรับรองที่เครื่องนี้ยังไม่มี ปิดไว้เป็นค่าเริ่มต้นเพื่อความปลอดภัย โฟลเดอร์แชร์ที่เข้าไม่ถึงหนึ่งแห่งใช้เวลา 21 วินาทีและยืนยันตัวตนเป็นคนที่รัน และการดึงใบรับรองคือการเชื่อมต่อกับบุคคลที่สามกลางการแสดงรายชื่อปกติ ถ้าไม่มีมัน ลายเซ็นจะถูกตรวจกับสิ่งที่มีอยู่ที่นี่ และผลที่อาจเกิดจากการไม่ได้ดูจะถูกรายงานว่าไม่ได้อ่าน ไม่ใช่เป็นคำตัดสิน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เอกสารเดียวกัน ในรูปแบบที่เครื่องอ่านได้ ที่ standard outputlist, 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การอ่านแต่ละส่วนใช้เวลานานเท่าไร ที่ standard errorlist, 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หนึ่งขั้นตอนอยู่ได้นานเท่าไรโดยไม่มีความคืบหน้าก่อนจะเลิกรอ นับใหม่ทุกครั้งที่บริการรายงานความคืบหน้า 60 วินาทีถ้าคุณไม่ระบุ บริการที่รายงานความคืบหน้าต่อเนื่องจะถูกเฝ้าดูตราบเท่าที่ต้องใช้ การหมดเวลาคือการสิ้นสุดการเฝ้าดู ไม่ใช่ความล้มเหลว และรายงานจะบอกว่ารายการถูกทิ้งไว้ที่ไหนstop, start, restart, kill, tool fix NAME
--componentsบน license คือเปลี่ยนประกาศให้เป็นทุกคอมโพเนนต์ในไฟล์ปฏิบัติการนี้พร้อมเวอร์ชัน สัญญาอนุญาต และแหล่งที่มา ชุดเดียวกับที่รายการส่วนประกอบซึ่งเผยแพร่ข้างการดาวน์โหลดมี เพราะทั้งสองสร้างจากทะเบียนเดียวกันlicense

รหัสออก

6 แบบของการจบ และทุกแบบเป็นสิ่งที่สคริปต์ต้องทำต่างกัน ข้อมูลไปที่ standard output และอย่างอื่นทั้งหมดไปที่ standard error ดังนั้น 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มีคนหยุดการรันด้วยมือ ไม่เป็นศูนย์แม้ทุกขั้นตอนจะไปถึงที่หมายแล้ว เพื่อให้ wrapper ไม่ถือว่าการรันที่ถูกขัดจังหวะเป็นการรันที่สะอาด
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 เป็นวิธีที่หน้าต่างส่งสิ่งที่กำลังแสดงอยู่ให้สำเนาของตัวเองที่รีสตาร์ตเป็นผู้ดูแลระบบ ไม่มีใครพิมพ์มัน และสิ่งใดในนั้นที่หน้าต่างนั้นเขียนไม่ได้จะถูกปฏิเสธ