Referensi baris perintah
Setiap perintah, setiap opsi, dan setiap kode keluar bws, versi 0.5.0. bws --help adalah yang berwibawa dan lebih panjang - halaman ini adalah permukaan yang sama, ditata agar bisa dibaca.
Perintah
Sebelas perintah. snapshot adalah kata benda dan diikuti satu kata. tool juga kata benda, dan sendirian ia mencantumkan alat-alat.
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
Perintah yang salah ketik akan ditawari perintah yang kemungkinan Anda maksud, dan proses berakhir dengan kode 2 alih-alih melakukan sesuatu yang mirip dengan yang Anda minta.
$ bws lst
There is no command lst. Did you mean list?
Apa yang dilakukan setiap perintah
list dan show
list adalah seluruh mesin, dipersempit oleh --query. show adalah satu entri dengan semua yang diketahui tentangnya - tanda tangan, hak istimewa, deskriptor keamanan, dan memori, semuanya dibaca setiap kali, karena pada satu entri itu memakan sekitar enam puluh milidetik sedangkan pada seluruh mesin memakan satu detik. Bidang yang benar-benar kosong dihilangkan kecuali Anda memberikan --full. Bidang yang tidak bisa dibaca siapa pun dicetak dalam kedua kasus, karena menghilangkannya akan tampak seperti jawaban.
stop, start, dan restart
Masing-masing membangun rencana dan menjalankannya. --dry-run mencetak rencana dan tidak mengubah apa pun, --dependents memasukkan layanan yang akan rusak ke dalamnya sebagai langkah tersendiri, dan --timeout menyatakan berapa lama satu langkah boleh berjalan tanpa kemajuan. Driver ditolak, bukan dicoba, karena menghentikan driver kernel sering kali tidak dapat dibalikkan tanpa restart.
kill - untuk layanan yang tidak mau berhenti
Ia meminta layanan berhenti dan mengakhiri proses di belakangnya hanya jika itu tidak berhasil, sehingga entri yang berhenti sendiri tidak pernah diakhiri. Mengakhiri proses membawa serta setiap layanan lain yang hidup di proses itu, entah mereka berhenti lebih dulu atau tidak, dan pratinjau menyebut mereka serta menyebut prosesnya dengan nomor. --force melewati langkah sopan itu dan pratinjau lalu menampilkan satu langkah, bukan dua. --restart mengembalikan semuanya sesudahnya.
Windows mengeja gagasan ini secara berbeda. --force pada Stop-Service berarti "bahkan jika ada yang bergantung padanya", yang dilakukan --dependents di sini. Itulah sebabnya ini adalah perintah tersendiri dan bukan opsi pada stop.
start-type - sebuah pengaturan, bukan gerakan
Ia menyatakan apa yang akan dilakukan manajer terhadap sebuah entri pada boot berikutnya, dan tanpa --stop ia tidak memindahkan apa pun: entri yang berjalan tetap berjalan, yang berhenti tetap berhenti, dan rencana menyatakannya. disabled adalah yang layak dipertimbangkan sejenak, karena menghentikan manajer memulai entri sama sekali, termasuk atas permintaan untuk sesuatu yang lain yang membutuhkannya. delayed adalah otomatis, dimulai sedikit setelah entri otomatis lainnya - kata yang ditanyakan start:delayed dalam kueri - dan Windows menolaknya untuk entri dalam grup urutan pemuatan, yang dinyatakan rencana sebelum apa pun terjadi. Masing-masing dari keempatnya menuliskan apakah entri dimulai terlambat, seperti yang dilakukan sc.exe. --stop, hanya bersama disabled, menghentikan entri dalam rencana yang sama setelah pengaturan ditulis.
snapshot create dan snapshot diff
create selalu membaca tanda tangan dan hash, karena snapshot disimpan dan dibandingkan kemudian, dan snapshot tanpa keduanya, dibandingkan dengan yang memilikinya, akan tampak seolah-olah mesin berubah. diff menyatakan apa yang berubah dari berkas pertama ke berkas kedua, atau dari berkas ke mesin ini dengan --live. Halaman snapshot memuat formatnya dan penalarannya.
history - siapa yang mengubahnya, dari log System
Perubahan tipe startup dan pemasangan dari log System, terbaru lebih dulu, dengan akun yang dicatat Windows. Baris pertama menyatakan seberapa jauh log menjangkau ke belakang dan apakah log pernah dihapus, karena riwayat hanya sepanjang log. Dengan nama, itu adalah perubahan tipe startup layanan tersebut - pemasangan hanya dicantumkan tanpa nama, karena Windows mencatat pemasangan dengan nama tampilan dan tidak pernah dengan nama layanan. Akun disebut namanya di tempat mesin ini dapat menyebutnya sendiri dan ditampilkan sebagai SID-nya jika tidak, dan tipe startup datang dalam kata-kata yang ditulis Windows.
tool - jawaban siap pakai untuk masalah umum
Alat-alat yang sama dengan yang ditampilkan jendela di tab Tools. bws tool mencantumkannya dan bws tool fix mencantumkan perbaikan cepat: printer, sound, indexing, dan search, masing-masing adalah restart satu layanan Windows bersama apa yang bergantung padanya, dipilih karena halaman pemecahan masalah Microsoft sendiri menyarankannya. bws tool fix printer persis bws restart Spooler --dependents - rencana yang sama, keluaran yang sama, dan kode keluar yang sama - dan seperti setiap perintah di sini yang mengubah sesuatu, ia tidak bertanya terlebih dahulu, jadi --dry-run adalah cara untuk melihat sebelum dijalankan.
license - apa yang ada di dalam berkas yang Anda unduh
Ia tidak membaca apa pun sama sekali - tanpa service manager, tanpa disk, tanpa jaringan - dan menjawab dari register yang dikompilasi ke dalam berkas eksekusi. --components mengubah pemberitahuan menjadi setiap komponen beserta versi, lisensi, dan asalnya. Set yang sama dengan yang dibawa daftar bahan yang dipublikasikan di samping unduhan, karena keduanya dihasilkan dari satu register, dan itulah alasan mengapa hal ini layak dimiliki: program ini adalah satu berkas mandiri, sehingga tidak ada apa pun di sebelahnya yang bisa dibaca pemindai.
Contoh
Rencana di bawah ini diperiksa dengan --dry-run terhadap program yang dijelaskan halaman ini. Perintah yang mengubah sesuatu tidak bertanya terlebih dahulu, jadi --dry-run adalah cara untuk melihat sebelum dijalankan. Spooler mewakili layanan apa pun - taruh nama layanan Anda di tempatnya.
Mencari dan membaca
bws list setiap layanan dan driver di mesin ini
bws list --query "start:auto !status:running" apa yang seharusnya hidup dan tidak hidup
bws list --query "status:running" --memory apa yang dipakai proses setiap entri yang berjalan
bws show Spooler semua yang diketahui tentang satu entri
bws show Spooler --full juga bidang yang benar-benar kosong
Lihat dulu, baru ubah
bws restart Spooler --dry-run rencananya saja, tidak ada yang lain
bws restart Spooler --dependents restart bersama apa yang bergantung padanya
bws stop Spooler --dependents --timeout 120 izinkan dua menit per langkah tanpa kemajuan
bws start-type WSearch delayed --dry-run mulai sedikit setelah entri otomatis lainnya
bws start-type Spooler disabled --stop nonaktifkan dan hentikan dalam satu rencana
Layanan yang tidak mau berhenti
bws kill Spooler --dry-run proses itu, dan setiap layanan yang hidup di dalamnya
bws kill Spooler --restart akhiri proses hanya jika penghentian gagal, lalu kembalikan semuanya
bws kill Spooler --force --dry-run satu langkah, bukan dua: proses diakhiri seketika
Snapshot dan penyimpangan
bws snapshot create before.json --note "before the patch" bekukan mesin, dengan catatan tersimpan di dalamnya
bws snapshot diff before.json after.json dua berkas - dua hari, atau dua mesin
bws snapshot diff before.json --live berkas terhadap mesin ini seperti sekarang
bws snapshot diff before.json --live --exit-code sama, berakhir dengan 5 jika konfigurasi menyimpang
Siapa yang mengubahnya
bws history setiap perubahan tipe startup dan pemasangan yang dimuat log System
bws history Spooler perubahan tipe startup satu layanan
bws history --json sama, sebagai dokumen, dengan log dan perubahan
Perbaikan cepat
bws tool alat-alat yang ada
bws tool fix perbaikan cepat, dan layanan di balik masing-masing
bws tool fix sound --dry-run rencana me-restart dua layanan audio
bws tool fix printer restart Print Spooler bersama apa yang bergantung padanya
Apa yang ada di dalam berkas
bws license --components setiap komponen, versinya, lisensinya, dan asalnya
bws --version versi berkas eksekusi ini
Dalam skrip PowerShell
# entri yang seharusnya hidup dan tidak hidup, sebagai objek
bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
# berkas yang tidak bertanda tangan, ke dalam spreadsheet
bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
# apa yang dibutuhkan satu layanan
(bws show Spooler --json | ConvertFrom-Json).dependsOn
# pemeriksaan malam yang bercabang pada kode keluar
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" }
}
Di cmd dan berkas batch
rem perintah kedua hanya bila yang pertama tidak berakhir bersih
bws restart Spooler || echo the restart did not end cleanly
rem dalam berkas batch dengan delayed expansion aktif, ! membutuhkan tanda ^
bws list --query "start:auto ^!status:running"
Opsi
18 buah. Kolom ketiga adalah perintah tempat masing-masing berada - opsi yang diberikan kepada perintah yang tidak membutuhkannya adalah galat yang memuat daftar itu, bukan bendera yang diam-diam diabaikan.
| Opsi | Apa yang dilakukannya | Tempat berfungsi |
|---|---|---|
--query | Mempersempit daftar dengan bahasa kueri. | list |
--signatures | Membaca siapa yang menandatangani setiap berkas eksekusi dan apakah Windows memercayainya. Beberapa detik pada seluruh mesin, jadi nonaktif kecuali diminta - dan kueri tentang tanda tangan mengaktifkannya sendiri. | list |
--memory | Membaca apa yang dipakai proses setiap entri yang berjalan. Nonaktif secara bawaan karena ini pengukuran, bukan pengaturan: sedetik kemudian sudah berbeda. | list |
--required-by | Membaca entri mana yang rusak jika satu dihentikan, ditanyakan langsung ke Windows dan bukan disimpulkan dari apa yang dinyatakan semuanya. Satu panggilan per entri, jadi nonaktif kecuali diminta. show dan snapshot create membacanya setiap kali. | list |
--follow-network | Membiarkan alat ini menjangkau di luar mesin ini sama sekali - jalur peluncuran yang berada di berbagi milik orang lain, dan sertifikat yang belum dimiliki mesin ini. Nonaktif secara bawaan demi keamanan: satu berbagi yang tidak terjangkau memakan dua puluh satu detik dan mengautentikasi sebagai siapa pun yang menjalankannya, dan mengambil sertifikat adalah koneksi ke pihak ketiga di tengah daftar biasa. Tanpanya tanda tangan diperiksa terhadap apa yang ada di sini, dan hasil yang mungkin disebabkan oleh tidak melihat dilaporkan sebagai tidak terbaca, bukan sebagai putusan. | list, show, snapshot create |
--force | Pada kill, mengakhiri proses seketika tanpa bertanya dengan sopan - pratinjau lalu menampilkan satu langkah, bukan dua. Pada snapshot create, mengganti snapshot yang sudah ada - berkas yang bukan snapshot tidak pernah diganti. | snapshot create, kill |
--restart | Pada kill, mengembalikan entri setelah proses hilang, bersama semua yang berbagi proses itu. | kill |
--stop | Pada start-type, dan hanya bersama disabled, menghentikan entri dalam rencana yang sama setelah pengaturan ditulis. Tipe startup mengubah boot berikutnya dan tidak mengubah apa pun sekarang, jadi tanpanya entri yang sedang berjalan yang diatur ke disabled tetap berjalan. | start-type |
--full | Pada show, mencetak juga bidang yang benar-benar kosong. Bidang yang tidak bisa dibaca siapa pun dicetak dalam kedua kasus. | show |
--json | Dokumen yang sama, dapat dibaca mesin, pada keluaran standar. | list, show, stop, start, restart, start-type, snapshot create, snapshot diff, kill, history, tool fix NAME |
--note | Untuk apa snapshot diambil, disimpan di dalam berkas. | snapshot create |
--exit-code | Berakhir dengan kode 5 ketika konfigurasi berbeda - sebuah entri ditambah atau dihapus, atau satu yang diatur berbeda. Status berjalan saja tidak dihitung. Nonaktif secara bawaan, agar skrip yang hanya ingin perbedaan dicetak tidak tersandung karena menemukan beberapa. | snapshot diff |
--live | Membandingkan berkas dengan mesin ini seperti sekarang, bukan dengan berkas kedua. | snapshot diff |
--timing | Berapa lama setiap bagian pembacaan, pada galat standar. | list, show, stop, start, restart, start-type, snapshot create, snapshot diff, kill, history, tool fix NAME |
--dry-run | Mencetak rencana dan tidak mengubah apa pun. Ini adalah rencana yang sama yang dijalankan eksekusi - tidak ada jalur kode kedua untuk eksekusi yang sebenarnya. | stop, start, restart, start-type, kill, tool fix NAME |
--dependents | Memasukkan layanan yang akan rusak ke dalam rencana sebagai langkah tersendiri. | stop, restart, kill |
--timeout | Berapa lama satu langkah boleh berjalan tanpa kemajuan sebelum ditinggalkan, dihitung ulang setiap kali layanan melaporkan kemajuan. Enam puluh detik kecuali Anda menyatakan lain. Layanan yang terus melaporkan kemajuan diawasi selama diperlukan. Kehabisan waktu adalah akhir pengawasan, bukan kegagalan, dan laporan menyebutkan di mana entri ditinggalkan. | stop, start, restart, kill, tool fix NAME |
--components | Pada license, mengubah pemberitahuan menjadi setiap komponen di dalam berkas eksekusi ini beserta versi, lisensi, dan asalnya. Set yang sama dengan yang dibawa daftar bahan yang dipublikasikan di samping unduhan, karena keduanya dihasilkan dari satu register. | license |
Kode keluar
6 akhiran, dan masing-masing adalah hal yang berbeda untuk dilakukan skrip. Data masuk ke keluaran standar dan yang lain ke galat standar, sehingga bws list --json | jq berfungsi dan peringatan tidak pernah mendarat di JSON Anda.
Setiap dokumen JSON adalah ASCII polos: huruf di luarnya ditulis sebagai escape enam karakter yang diubah kembali oleh setiap pembaca JSON menjadi huruf itu, sehingga bws list --json > file.json adalah UTF-8 yang valid dan | ConvertFrom-Json membacanya dengan benar apa pun code page konsolnya. Dalam teks yang dibaca orang, karakter yang akan menggerakkan terminal alih-alih tercetak - tab, jeda baris, urutan escape, penimpaan arah - ditampilkan sebagai titik kodenya, <U+001B>.
-- mengakhiri opsi, sehingga layanan yang namanya diawali tanda hubung tetap bisa disebut: bws show -- -odd. Baris perintah yang diberikan alat ini kepada Anda ditulis untuk PowerShell: nama dengan spasi masuk ke tanda kutip ganda, yang dibaca cmd dengan cara yang sama, dan nama yang akan diperluas PowerShell di dalamnya, seperti MSSQL$SQLEXPRESS, masuk ke tanda kutip tunggal.
| Kode | Arti |
|---|---|
0 | Selesai, dan semuanya sampai ke tujuannya. |
1 | Alat ini gagal - ia tidak dapat melakukan apa yang diminta, karena alasan yang menyangkut alatnya, bukan rencananya. |
2 | Baris perintahnya salah. Perintah yang salah ketik akan ditawari perintah yang kemungkinan Anda maksud. |
3 | Rencananya bagus, dijalankan, dan ada sesuatu di dalamnya yang tidak sampai ke tujuannya - manajer menolak, atau sesi tidak punya hak atasnya. |
4 | Seseorang menghentikan proses secara manual. Bukan nol bahkan ketika setiap langkah masih sampai, agar pembungkus tidak menganggap proses yang terputus sebagai bersih. |
5 | Perbandingan dijalankan dan menemukan bahwa konfigurasi menyimpang - sebuah entri ditambah atau dihapus, atau satu yang diatur berbeda. Status berjalan saja bukan penyimpangan. Hanya dengan --exit-code, karena penyimpangan adalah apa yang ingin ditemukan alat ini, dan menemukannya bukanlah kegagalan. |
Ctrl+C punya tiga tingkat, masing-masing menyatakan apa biaya tingkat berikutnya. Yang pertama berhenti maju dan tetap mengembalikan apa yang diambil, yang kedua membiarkan keadaan apa adanya dan tetap mencetak laporan, yang ketiga mengakhiri proses. Proses yang dihentikan secara manual berakhir dengan 4 bahkan ketika setiap langkah masih sampai.
Menutup jendela konsol dihitung sebagai Ctrl+C pertama. Windows memberi program lima detik setelah itu, dan dalam waktu itu program ini berhenti maju dan mengembalikan apa yang dijatuhkannya. Keluar dari akun dan mematikan komputer mengakhirinya tanpa peringatan apa pun yang bisa ditindaklanjutinya, dan sesi jarak jauh yang terputus mungkin juga demikian.
Dalam tugas terjadwal
Bentuk yang untuknya alat ini dibangun: bekukan mesin ketika diketahui baik, lalu tanyakan setiap malam apakah ia masih begitu.
# hari mesin mulai beroperasi
bws snapshot create C:\baselines\web01.json --note "after the build"
# setiap malam, dari tugas terjadwal
bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
# 0 - tidak ada penyimpangan konfigurasi
# 5 - konfigurasi menyimpang, dan drift.json menyatakan apa
# 3 - berjalan tetapi tidak bisa membaca semuanya, jadi jawabannya sebagian
Jendela adalah bagian lain dari mesin yang sama: BetterWindowsServices-win-x64.zip memuatnya, dan halaman unduhan menyatakan apa masing-masing arsip.
Argumen jendela
BetterWindowsServices.exe menerima satu argumen yang ditujukan untuk manusia: --catalogue membuka lembar pengembang yang menampilkan setiap komponen jendela dalam setiap keadaan, dan tidak membaca apa pun dari mesin Anda. Yang kedua, --carry, adalah cara jendela menyerahkan apa yang ditampilkannya kepada salinan dirinya yang di-restart-nya sebagai administrator. Tidak ada yang mengetiknya, dan apa pun di dalamnya yang tidak mungkin ditulis jendela itu ditolak.