--exit-code, protože drift je to, co tento nástroj má nacházet, a jeho nalezení není selhání.",
+
+ "switch.query": "Zúží výpis pomocí dotazovacího jazyka.",
+ "switch.signatures": "Přečte, kdo podepsal každý spustitelný soubor a jestli mu Windows důvěřuje. Na celém stroji několik sekund, takže je vypnuto, pokud se o to nepožádá - a dotaz na podpisy to zapne sám.",
+ "switch.memory": "Přečte, co používá proces každé běžící položky. Ve výchozím stavu vypnuto, protože jde o měření, ne o nastavení: o vteřinu později je jiné.",
+ "switch.required-by": "Přečte, které položky se rozbijí, když se jedna zastaví, zeptáním přímo Windows, a ne odvozením z toho, co všechno deklaruje. Jedno volání na položku, takže vypnuto, pokud se o to nepožádá. show a snapshot create to čtou pokaždé.",
+ "switch.follow-network": "Nechá nástroj vůbec sáhnout mimo tento stroj - cesta ke spuštění ležící na cizí sdílené složce a certifikát, který tento stroj ještě nemá. Ve výchozím stavu vypnuto z bezpečnostních důvodů: jedna nedostupná sdílená složka stojí jedenadvacet sekund a ověřuje se jako ten, kdo nástroj spustil, a stažení certifikátu je spojení s třetí stranou uprostřed běžného výpisu. Bez tohoto přepínače se podpis kontroluje proti tomu, co je zde, a výsledek, který mohlo způsobit nehledání, se hlásí jako nepřečtený, a ne jako verdikt.",
+ "switch.force": "U kill ukončí proces hned, bez zdvořilého ptaní - náhled pak ukazuje jeden krok místo dvou. U snapshot create nahradí již existující snímek - soubor, který snímkem není, se nikdy nenahradí.",
+ "switch.restart": "U kill vrátí položku zpět, jakmile je proces pryč, spolu se vším, co ho sdílelo.",
+ "switch.stop": "U start-type a jen vedle disabled zastaví položku ve stejném plánu, jakmile je nastavení zapsáno. Typ spouštění mění příští start a nic teď, takže bez tohoto přepínače běžící položka nastavená na disabled běží dál.",
+ "switch.full": "U show vypíše i pole, která jsou opravdu prázdná. Pole, které nikdo nemohl přečíst, se vypíše vždy.",
+ "switch.components": "U license změní upozornění na každou součást uvnitř tohoto spustitelného souboru s její verzí, licencí a původem. Stejná sada, jakou nese soupis součástí zveřejněný vedle stažení, protože oba vznikají z jednoho registru.",
+ "switch.json": "Stejný dokument, strojově čitelný, na standardním výstupu.",
+ "switch.note": "K čemu byl snímek pořízen, uloženo uvnitř souboru.",
+ "switch.exit-code": "Skončí kódem 5, když se konfigurace liší - položka přidána nebo odebrána, nebo nastavená jinak. Samotný stav běhu se nepočítá. Ve výchozím stavu vypnuto, aby skript, který chce jen vypsat rozdíly, nezakopl o to, že nějaké našel.",
+ "switch.live": "Porovná soubor s tímto strojem, jaký je teď, místo s druhým souborem.",
+ "switch.timing": "Jak dlouho trvala každá část čtení, na standardním chybovém výstupu.",
+ "switch.dry-run": "Vypíše plán a nic nezmění. Je to týž plán, který provedení spustí - pro skutečné provedení neexistuje druhá cesta v kódu.",
+ "switch.dependents": "Zařadí do plánu služby, které by se rozbily, jako samostatné kroky.",
+ "switch.timeout": "Jak dlouho smí jeden krok zůstat bez pokroku, než se vzdá, počítáno znovu při každém hlášení pokroku služby. Šedesát sekund, pokud neřeknete jinak. Služba, která pokrok neustále hlásí, je sledována, jak dlouho je potřeba. Vypršení je konec sledování, ne selhání, a hlášení říká, kde položka zůstala.",
+
+ "field.name": "název služby, podle kterého ji Windows identifikuje",
+ "field.display": "zobrazovaný název, tak jak ho tento Windows píše",
+ "field.description": "co položka říká sama o sobě",
+ "field.type": "o jaký druh položky jde",
+ "field.peruser": "zda jde o jednu z rodin pro jednotlivé uživatele, jejichž kopii Windows vytváří pro každou relaci",
+ "field.status": "co právě dělá",
+ "field.start": "co s ní správce udělá při příštím startu",
+ "field.account": "účet, pod kterým běží, tak jak ho správce píše",
+ "field.pid": "proces, ve kterém běží",
+ "field.trigger": "podmínka, která ji spouští nebo zastavuje",
+ "field.path": "příkazový řádek, který správce spouští",
+ "field.file": "zda soubor, který spouští, je na disku",
+ "field.signed": "co si Windows myslí o podpisu souboru, bez kontroly odvolání",
+ "field.publisher": "kdo soubor podepsal - prokázáno jen důvěryhodným podpisem",
+ "field.privilege": "privilegium, o které položka žádá",
+ "field.dependson": "co tato položka potřebuje",
+ "field.requiredby": "co se rozbije, když se tato zastaví",
+ "field.sidtype": "typ SID služby",
+ "field.sddl": "popisovač zabezpečení jako text",
+ "field.memory": "co používá její proces",
+ "field.mismatch": "konfigurace a stav, které si odporují",
+
+ "field.open.name": "text",
+ "field.open.display": "text",
+ "field.open.description": "text",
+ "field.open.account": "text, např. localsystem",
+ "field.open.pid": "číslo: 1234, >1000, 100-200",
+ "field.open.path": "text",
+ "field.open.publisher": "text",
+ "field.open.privilege": "text, např. SeDebugPrivilege",
+ "field.open.dependson": "název služby",
+ "field.open.requiredby": "název služby",
+ "field.open.sddl": "text",
+ "field.open.memory": "velikost s jednotkou: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "hodnota existuje, ať je jakákoli",
+ "reserved.none": "opravdu žádná hodnota není - položka žádnou nemá",
+ "reserved.unreadable": "nástroj toto pole nemohl přečíst nebo ho nepřečetl, což je otázka, kterou services.msc neumí ani položit"
+}
diff --git a/site/i18n/id.json b/site/i18n/id.json
new file mode 100644
index 0000000..afc203e
--- /dev/null
+++ b/site/i18n/id.json
@@ -0,0 +1,95 @@
+{
+ "_translated_from": "1867e30d6665",
+ "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.",
+
+ "chrome.skip": "Lompat ke konten",
+ "chrome.nav": "Situs",
+ "chrome.language": "Bahasa",
+
+ "chrome.footer.product": "Produk",
+ "chrome.footer.guides": "Panduan",
+ "chrome.footer.project": "Proyek",
+ "chrome.footer.source": "Kode sumber di GitHub",
+ "chrome.footer.releases": "Rilis",
+ "chrome.footer.issues": "Pelacak masalah",
+ "chrome.footer.security": "Melaporkan masalah keamanan",
+ "chrome.footer.support": "Dukung proyek ini",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Dirilis di bawah GNU General Public License, versi 3. Dibuat dengan alur kerja berbantuan AI.",
+ "chrome.legal.trademark": "{{product}} tidak berafiliasi dengan, didukung oleh, atau disponsori oleh Microsoft. Windows adalah merek dagang dari grup perusahaan Microsoft, dan namanya dipakai di sini hanya untuk menyatakan apa yang dikelola alat ini.",
+ "chrome.legal.privacy": "Situs ini tidak menetapkan cookie, tidak menjalankan skrip, dan tidak memuat apa pun dari tempat lain.",
+
+ "table.head.code": "Kode",
+ "table.head.meaning": "Arti",
+ "table.head.switch": "Opsi",
+ "table.head.what": "Apa yang dilakukannya",
+ "table.head.where": "Tempat berfungsi",
+ "table.head.field": "Bidang",
+ "table.head.asks": "Menanyakan tentang",
+ "table.head.values": "Nilai",
+
+ "exit.ok": "Selesai, dan semuanya sampai ke tujuannya.",
+ "exit.runtime": "Alat ini gagal - ia tidak dapat melakukan apa yang diminta, karena alasan yang menyangkut alatnya, bukan rencananya.",
+ "exit.usage": "Baris perintahnya salah. Perintah yang salah ketik akan ditawari perintah yang kemungkinan Anda maksud.",
+ "exit.incomplete": "Rencananya bagus, dijalankan, dan ada sesuatu di dalamnya yang tidak sampai ke tujuannya - manajer menolak, atau sesi tidak punya hak atasnya.",
+ "exit.interrupted": "Seseorang menghentikan proses secara manual. Bukan nol bahkan ketika setiap langkah masih sampai, agar pembungkus tidak menganggap proses yang terputus sebagai bersih.",
+ "exit.differences": "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.",
+
+ "switch.query": "Mempersempit daftar dengan bahasa kueri.",
+ "switch.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.",
+ "switch.memory": "Membaca apa yang dipakai proses setiap entri yang berjalan. Nonaktif secara bawaan karena ini pengukuran, bukan pengaturan: sedetik kemudian sudah berbeda.",
+ "switch.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.",
+ "switch.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.",
+ "switch.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.",
+ "switch.restart": "Pada kill, mengembalikan entri setelah proses hilang, bersama semua yang berbagi proses itu.",
+ "switch.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.",
+ "switch.full": "Pada show, mencetak juga bidang yang benar-benar kosong. Bidang yang tidak bisa dibaca siapa pun dicetak dalam kedua kasus.",
+ "switch.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.",
+ "switch.json": "Dokumen yang sama, dapat dibaca mesin, pada keluaran standar.",
+ "switch.note": "Untuk apa snapshot diambil, disimpan di dalam berkas.",
+ "switch.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.",
+ "switch.live": "Membandingkan berkas dengan mesin ini seperti sekarang, bukan dengan berkas kedua.",
+ "switch.timing": "Berapa lama setiap bagian pembacaan, pada galat standar.",
+ "switch.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.",
+ "switch.dependents": "Memasukkan layanan yang akan rusak ke dalam rencana sebagai langkah tersendiri.",
+ "switch.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.",
+
+ "field.name": "nama layanan, yang dipakai Windows untuk mengenalinya",
+ "field.display": "nama tampilan, seperti yang dieja Windows ini",
+ "field.description": "apa yang dikatakan entri tentang dirinya sendiri",
+ "field.type": "jenis entri apa itu",
+ "field.peruser": "apakah ini salah satu keluarga per pengguna yang disalin Windows per sesi",
+ "field.status": "apa yang sedang dilakukannya sekarang",
+ "field.start": "apa yang dilakukan manajer terhadapnya pada boot berikutnya",
+ "field.account": "akun tempat ia berjalan, seperti yang dieja manajer",
+ "field.pid": "proses tempat ia berjalan",
+ "field.trigger": "kondisi yang memulai atau menghentikannya",
+ "field.path": "baris perintah yang diluncurkan manajer",
+ "field.file": "apakah berkas yang dijalankannya ada di disk",
+ "field.signed": "apa yang dipikirkan Windows tentang tanda tangan berkas, tanpa memeriksa pencabutan",
+ "field.publisher": "siapa yang menandatangani berkas - terbukti hanya oleh tanda tangan tepercaya",
+ "field.privilege": "hak istimewa yang diminta entri",
+ "field.dependson": "apa yang dibutuhkan yang satu ini",
+ "field.requiredby": "apa yang rusak jika yang satu ini berhenti",
+ "field.sidtype": "tipe SID layanan",
+ "field.sddl": "deskriptor keamanan, sebagai teks",
+ "field.memory": "apa yang dipakai prosesnya",
+ "field.mismatch": "konfigurasi dan status yang tidak sesuai",
+
+ "field.open.name": "teks",
+ "field.open.display": "teks",
+ "field.open.description": "teks",
+ "field.open.account": "teks, mis. localsystem",
+ "field.open.pid": "angka: 1234, >1000, 100-200",
+ "field.open.path": "teks",
+ "field.open.publisher": "teks",
+ "field.open.privilege": "teks, mis. SeDebugPrivilege",
+ "field.open.dependson": "nama layanan",
+ "field.open.requiredby": "nama layanan",
+ "field.open.sddl": "teks",
+ "field.open.memory": "ukuran dengan satuan: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "ada nilai, apa pun itu",
+ "reserved.none": "benar-benar tidak ada nilai - entri tidak memilikinya",
+ "reserved.unreadable": "alat ini tidak dapat membaca bidang ini, atau belum membacanya, yang merupakan pertanyaan yang bahkan tidak bisa diajukan services.msc"
+}
diff --git a/site/i18n/ja.json b/site/i18n/ja.json
new file mode 100644
index 0000000..10018ea
--- /dev/null
+++ b/site/i18n/ja.json
@@ -0,0 +1,95 @@
+{
+ "_translated_from": "1867e30d6665",
+ "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.",
+
+ "chrome.skip": "本文へスキップ",
+ "chrome.nav": "サイト",
+ "chrome.language": "言語",
+
+ "chrome.footer.product": "製品",
+ "chrome.footer.guides": "ガイド",
+ "chrome.footer.project": "プロジェクト",
+ "chrome.footer.source": "GitHub のソースコード",
+ "chrome.footer.releases": "リリース",
+ "chrome.footer.issues": "課題トラッカー",
+ "chrome.footer.security": "セキュリティ上の問題を報告する",
+ "chrome.footer.support": "プロジェクトを支援する",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. GNU General Public License バージョン 3 の下で公開されています。AI を活用したワークフローで作成されました。",
+ "chrome.legal.trademark": "{{product}} は、Microsoft と提携しておらず、Microsoft の承認も後援も受けていません。Windows は Microsoft 企業グループの商標であり、この名称は、このツールが何を管理するかを示すためだけにここで使用しています。",
+ "chrome.legal.privacy": "このサイトは、Cookie を設定せず、スクリプトを実行せず、ほかの場所から何も読み込みません。",
+
+ "table.head.code": "コード",
+ "table.head.meaning": "意味",
+ "table.head.switch": "オプション",
+ "table.head.what": "動作",
+ "table.head.where": "使える場所",
+ "table.head.field": "フィールド",
+ "table.head.asks": "尋ねる内容",
+ "table.head.values": "値",
+
+ "exit.ok": "完了し、すべてが行き先に届きました。",
+ "exit.runtime": "ツールが失敗しました。プランではなく、ツール自体に原因がある理由で、依頼されたことを実行できませんでした。",
+ "exit.usage": "コマンドラインが正しくありませんでした。入力ミスのあるコマンドには、おそらく意図したものが提示されます。",
+ "exit.incomplete": "プランは問題なく実行されましたが、その中の何かが行き先に届きませんでした。マネージャーが拒否したか、セッションに権限がありませんでした。",
+ "exit.interrupted": "誰かが手動で実行を止めました。すべてのステップが届いていても 0 以外になるので、ラッパーが中断された実行を正常なものとして扱いません。",
+ "exit.differences": "比較が実行され、構成がドリフトしていることがわかりました。エントリが追加または削除された、または設定が異なるものがあります。実行状態だけではドリフトではありません。--exit-code を付けたときのみです。ドリフトはこのツールが見つけるために存在するものであり、見つけることは失敗ではないからです。",
+
+ "switch.query": "クエリ言語で一覧を絞り込みます。",
+ "switch.signatures": "各実行ファイルを誰が署名したか、Windows がそれを信頼しているかを読み取ります。マシン全体では数秒かかるため、頼まれない限りオフです。署名についてのクエリは、これを自動的にオンにします。",
+ "switch.memory": "実行中の各エントリのプロセスが使用しているものを読み取ります。設定ではなく計測値であり、1 秒後には異なるため、既定ではオフです。",
+ "switch.required-by": "1 つを停止すると壊れるエントリを読み取ります。各エントリが宣言している内容から推測するのではなく、Windows に直接尋ねます。エントリごとに 1 回の呼び出しが必要なので、頼まれない限りオフです。show と snapshot create は毎回これを読み取ります。",
+ "switch.follow-network": "ツールがこのマシンの外に出ることを許可します。ほかの人の共有上にある起動パスと、このマシンにまだない証明書です。安全のため既定ではオフです。到達できない共有が 1 つあると 21 秒かかり、実行した人として認証されます。また、証明書の取得は、通常の一覧の途中で第三者に接続することです。これがない場合、署名はここにあるものに対して確認され、見なかったことが原因かもしれない結果は、判定ではなく読み取れなかったものとして報告されます。",
+ "switch.force": "kill では、丁寧に尋ねずにすぐにプロセスを終了します。そのため、プレビューには 2 つではなく 1 つのステップが表示されます。snapshot create では、すでにあるスナップショットを置き換えます。スナップショットではないファイルが置き換えられることはありません。",
+ "switch.restart": "kill では、プロセスが消えたあとに、そのプロセスを共有していたすべてのものとともに、エントリを元に戻します。",
+ "switch.stop": "start-type で、かつ disabled と組み合わせたときのみ、設定を書き込んだあとに同じプランの中でエントリを停止します。スタートアップの種類は次回の起動を変えるだけで今は何も変えないので、これがないと、disabled に設定された実行中のエントリは実行され続けます。",
+ "switch.full": "show では、本当に空のフィールドも表示します。誰も読み取れなかったフィールドは、どちらの場合も表示されます。",
+ "switch.components": "license では、通知を、この実行ファイルの中にあるすべてのコンポーネントとそのバージョン、ライセンス、出所に変えます。ダウンロードの横で公開されている部品表と同じ内容です。どちらも 1 つの台帳から生成されるためです。",
+ "switch.json": "同じドキュメントを、機械可読な形で標準出力に出します。",
+ "switch.note": "スナップショットを何のために取ったかを、ファイルの中に保持します。",
+ "switch.exit-code": "構成が異なる場合に、コード 5 で終了します。エントリが追加または削除された、または設定が異なるものがある場合です。実行状態だけでは数えません。既定ではオフです。差分の表示だけが目的のスクリプトが、差分を見つけたことでつまずかないようにするためです。",
+ "switch.live": "ファイルを、2 つ目のファイルではなく、現在のこのマシンと比較します。",
+ "switch.timing": "読み取りの各部分にかかった時間を、標準エラーに出力します。",
+ "switch.dry-run": "プランを表示するだけで、何も変更しません。実際の実行が行うのと同じプランです。実際の処理のための別のコード経路はありません。",
+ "switch.dependents": "壊れるサービスを、独立したステップとしてプランに含めます。",
+ "switch.timeout": "1 つのステップが、進捗なしで断念されるまでに続けられる時間です。サービスが進捗を報告するたびに数え直されます。指定しない場合は 60 秒です。進捗を報告し続けるサービスは、必要なだけ監視されます。時間切れは監視の終了であり、失敗ではなく、レポートはエントリがどこで止まったかを伝えます。",
+
+ "field.name": "サービス名。Windows が識別に使うもの",
+ "field.display": "表示名。この Windows での表記",
+ "field.description": "エントリが自分自身について述べていること",
+ "field.type": "エントリの種類",
+ "field.peruser": "Windows がセッションごとにコピーを作る、ユーザーごとのファミリーの 1 つかどうか",
+ "field.status": "今、何をしているか",
+ "field.start": "次回の起動時に、マネージャーがどう扱うか",
+ "field.account": "実行しているアカウント。マネージャーでの表記",
+ "field.pid": "実行されているプロセス",
+ "field.trigger": "開始または停止する条件",
+ "field.path": "マネージャーが起動するコマンドライン",
+ "field.file": "実行するファイルがディスク上にあるかどうか",
+ "field.signed": "ファイルの署名について Windows が判断していること。失効の確認は行いません",
+ "field.publisher": "ファイルに署名した人。信頼された署名によってのみ証明されます",
+ "field.privilege": "エントリが要求する特権",
+ "field.dependson": "これが必要とするもの",
+ "field.requiredby": "これが停止すると壊れるもの",
+ "field.sidtype": "サービス SID の種類",
+ "field.sddl": "セキュリティ記述子のテキスト表現",
+ "field.memory": "そのプロセスが使用しているもの",
+ "field.mismatch": "食い違っている構成と状態",
+
+ "field.open.name": "テキスト",
+ "field.open.display": "テキスト",
+ "field.open.description": "テキスト",
+ "field.open.account": "テキスト(例: localsystem)",
+ "field.open.pid": "数値: 1234、>1000、100-200",
+ "field.open.path": "テキスト",
+ "field.open.publisher": "テキスト",
+ "field.open.privilege": "テキスト(例: SeDebugPrivilege)",
+ "field.open.dependson": "サービス名",
+ "field.open.requiredby": "サービス名",
+ "field.open.sddl": "テキスト",
+ "field.open.memory": "単位付きのサイズ: 500MB、>1GB、100MB-1GB",
+
+ "reserved.any": "値があること。その内容は問いません",
+ "reserved.none": "本当に値がないこと。エントリに値がありません",
+ "reserved.unreadable": "ツールがこのフィールドを読み取れなかったこと、または読み取っていないこと。services.msc には尋ねることすらできない質問です"
+}
diff --git a/site/i18n/ko.json b/site/i18n/ko.json
new file mode 100644
index 0000000..8bbb226
--- /dev/null
+++ b/site/i18n/ko.json
@@ -0,0 +1,95 @@
+{
+ "_translated_from": "1867e30d6665",
+ "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.",
+
+ "chrome.skip": "본문으로 건너뛰기",
+ "chrome.nav": "사이트",
+ "chrome.language": "언어",
+
+ "chrome.footer.product": "제품",
+ "chrome.footer.guides": "가이드",
+ "chrome.footer.project": "프로젝트",
+ "chrome.footer.source": "GitHub의 소스",
+ "chrome.footer.releases": "릴리스",
+ "chrome.footer.issues": "이슈 트래커",
+ "chrome.footer.security": "보안 문제 신고",
+ "chrome.footer.support": "프로젝트 후원",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. GNU General Public License 버전 3에 따라 배포됩니다. AI를 활용한 워크플로로 제작되었습니다.",
+ "chrome.legal.trademark": "{{product}}는 Microsoft와 제휴하거나 Microsoft의 승인 또는 후원을 받지 않았습니다. Windows는 Microsoft 그룹 회사의 상표이며, 이 이름은 도구가 무엇을 관리하는지 설명하기 위해서만 여기에 사용했습니다.",
+ "chrome.legal.privacy": "이 사이트는 쿠키를 설정하지 않고, 스크립트를 실행하지 않으며, 다른 어느 곳에서도 아무것도 불러오지 않습니다.",
+
+ "table.head.code": "코드",
+ "table.head.meaning": "의미",
+ "table.head.switch": "옵션",
+ "table.head.what": "하는 일",
+ "table.head.where": "동작하는 곳",
+ "table.head.field": "필드",
+ "table.head.asks": "묻는 내용",
+ "table.head.values": "값",
+
+ "exit.ok": "완료되었고, 모든 것이 가려던 곳에 도착했습니다.",
+ "exit.runtime": "도구가 실패했습니다. 계획이 아니라 도구 자체에 관한 이유로, 요청받은 일을 할 수 없었습니다.",
+ "exit.usage": "명령줄이 잘못되었습니다. 잘못 입력한 명령에는 의도했을 법한 명령이 제안됩니다.",
+ "exit.incomplete": "계획은 올바랐고 실행되었지만, 그 안의 무언가가 가려던 곳에 도착하지 못했습니다. 서비스 관리자가 거부했거나 세션에 그에 대한 권한이 없었습니다.",
+ "exit.interrupted": "누군가 실행을 직접 멈췄습니다. 모든 단계가 도착했더라도 0이 아니며, 래퍼가 중단된 실행을 정상으로 취급하지 않도록 하기 위함입니다.",
+ "exit.differences": "비교가 실행되어 구성이 드리프트했음을 발견했습니다. 항목이 추가되거나 제거되었거나, 하나가 다르게 설정되었습니다. 실행 상태만으로는 드리프트가 아닙니다. --exit-code를 줄 때만 해당하는데, 드리프트는 이 도구가 찾아내려고 있는 것이고 그것을 찾는 것은 실패가 아니기 때문입니다.",
+
+ "switch.query": "쿼리 언어로 목록을 좁힙니다.",
+ "switch.signatures": "각 실행 파일에 누가 서명했는지, Windows가 그것을 신뢰하는지 읽습니다. 컴퓨터 전체에서는 몇 초가 걸리므로 요청하지 않으면 꺼져 있으며, 서명에 대한 쿼리는 이를 스스로 켭니다.",
+ "switch.memory": "실행 중인 각 항목의 프로세스가 사용하는 것을 읽습니다. 설정이 아니라 측정값이어서 1초 뒤에는 달라지므로 기본값은 꺼짐입니다.",
+ "switch.required-by": "하나를 중지하면 망가지는 항목을 읽습니다. 모두가 선언한 내용에서 추론하지 않고 Windows에 직접 물어봅니다. 항목마다 호출이 한 번씩 필요하므로 요청하지 않으면 꺼져 있습니다. show와 snapshot create는 매번 이를 읽습니다.",
+ "switch.follow-network": "도구가 이 컴퓨터 밖으로 나가는 것을 허용합니다. 다른 사람의 공유에 있는 시작 경로와, 이 컴퓨터에 아직 없는 인증서입니다. 안전을 위해 기본값은 꺼짐입니다. 도달할 수 없는 공유 하나가 21초를 쓰고 실행한 사람으로 인증하며, 인증서를 가져오는 것은 일반적인 목록 한가운데에서 제3자에 연결하는 일이기 때문입니다. 이것이 없으면 서명은 여기에 있는 것을 기준으로 확인되고, 살펴보지 않아서 생겼을 수 있는 결과는 판정이 아니라 읽지 못한 것으로 보고됩니다.",
+ "switch.force": "kill에서는 정중하게 묻지 않고 프로세스를 바로 종료하며, 그러면 미리 보기가 두 단계 대신 한 단계를 보여 줍니다. snapshot create에서는 이미 있는 스냅샷을 바꿉니다. 스냅샷이 아닌 파일은 절대 바꾸지 않습니다.",
+ "switch.restart": "kill에서는 프로세스가 사라진 뒤, 그 프로세스를 공유하던 모든 것과 함께 항목을 되돌려 놓습니다.",
+ "switch.stop": "start-type에서, 그리고 disabled 옆에서만, 설정을 쓴 뒤 같은 계획 안에서 항목을 중지합니다. 시작 유형은 다음 부팅을 바꿀 뿐 지금은 아무것도 바꾸지 않으므로, 이것이 없으면 disabled로 설정된 실행 중인 항목은 계속 실행됩니다.",
+ "switch.full": "show에서는 정말로 비어 있는 필드도 출력합니다. 아무도 읽지 못한 필드는 어느 쪽이든 출력됩니다.",
+ "switch.components": "license에서는 알림을 이 실행 파일 안에 있는 모든 구성 요소의 버전, 라이선스, 출처로 바꿉니다. 다운로드 옆에 게시된 자재 명세서가 담은 것과 같은 집합이며, 둘 다 하나의 목록에서 만들어지기 때문입니다.",
+ "switch.json": "같은 문서를 기계가 읽을 수 있는 형태로 표준 출력에 냅니다.",
+ "switch.note": "스냅샷을 무엇을 위해 만들었는지를 파일 안에 보관합니다.",
+ "switch.exit-code": "구성이 다르면 코드 5로 끝납니다. 항목이 추가되거나 제거되었거나, 하나가 다르게 설정된 경우입니다. 실행 상태만으로는 세지 않습니다. 기본값은 꺼짐이며, 출력된 차이만 원하는 스크립트가 차이를 발견했다는 이유로 걸리지 않도록 하기 위해서입니다.",
+ "switch.live": "파일을 두 번째 파일이 아니라 지금 상태의 이 컴퓨터와 비교합니다.",
+ "switch.timing": "읽기의 각 부분이 얼마나 걸렸는지를 표준 오류에 냅니다.",
+ "switch.dry-run": "계획을 출력하고 아무것도 바꾸지 않습니다. 실제 실행이 수행하는 것과 같은 계획입니다. 실제 작업을 위한 두 번째 코드 경로는 없습니다.",
+ "switch.dependents": "망가질 서비스를 별도의 단계로 계획에 넣습니다.",
+ "switch.timeout": "한 단계가 진행 없이 포기되기 전까지 얼마나 길어질 수 있는지이며, 서비스가 진행을 보고할 때마다 다시 셉니다. 달리 지정하지 않으면 60초입니다. 진행을 계속 보고하는 서비스는 필요한 만큼 지켜봅니다. 시간 초과는 지켜보기의 끝이지 실패가 아니며, 보고서가 항목이 어디에 남겨졌는지 알려 줍니다.",
+
+ "field.name": "서비스 이름으로, Windows가 식별에 쓰는 것",
+ "field.display": "표시 이름으로, 이 Windows가 쓰는 표기",
+ "field.description": "항목이 자신에 대해 말하는 것",
+ "field.type": "어떤 종류의 항목인지",
+ "field.peruser": "Windows가 세션마다 복사본을 만드는 사용자별 계열 중 하나인지",
+ "field.status": "지금 무엇을 하고 있는지",
+ "field.start": "다음 부팅 때 서비스 관리자가 어떻게 다루는지",
+ "field.account": "실행되는 계정으로, 서비스 관리자가 쓰는 표기",
+ "field.pid": "실행 중인 프로세스",
+ "field.trigger": "시작하거나 중지시키는 조건",
+ "field.path": "서비스 관리자가 시작하는 명령줄",
+ "field.file": "실행하는 파일이 디스크에 있는지",
+ "field.signed": "해지 확인 없이, 파일의 서명에 대해 Windows가 판단하는 것",
+ "field.publisher": "파일에 서명한 주체로, 신뢰된 서명으로만 증명됨",
+ "field.privilege": "항목이 요청하는 권한",
+ "field.dependson": "이 항목이 필요로 하는 것",
+ "field.requiredby": "이 항목이 중지되면 망가지는 것",
+ "field.sidtype": "서비스 SID 유형",
+ "field.sddl": "텍스트로 표현한 보안 설명자",
+ "field.memory": "그 프로세스가 사용하는 것",
+ "field.mismatch": "서로 어긋나는 구성과 상태",
+
+ "field.open.name": "텍스트",
+ "field.open.display": "텍스트",
+ "field.open.description": "텍스트",
+ "field.open.account": "텍스트, 예: localsystem",
+ "field.open.pid": "숫자: 1234, >1000, 100-200",
+ "field.open.path": "텍스트",
+ "field.open.publisher": "텍스트",
+ "field.open.privilege": "텍스트, 예: SeDebugPrivilege",
+ "field.open.dependson": "서비스 이름",
+ "field.open.requiredby": "서비스 이름",
+ "field.open.sddl": "텍스트",
+ "field.open.memory": "단위가 붙은 크기: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "값이 있으며, 무엇이든 상관없음",
+ "reserved.none": "정말로 값이 없음, 항목에 값이 없음",
+ "reserved.unreadable": "도구가 이 필드를 읽지 못했거나 읽지 않았음, services.msc는 물을 수조차 없는 질문"
+}
diff --git a/site/i18n/nl.json b/site/i18n/nl.json
new file mode 100644
index 0000000..bb3f398
--- /dev/null
+++ b/site/i18n/nl.json
@@ -0,0 +1,95 @@
+{
+ "_translated_from": "1867e30d6665",
+ "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.",
+
+ "chrome.skip": "Naar de inhoud",
+ "chrome.nav": "Site",
+ "chrome.language": "Taal",
+
+ "chrome.footer.product": "Product",
+ "chrome.footer.guides": "Gidsen",
+ "chrome.footer.project": "Project",
+ "chrome.footer.source": "Broncode op GitHub",
+ "chrome.footer.releases": "Releases",
+ "chrome.footer.issues": "Issuetracker",
+ "chrome.footer.security": "Een beveiligingsprobleem melden",
+ "chrome.footer.support": "Het project steunen",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Uitgebracht onder de GNU General Public License, versie 3. Gebouwd met een door AI ondersteunde werkwijze.",
+ "chrome.legal.trademark": "{{product}} is niet gelieerd aan, goedgekeurd door of gesponsord door Microsoft. Windows is een handelsmerk van de Microsoft-groep van bedrijven, en de naam wordt hier alleen gebruikt om te zeggen wat het hulpmiddel beheert.",
+ "chrome.legal.privacy": "Deze site plaatst geen cookies, voert geen scripts uit en laadt niets van elders.",
+
+ "table.head.code": "Code",
+ "table.head.meaning": "Betekenis",
+ "table.head.switch": "Optie",
+ "table.head.what": "Wat het doet",
+ "table.head.where": "Waar het werkt",
+ "table.head.field": "Veld",
+ "table.head.asks": "Vraagt naar",
+ "table.head.values": "Waarden",
+
+ "exit.ok": "Klaar, en alles is aangekomen waar het heen moest.",
+ "exit.runtime": "Het hulpmiddel is mislukt - het kon niet doen wat werd gevraagd, om een reden die over het hulpmiddel gaat en niet over het plan.",
+ "exit.usage": "De opdrachtregel was fout. Bij een verkeerd getypte opdracht wordt degene aangeboden die u waarschijnlijk bedoelde.",
+ "exit.incomplete": "Het plan was goed, het is uitgevoerd, en iets erin is niet aangekomen waar het heen moest - de beheerder weigerde, of de sessie had er geen rechten op.",
+ "exit.interrupted": "Iemand heeft de uitvoering met de hand gestopt. Niet nul, ook als elke stap nog was aangekomen, zodat een wrapper een onderbroken uitvoering niet als schoon behandelt.",
+ "exit.differences": "Een vergelijking is uitgevoerd en vond dat de configuratie is afgedreven - een item toegevoegd of verwijderd, of een anders ingesteld item. Alleen de uitvoeringstoestand is geen drift. Alleen met --exit-code, omdat drift is wat dit hulpmiddel moet vinden, en het vinden ervan geen mislukking is.",
+
+ "switch.query": "Beperk de lijst met de querytaal.",
+ "switch.signatures": "Lees wie elk uitvoerbaar bestand heeft ondertekend en of Windows het vertrouwt. Enkele seconden over een hele machine, dus uit tenzij erom gevraagd wordt - en een query over handtekeningen zet het zelf aan.",
+ "switch.memory": "Lees wat het proces van elk draaiend item gebruikt. Standaard uit omdat het een meting is en geen instelling: een seconde later is het anders.",
+ "switch.required-by": "Lees welke items kapotgaan als er een wordt gestopt, rechtstreeks aan Windows gevraagd en niet afgeleid uit wat alles zelf aangeeft. Een aanroep per item, dus uit tenzij erom gevraagd wordt. show en snapshot create lezen het elke keer.",
+ "switch.follow-network": "Laat het hulpmiddel zich überhaupt buiten deze machine begeven - een opstartpad op de share van iemand anders, en een certificaat dat deze machine nog niet heeft. Standaard uit voor de veiligheid: één onbereikbare share kost eenentwintig seconden en authenticeert als wie het ook uitvoerde, en het ophalen van een certificaat is een verbinding met een derde partij midden in een gewone lijst. Zonder deze optie wordt een handtekening gecontroleerd tegen wat hier is, en een resultaat dat door niet kijken veroorzaakt kan zijn, wordt gemeld als ongelezen en niet als oordeel.",
+ "switch.force": "Bij kill: beëindig het proces meteen zonder beleefd te vragen - de voorvertoning toont dan één stap in plaats van twee. Bij snapshot create: vervang een momentopname die er al is - een bestand dat geen momentopname is wordt nooit vervangen.",
+ "switch.restart": "Bij kill: breng het item terug zodra het proces weg is, samen met alles wat het deelde.",
+ "switch.stop": "Bij start-type, en alleen naast disabled: stop het item in hetzelfde plan zodra de instelling is geschreven. Een opstarttype verandert de volgende opstart en niets nu, dus zonder deze optie blijft een draaiend item dat op disabled is gezet gewoon draaien.",
+ "switch.full": "Bij show: druk ook de velden af die echt leeg zijn. Een veld dat niemand kon lezen wordt hoe dan ook afgedrukt.",
+ "switch.components": "Bij license: verander de mededeling in elk onderdeel in dit uitvoerbare bestand met zijn versie, zijn licentie en waar het vandaan kwam. Dezelfde set die de materiaallijst naast de download bevat, omdat beide uit één register worden gemaakt.",
+ "switch.json": "Hetzelfde document, machineleesbaar, op de standaarduitvoer.",
+ "switch.note": "Waarvoor de momentopname is gemaakt, bewaard in het bestand.",
+ "switch.exit-code": "Eindig met code 5 wanneer de configuratie verschilt - een item toegevoegd of verwijderd, of een anders ingesteld item. Alleen de uitvoeringstoestand telt niet. Standaard uit, zodat een script dat alleen de verschillen afgedrukt wil hebben niet struikelt over het vinden ervan.",
+ "switch.live": "Vergelijk het bestand met deze machine zoals ze nu is, in plaats van met een tweede bestand.",
+ "switch.timing": "Hoe lang elk deel van het lezen duurde, op de standaardfout.",
+ "switch.dry-run": "Druk het plan af en wijzig niets. Het is hetzelfde plan dat een uitvoering draait - er is geen tweede codepad voor de echte uitvoering.",
+ "switch.dependents": "Zet de services die zouden kapotgaan als aparte stappen in het plan.",
+ "switch.timeout": "Hoe lang één stap zonder voortgang mag gaan voordat ze wordt opgegeven, opnieuw geteld telkens als de service voortgang meldt. Zestig seconden tenzij u iets anders zegt. Een service die voortgang blijft melden wordt zo lang bewaakt als nodig is. Opraken is het einde van het kijken en geen mislukking, en het rapport zegt waar het item is achtergelaten.",
+
+ "field.name": "de servicenaam, waaraan Windows hem herkent",
+ "field.display": "de weergavenaam, zoals dit Windows hem spelt",
+ "field.description": "wat het item over zichzelf zegt",
+ "field.type": "wat voor soort item het is",
+ "field.peruser": "of het een van de families per gebruiker is waarvan Windows per sessie een kopie maakt",
+ "field.status": "wat het nu doet",
+ "field.start": "wat de beheerder bij de volgende opstart met het doet",
+ "field.account": "het account waaronder het draait, zoals de beheerder het spelt",
+ "field.pid": "het proces waarin het draait",
+ "field.trigger": "een voorwaarde die het start of stopt",
+ "field.path": "de opdrachtregel die de beheerder start",
+ "field.file": "of het bestand dat het uitvoert op schijf staat",
+ "field.signed": "wat Windows van de handtekening van het bestand vindt, zonder intrekking te controleren",
+ "field.publisher": "wie het bestand heeft ondertekend - alleen bewezen door een vertrouwde handtekening",
+ "field.privilege": "een bevoegdheid die het item aanvraagt",
+ "field.dependson": "wat dit nodig heeft",
+ "field.requiredby": "wat kapotgaat als dit stopt",
+ "field.sidtype": "het SID-type van de service",
+ "field.sddl": "de beveiligingsdescriptor, als tekst",
+ "field.memory": "wat het proces gebruikt",
+ "field.mismatch": "configuratie en toestand die het oneens zijn",
+
+ "field.open.name": "tekst",
+ "field.open.display": "tekst",
+ "field.open.description": "tekst",
+ "field.open.account": "tekst, bijv. localsystem",
+ "field.open.pid": "een getal: 1234, >1000, 100-200",
+ "field.open.path": "tekst",
+ "field.open.publisher": "tekst",
+ "field.open.privilege": "tekst, bijv. SeDebugPrivilege",
+ "field.open.dependson": "een servicenaam",
+ "field.open.requiredby": "een servicenaam",
+ "field.open.sddl": "tekst",
+ "field.open.memory": "een grootte met een eenheid: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "er is een waarde, welke het ook is",
+ "reserved.none": "er is echt geen waarde - het item heeft er geen",
+ "reserved.unreadable": "het hulpmiddel kon dit veld niet lezen, of heeft het niet gelezen, wat een vraag is die services.msc niet eens kan stellen"
+}
diff --git a/site/i18n/ro.json b/site/i18n/ro.json
new file mode 100644
index 0000000..1949900
--- /dev/null
+++ b/site/i18n/ro.json
@@ -0,0 +1,95 @@
+{
+ "_translated_from": "1867e30d6665",
+ "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.",
+
+ "chrome.skip": "Salt la conținut",
+ "chrome.nav": "Site",
+ "chrome.language": "Limba",
+
+ "chrome.footer.product": "Produs",
+ "chrome.footer.guides": "Ghiduri",
+ "chrome.footer.project": "Proiect",
+ "chrome.footer.source": "Cod sursă pe GitHub",
+ "chrome.footer.releases": "Versiuni",
+ "chrome.footer.issues": "Urmăritor de probleme",
+ "chrome.footer.security": "Raportarea unei probleme de securitate",
+ "chrome.footer.support": "Susțineți proiectul",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Publicat sub licența GNU General Public License, versiunea 3. Realizat cu un flux de lucru asistat de IA.",
+ "chrome.legal.trademark": "{{product}} nu este afiliat, aprobat sau sponsorizat de Microsoft. Windows este o marcă comercială a grupului de companii Microsoft, iar numele este folosit aici doar pentru a spune ce administrează instrumentul.",
+ "chrome.legal.privacy": "Acest site nu setează cookie-uri, nu rulează scripturi și nu încarcă nimic de altundeva.",
+
+ "table.head.code": "Cod",
+ "table.head.meaning": "Semnificație",
+ "table.head.switch": "Opțiune",
+ "table.head.what": "Ce face",
+ "table.head.where": "Unde funcționează",
+ "table.head.field": "Câmp",
+ "table.head.asks": "Întreabă despre",
+ "table.head.values": "Valori",
+
+ "exit.ok": "Terminat și totul a ajuns unde trebuia.",
+ "exit.runtime": "Instrumentul a eșuat - nu a putut face ce i s-a cerut, dintr-un motiv care ține de instrument și nu de plan.",
+ "exit.usage": "Linia de comandă era greșită. O comandă scrisă greșit primește oferta celei pe care probabil ați vrut-o.",
+ "exit.incomplete": "Planul era bun, a rulat și ceva din el nu a ajuns unde trebuia - managerul a refuzat sau sesiunea nu avea drepturi asupra lui.",
+ "exit.interrupted": "Cineva a oprit rularea cu mâna. Diferit de zero chiar dacă fiecare pas a ajuns, ca un script învelitor să nu trateze o rulare întreruptă drept curată.",
+ "exit.differences": "O comparație a rulat și a constatat că configurația a derivat - o intrare adăugată sau eliminată ori una configurată altfel. Starea de rulare singură nu este derivă. Doar cu --exit-code, pentru că deriva este ceea ce acest instrument există să găsească, iar găsirea ei nu este un eșec.",
+
+ "switch.query": "Restrânge lista cu limbajul de interogare.",
+ "switch.signatures": "Citește cine a semnat fiecare executabil și dacă Windows are încredere în el. Câteva secunde pe o mașină întreagă, deci este dezactivat dacă nu se cere - iar o interogare despre semnături îl pornește singură.",
+ "switch.memory": "Citește ce folosește procesul fiecărei intrări care rulează. Dezactivat implicit pentru că este o măsurătoare și nu o setare: o secundă mai târziu este altceva.",
+ "switch.required-by": "Citește care intrări se defectează dacă una este oprită, întrebat direct Windows și nu dedus din ce declară toate. Un apel pe intrare, deci dezactivat dacă nu se cere. show și snapshot create îl citesc de fiecare dată.",
+ "switch.follow-network": "Lasă instrumentul să iasă deloc în afara acestei mașini - o cale de lansare aflată pe share-ul altcuiva și un certificat pe care această mașină nu îl are deja. Dezactivat implicit pentru siguranță: un share inaccesibil costă douăzeci și una de secunde și se autentifică drept cel care a rulat instrumentul, iar preluarea unui certificat este o conexiune cu o terță parte în mijlocul unei liste obișnuite. Fără el, o semnătură este verificată față de ce este aici, iar un rezultat care ar fi putut fi cauzat de faptul că nu s-a căutat este raportat ca necitit și nu ca verdict.",
+ "switch.force": "La kill, încheie procesul imediat fără a cere politicos - previzualizarea arată atunci un pas în loc de doi. La snapshot create, înlocuiește un instantaneu care există deja - un fișier care nu este instantaneu nu este înlocuit niciodată.",
+ "switch.restart": "La kill, readuce intrarea după ce procesul a dispărut, împreună cu tot ce l-a împărțit.",
+ "switch.stop": "La start-type, și doar alături de disabled, oprește intrarea în același plan după ce setarea este scrisă. Un tip de pornire schimbă următoarea pornire și nimic acum, deci fără el o intrare care rulează, setată pe disabled, continuă să ruleze.",
+ "switch.full": "La show, tipărește și câmpurile care sunt cu adevărat goale. Un câmp pe care nimeni nu l-a putut citi este tipărit oricum.",
+ "switch.components": "La license, transformă mențiunea în fiecare componentă din acest executabil cu versiunea, licența și proveniența ei. Același set pe care îl poartă lista de materiale publicată lângă descărcare, pentru că ambele sunt generate dintr-un singur registru.",
+ "switch.json": "Același document, citibil de mașină, la ieșirea standard.",
+ "switch.note": "Pentru ce a fost făcut instantaneul, păstrat în interiorul fișierului.",
+ "switch.exit-code": "Se încheie cu codul 5 când configurația diferă - o intrare adăugată sau eliminată ori una configurată altfel. Starea de rulare singură nu contează. Dezactivat implicit, ca un script care vrea doar diferențele tipărite să nu fie dat peste cap de faptul că a găsit unele.",
+ "switch.live": "Compară fișierul cu această mașină așa cum este acum, nu cu un al doilea fișier.",
+ "switch.timing": "Cât a durat fiecare parte a citirii, la eroarea standard.",
+ "switch.dry-run": "Tipărește planul și nu schimbă nimic. Este același plan pe care îl rulează o execuție - nu există o a doua cale de cod pentru execuția reală.",
+ "switch.dependents": "Pune în plan, ca pași de sine stătători, serviciile care s-ar defecta.",
+ "switch.timeout": "Cât timp poate merge un pas fără progres înainte de a fi abandonat, numărat din nou de fiecare dată când serviciul raportează progres. Șaizeci de secunde dacă nu spuneți altfel. Un serviciu care continuă să raporteze progres este urmărit cât este nevoie. Expirarea este sfârșitul urmăririi, nu un eșec, iar raportul spune unde a fost lăsată intrarea.",
+
+ "field.name": "numele serviciului, cel după care îl identifică Windows",
+ "field.display": "numele afișat, așa cum îl scrie acest Windows",
+ "field.description": "ce spune intrarea despre sine",
+ "field.type": "ce fel de intrare este",
+ "field.peruser": "dacă este una dintre familiile pe utilizator pe care Windows le copiază pentru fiecare sesiune",
+ "field.status": "ce face chiar acum",
+ "field.start": "ce face managerul cu ea la următoarea pornire",
+ "field.account": "contul sub care rulează, așa cum îl scrie managerul",
+ "field.pid": "procesul în care rulează",
+ "field.trigger": "o condiție care o pornește sau o oprește",
+ "field.path": "linia de comandă pe care o lansează managerul",
+ "field.file": "dacă fișierul pe care îl execută se află pe disc",
+ "field.signed": "ce crede Windows despre semnătura fișierului, fără a verifica revocarea",
+ "field.publisher": "cine a semnat fișierul - dovedit doar de o semnătură de încredere",
+ "field.privilege": "un privilegiu pe care îl cere intrarea",
+ "field.dependson": "de ce are nevoie aceasta",
+ "field.requiredby": "ce se defectează dacă aceasta se oprește",
+ "field.sidtype": "tipul SID al serviciului",
+ "field.sddl": "descriptorul de securitate, ca text",
+ "field.memory": "ce folosește procesul ei",
+ "field.mismatch": "configurație și stare care nu concordă",
+
+ "field.open.name": "text",
+ "field.open.display": "text",
+ "field.open.description": "text",
+ "field.open.account": "text, de ex. localsystem",
+ "field.open.pid": "un număr: 1234, >1000, 100-200",
+ "field.open.path": "text",
+ "field.open.publisher": "text",
+ "field.open.privilege": "text, de ex. SeDebugPrivilege",
+ "field.open.dependson": "un nume de serviciu",
+ "field.open.requiredby": "un nume de serviciu",
+ "field.open.sddl": "text",
+ "field.open.memory": "o dimensiune cu unitate: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "există o valoare, oricare ar fi",
+ "reserved.none": "chiar nu există nicio valoare - intrarea nu are una",
+ "reserved.unreadable": "instrumentul n-a putut citi acest câmp sau nu l-a citit, ceea ce este o întrebare pe care services.msc nici măcar nu o poate pune"
+}
diff --git a/site/i18n/ru.json b/site/i18n/ru.json
new file mode 100644
index 0000000..857112b
--- /dev/null
+++ b/site/i18n/ru.json
@@ -0,0 +1,95 @@
+{
+ "_translated_from": "1867e30d6665",
+ "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.",
+
+ "chrome.skip": "Перейти к содержимому",
+ "chrome.nav": "Сайт",
+ "chrome.language": "Язык",
+
+ "chrome.footer.product": "Продукт",
+ "chrome.footer.guides": "Руководства",
+ "chrome.footer.project": "Проект",
+ "chrome.footer.source": "Исходный код на GitHub",
+ "chrome.footer.releases": "Выпуски",
+ "chrome.footer.issues": "Трекер задач",
+ "chrome.footer.security": "Сообщить о проблеме безопасности",
+ "chrome.footer.support": "Поддержать проект",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Распространяется по лицензии GNU General Public License версии 3. Создан с применением процесса, использующего ИИ.",
+ "chrome.legal.trademark": "{{product}} не связан с Microsoft, не одобрен и не спонсируется Microsoft. Windows - товарный знак группы компаний Microsoft, и это название используется здесь лишь для того, чтобы сказать, чем управляет инструмент.",
+ "chrome.legal.privacy": "Этот сайт не устанавливает cookie, не запускает скрипты и ничего не загружает из других мест.",
+
+ "table.head.code": "Код",
+ "table.head.meaning": "Значение",
+ "table.head.switch": "Параметр",
+ "table.head.what": "Что делает",
+ "table.head.where": "Где работает",
+ "table.head.field": "Поле",
+ "table.head.asks": "О чём спрашивает",
+ "table.head.values": "Значения",
+
+ "exit.ok": "Готово, и всё дошло, куда шло.",
+ "exit.runtime": "Инструмент дал сбой: он не смог сделать то, о чём его просили, по причине, которая относится к самому инструменту, а не к плану.",
+ "exit.usage": "Командная строка была неверной. При опечатке в команде предлагается та, которую вы, вероятно, имели в виду.",
+ "exit.incomplete": "План был хорош, он выполнился, и что-то в нём не дошло, куда шло: диспетчер отказал или у сеанса не было прав на это.",
+ "exit.interrupted": "Кто-то остановил выполнение вручную. Не ноль, даже если каждый шаг всё же дошёл, чтобы обёртка не считала прерванное выполнение чистым.",
+ "exit.differences": "Сравнение выполнилось и обнаружило, что конфигурация ушла в дрейф: запись добавлена или удалена, или одна настроена иначе. Одно состояние выполнения дрейфом не является. Только с --exit-code, потому что дрейф - это то, что этот инструмент создан находить, а его нахождение не является отказом.",
+
+ "switch.query": "Сужает список с помощью языка запросов.",
+ "switch.signatures": "Читает, кто подписал каждый исполняемый файл и доверяет ли ему Windows. На всей машине занимает несколько секунд, поэтому выключено, пока не попросят, - а запрос о подписях включает это само.",
+ "switch.memory": "Читает, что использует процесс каждой работающей записи. По умолчанию выключено, потому что это измерение, а не настройка: секунду спустя оно уже другое.",
+ "switch.required-by": "Читает, какие записи сломаются, если остановить одну, спрашивая напрямую у Windows, а не выводя из того, что все объявляют. Один вызов на запись, поэтому выключено, пока не попросят. show и snapshot create читают это каждый раз.",
+ "switch.follow-network": "Позволяет инструменту вообще выходить за пределы этой машины: путь запуска, лежащий на чужом общем ресурсе, и сертификат, которого на этой машине ещё нет. По умолчанию выключено ради безопасности: один недоступный общий ресурс стоит двадцати одной секунды и аутентифицируется как тот, кто запустил, а получение сертификата - это соединение с третьей стороной посреди обычного списка. Без этого параметра подпись проверяется по тому, что есть здесь, а результат, который мог быть вызван тем, что не смотрели, сообщается как непрочитанный, а не как вердикт.",
+ "switch.force": "У kill завершает процесс сразу, не прося вежливо: предпросмотр тогда показывает один шаг вместо двух. У snapshot create заменяет уже существующий снимок: файл, не являющийся снимком, не заменяется никогда.",
+ "switch.restart": "У kill возвращает запись, когда процесса уже нет, вместе со всем, что делило его.",
+ "switch.stop": "У start-type и только вместе с disabled останавливает запись в том же плане после записи настройки. Тип запуска меняет следующую загрузку и ничего сейчас, поэтому без него работающая запись, переведённая в disabled, продолжает работать.",
+ "switch.full": "У show печатает и поля, которые действительно пусты. Поле, которое никто не смог прочитать, печатается в любом случае.",
+ "switch.components": "У license превращает уведомление в каждый компонент внутри этого исполняемого файла с его версией, лицензией и происхождением. Тот же набор, что несёт опубликованная рядом с загрузкой ведомость материалов, потому что обе строятся из одного реестра.",
+ "switch.json": "Тот же документ, машиночитаемый, в стандартном выводе.",
+ "switch.note": "Для чего был сделан снимок, хранится внутри файла.",
+ "switch.exit-code": "Завершается кодом 5, когда конфигурация отличается: запись добавлена или удалена, или одна настроена иначе. Одно состояние выполнения не считается. По умолчанию выключено, чтобы скрипт, которому нужны лишь напечатанные различия, не спотыкался о то, что он их нашёл.",
+ "switch.live": "Сравнивает файл с этой машиной в её текущем виде, а не со вторым файлом.",
+ "switch.timing": "Сколько занимала каждая часть чтения, в стандартном потоке ошибок.",
+ "switch.dry-run": "Печатает план и ничего не меняет. Это тот же план, который выполняет настоящий запуск: второго пути в коде для настоящего выполнения нет.",
+ "switch.dependents": "Включает в план службы, которые сломались бы, как отдельные шаги.",
+ "switch.timeout": "Сколько один шаг может идти без прогресса, прежде чем от него откажутся, отсчёт начинается заново каждый раз, когда служба сообщает о прогрессе. Шестьдесят секунд, если не скажете иначе. За службой, которая продолжает сообщать о прогрессе, наблюдают столько, сколько нужно. Истечение времени - это конец наблюдения, а не отказ, и отчёт говорит, где запись была оставлена.",
+
+ "field.name": "имя службы, по которому её опознаёт Windows",
+ "field.display": "отображаемое имя, как его пишет эта Windows",
+ "field.description": "что запись говорит о себе",
+ "field.type": "что это за запись",
+ "field.peruser": "входит ли она в одно из семейств для каждого пользователя, копию которых Windows создаёт на каждый сеанс",
+ "field.status": "что она делает прямо сейчас",
+ "field.start": "что диспетчер делает с ней при следующей загрузке",
+ "field.account": "учётная запись, под которой она работает, как её пишет диспетчер",
+ "field.pid": "процесс, в котором она работает",
+ "field.trigger": "условие, которое запускает или останавливает её",
+ "field.path": "командная строка, которую запускает диспетчер",
+ "field.file": "есть ли файл, который она запускает, на диске",
+ "field.signed": "что Windows думает о подписи файла, без проверки отзыва",
+ "field.publisher": "кто подписал файл - подтверждено только доверенной подписью",
+ "field.privilege": "привилегия, которую запрашивает запись",
+ "field.dependson": "что нужно этой записи",
+ "field.requiredby": "что сломается, если эта остановится",
+ "field.sidtype": "тип SID службы",
+ "field.sddl": "дескриптор безопасности в виде текста",
+ "field.memory": "что использует её процесс",
+ "field.mismatch": "конфигурация и состояние, которые расходятся",
+
+ "field.open.name": "текст",
+ "field.open.display": "текст",
+ "field.open.description": "текст",
+ "field.open.account": "текст, напр. localsystem",
+ "field.open.pid": "число: 1234, >1000, 100-200",
+ "field.open.path": "текст",
+ "field.open.publisher": "текст",
+ "field.open.privilege": "текст, напр. SeDebugPrivilege",
+ "field.open.dependson": "имя службы",
+ "field.open.requiredby": "имя службы",
+ "field.open.sddl": "текст",
+ "field.open.memory": "размер с единицей измерения: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "значение есть, какое бы оно ни было",
+ "reserved.none": "значения действительно нет - у записи его нет",
+ "reserved.unreadable": "инструмент не смог прочитать это поле или не читал его, а это вопрос, который services.msc даже не может задать"
+}
diff --git a/site/i18n/tr.json b/site/i18n/tr.json
new file mode 100644
index 0000000..7d22977
--- /dev/null
+++ b/site/i18n/tr.json
@@ -0,0 +1,95 @@
+{
+ "_translated_from": "1867e30d6665",
+ "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.",
+
+ "chrome.skip": "İçeriğe geç",
+ "chrome.nav": "Site",
+ "chrome.language": "Dil",
+
+ "chrome.footer.product": "Ürün",
+ "chrome.footer.guides": "Kılavuzlar",
+ "chrome.footer.project": "Proje",
+ "chrome.footer.source": "GitHub'da kaynak kod",
+ "chrome.footer.releases": "Sürümler",
+ "chrome.footer.issues": "Sorun izleyici",
+ "chrome.footer.security": "Bir güvenlik sorununu bildirme",
+ "chrome.footer.support": "Projeyi destekleyin",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. GNU Genel Kamu Lisansı sürüm 3 altında yayımlanmıştır. Yapay zeka destekli bir iş akışıyla geliştirilmiştir.",
+ "chrome.legal.trademark": "{{product}}, Microsoft ile bağlantılı değildir, Microsoft tarafından onaylanmamış ya da desteklenmemiştir. Windows, Microsoft şirketler grubunun bir ticari markasıdır ve ad burada yalnızca aracın neyi yönettiğini söylemek için kullanılır.",
+ "chrome.legal.privacy": "Bu site çerez ayarlamaz, betik çalıştırmaz ve başka hiçbir yerden bir şey yüklemez.",
+
+ "table.head.code": "Kod",
+ "table.head.meaning": "Anlamı",
+ "table.head.switch": "Seçenek",
+ "table.head.what": "Ne yapar",
+ "table.head.where": "Nerede çalışır",
+ "table.head.field": "Alan",
+ "table.head.asks": "Neyi sorar",
+ "table.head.values": "Değerler",
+
+ "exit.ok": "Bitti ve her şey gideceği yere ulaştı.",
+ "exit.runtime": "Araç başarısız oldu - istenen şeyi yapamadı; nedeni plan değil, aracın kendisiyle ilgili.",
+ "exit.usage": "Komut satırı yanlıştı. Yanlış yazılmış bir komuta, büyük olasılıkla kastettiğiniz komut önerilir.",
+ "exit.incomplete": "Plan iyiydi, çalıştı ve içindeki bir şey gideceği yere ulaşmadı - yönetici reddetti ya da oturumun ona hakkı yoktu.",
+ "exit.interrupted": "Biri çalıştırmayı elle durdurdu. Her adım yine de ulaşmış olsa bile sıfır değildir; böylece bir sarmalayıcı yarıda kesilmiş bir çalıştırmayı temiz saymaz.",
+ "exit.differences": "Bir karşılaştırma çalıştı ve yapılandırmanın saptığını buldu - eklenmiş ya da kaldırılmış bir öğe veya farklı kurulmuş biri. Çalışma durumu tek başına sapma değildir. Yalnızca --exit-code ile, çünkü sapma bu aracın bulmak için var olduğu şeydir ve onu bulmak bir başarısızlık değildir.",
+
+ "switch.query": "Listeyi sorgu diliyle daraltır.",
+ "switch.signatures": "Her yürütülebilir dosyayı kimin imzaladığını ve Windows'un ona güvenip güvenmediğini okur. Tüm makinede birkaç saniye sürer, bu yüzden istenmedikçe kapalıdır - ve imzalarla ilgili bir sorgu onu kendiliğinden açar.",
+ "switch.memory": "Çalışan her öğenin işleminin ne kullandığını okur. Bir ayar değil bir ölçüm olduğu için varsayılan olarak kapalıdır: bir saniye sonra farklıdır.",
+ "switch.required-by": "Biri durdurulursa hangi öğelerin bozulacağını okur; her şeyin kendi bildirdiğinden çıkarılmaz, doğrudan Windows'a sorulur. Öğe başına bir çağrı olduğundan istenmedikçe kapalıdır. show ve snapshot create bunu her seferinde okur.",
+ "switch.follow-network": "Aracın bu makinenin dışına hiç uzanmasına izin verir - başkasının paylaşımında duran bir başlatma yolu ve bu makinede henüz olmayan bir sertifika. Güvenlik için varsayılan olarak kapalıdır: ulaşılamayan tek bir paylaşım yirmi bir saniyeye mal olur ve çalıştıran kişi olarak kimlik doğrular; sertifika getirmek de sıradan bir listenin ortasında üçüncü bir tarafa bağlantıdır. Bu olmadan bir imza burada olana göre denetlenir ve bakılmamasından kaynaklanmış olabilecek bir sonuç, hüküm olarak değil okunmadı olarak bildirilir.",
+ "switch.force": "kill üzerinde, nazikçe sormadan süreci hemen sonlandırır - önizleme o zaman iki yerine bir adım gösterir. snapshot create üzerinde, zaten var olan bir anlık görüntünün yerine yazar - anlık görüntü olmayan bir dosyanın yerine asla yazılmaz.",
+ "switch.restart": "kill üzerinde, süreç gittikten sonra öğeyi, onunla paylaşılan her şeyle birlikte geri getirir.",
+ "switch.stop": "start-type üzerinde ve yalnızca disabled ile birlikte, ayar yazıldıktan sonra öğeyi aynı planda durdurur. Başlangıç türü bir sonraki açılışı değiştirir, şimdiyi değil; bu yüzden onsuz, disabled yapılmış çalışan bir öğe çalışmaya devam eder.",
+ "switch.full": "show üzerinde, gerçekten boş olan alanları da yazdırır. Kimsenin okuyamadığı bir alan her durumda yazdırılır.",
+ "switch.components": "license üzerinde, bildirimi bu yürütülebilir dosyanın içindeki her bileşene, sürümüyle, lisansıyla ve nereden geldiğiyle açar. İndirmenin yanında yayımlanan malzeme listesinin taşıdığı aynı küme, çünkü ikisi de tek bir kayıttan üretilir.",
+ "switch.json": "Aynı belge, makine tarafından okunabilir, standart çıktıda.",
+ "switch.note": "Anlık görüntünün ne için alındığı, dosyanın içinde saklanır.",
+ "switch.exit-code": "Yapılandırma farklı olduğunda 5 koduyla biter - eklenmiş ya da kaldırılmış bir öğe veya farklı kurulmuş biri. Yalnızca çalışma durumu sayılmaz. Varsayılan olarak kapalıdır; böylece yalnızca farklılıkların yazdırılmasını isteyen bir betik, bazılarını bulduğu için takılmaz.",
+ "switch.live": "Dosyayı ikinci bir dosyayla değil, bu makineyle şu anki haliyle karşılaştırır.",
+ "switch.timing": "Okumanın her bölümünün ne kadar sürdüğü, standart hatada.",
+ "switch.dry-run": "Planı yazdırır ve hiçbir şeyi değiştirmez. Bir çalıştırmanın yürüttüğü aynı plandır - gerçek çalıştırma için ikinci bir kod yolu yoktur.",
+ "switch.dependents": "Bozulacak hizmetleri plana kendi başlarına birer adım olarak koyar.",
+ "switch.timeout": "Bir adımın ilerleme olmadan vazgeçilmeden önce ne kadar gidebileceği; hizmet her ilerleme bildirdiğinde yeniden sayılır. Aksini söylemezseniz altmış saniye. İlerleme bildirmeye devam eden bir hizmet gerektiği kadar izlenir. Süre dolması izlemenin sonudur, bir başarısızlık değil; rapor öğenin nerede bırakıldığını söyler.",
+
+ "field.name": "hizmet adı, Windows'un onu tanıdığı ad",
+ "field.display": "görünen ad, bu Windows'un yazdığı şekilde",
+ "field.description": "öğenin kendisi hakkında söyledikleri",
+ "field.type": "ne tür bir öğe olduğu",
+ "field.peruser": "Windows'un oturum başına kopyasını oluşturduğu kullanıcı başına ailelerden biri olup olmadığı",
+ "field.status": "şu anda ne yaptığı",
+ "field.start": "yöneticinin bir sonraki açılışta onunla ne yaptığı",
+ "field.account": "çalıştığı hesap, yöneticinin yazdığı şekilde",
+ "field.pid": "içinde çalıştığı işlem",
+ "field.trigger": "onu başlatan ya da durduran bir koşul",
+ "field.path": "yöneticinin başlattığı komut satırı",
+ "field.file": "çalıştırdığı dosyanın diskte olup olmadığı",
+ "field.signed": "Windows'un dosyanın imzası hakkında düşündüğü, iptal denetlenmeden",
+ "field.publisher": "dosyayı kimin imzaladığı - yalnızca güvenilir bir imzayla kanıtlanır",
+ "field.privilege": "öğenin istediği bir ayrıcalık",
+ "field.dependson": "bunun neye ihtiyacı olduğu",
+ "field.requiredby": "bu durursa neyin bozulduğu",
+ "field.sidtype": "hizmet SID türü",
+ "field.sddl": "güvenlik tanımlayıcısı, metin olarak",
+ "field.memory": "işleminin ne kullandığı",
+ "field.mismatch": "birbiriyle uyuşmayan yapılandırma ve durum",
+
+ "field.open.name": "metin",
+ "field.open.display": "metin",
+ "field.open.description": "metin",
+ "field.open.account": "metin, ör. localsystem",
+ "field.open.pid": "bir sayı: 1234, >1000, 100-200",
+ "field.open.path": "metin",
+ "field.open.publisher": "metin",
+ "field.open.privilege": "metin, ör. SeDebugPrivilege",
+ "field.open.dependson": "bir hizmet adı",
+ "field.open.requiredby": "bir hizmet adı",
+ "field.open.sddl": "metin",
+ "field.open.memory": "birimli bir boyut: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "bir değer var, ne olursa olsun",
+ "reserved.none": "gerçekten hiç değer yok - öğenin değeri yok",
+ "reserved.unreadable": "araç bu alanı okuyamadı ya da okumadı; bu, services.msc'nin soramayacağı bir sorudur"
+}
diff --git a/site/i18n/uk.json b/site/i18n/uk.json
new file mode 100644
index 0000000..a4b8bfb
--- /dev/null
+++ b/site/i18n/uk.json
@@ -0,0 +1,95 @@
+{
+ "_translated_from": "1867e30d6665",
+ "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.",
+
+ "chrome.skip": "Перейти до вмісту",
+ "chrome.nav": "Сайт",
+ "chrome.language": "Мова",
+
+ "chrome.footer.product": "Продукт",
+ "chrome.footer.guides": "Посібники",
+ "chrome.footer.project": "Проєкт",
+ "chrome.footer.source": "Вихідний код на GitHub",
+ "chrome.footer.releases": "Випуски",
+ "chrome.footer.issues": "Трекер задач",
+ "chrome.footer.security": "Повідомити про проблему безпеки",
+ "chrome.footer.support": "Підтримати проєкт",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Розповсюджується за ліцензією GNU General Public License версії 3. Створено із застосуванням процесу, що використовує ШІ.",
+ "chrome.legal.trademark": "{{product}} не пов'язаний із Microsoft, не схвалений і не спонсорований Microsoft. Windows - товарний знак групи компаній Microsoft, і ця назва використовується тут лише для того, щоб сказати, чим керує інструмент.",
+ "chrome.legal.privacy": "Цей сайт не встановлює cookie, не запускає скрипти й нічого не завантажує з інших місць.",
+
+ "table.head.code": "Код",
+ "table.head.meaning": "Що означає",
+ "table.head.switch": "Параметр",
+ "table.head.what": "Що робить",
+ "table.head.where": "Де працює",
+ "table.head.field": "Поле",
+ "table.head.asks": "Про що питає",
+ "table.head.values": "Значення",
+
+ "exit.ok": "Готово, і все дійшло, куди йшло.",
+ "exit.runtime": "Інструмент дав збій: він не зміг зробити те, про що його просили, через причину, що стосується самого інструмента, а не плану.",
+ "exit.usage": "Командний рядок був неправильним. Для помилково набраної команди пропонується та, яку ви, імовірно, мали на увазі.",
+ "exit.incomplete": "План був добрий, він виконався, і щось у ньому не дійшло, куди йшло: диспетчер відмовив або сеанс не мав на це прав.",
+ "exit.interrupted": "Хтось зупинив виконання вручну. Не нуль, навіть якщо кожен крок усе ж дійшов, щоб обгортка не вважала перерване виконання чистим.",
+ "exit.differences": "Порівняння виконалося й виявило, що конфігурація пішла в дрейф: запис додано чи видалено, або один налаштовано інакше. Один лише стан виконання дрейфом не є. Лише з --exit-code, бо дрейф - це те, що цей інструмент створено знаходити, а його знаходження не є збоєм.",
+
+ "switch.query": "Звужує список за допомогою мови запитів.",
+ "switch.signatures": "Читає, хто підписав кожен виконуваний файл і чи довіряє йому Windows. На всій машині займає кілька секунд, тому вимкнено, доки не попросять, - а запит про підписи вмикає це сам.",
+ "switch.memory": "Читає, що використовує процес кожного працюючого запису. За замовчуванням вимкнено, бо це вимірювання, а не налаштування: секундою пізніше воно вже інше.",
+ "switch.required-by": "Читає, які записи зламаються, якщо зупинити один, питаючи безпосередньо в Windows, а не виводячи з того, що всі декларують. Один виклик на запис, тому вимкнено, доки не попросять. show і snapshot create читають це щоразу.",
+ "switch.follow-network": "Дозволяє інструменту взагалі виходити за межі цієї машини: шлях запуску, що лежить на чужому спільному ресурсі, і сертифікат, якого ця машина ще не має. За замовчуванням вимкнено задля безпеки: один недоступний спільний ресурс коштує двадцяти однієї секунди й автентифікується як той, хто запустив, а отримання сертифіката - це з'єднання з третьою стороною посеред звичайного списку. Без цього параметра підпис перевіряється за тим, що є тут, а результат, який міг бути спричинений тим, що не дивилися, повідомляється як непрочитаний, а не як вердикт.",
+ "switch.force": "У kill завершує процес одразу, не просячи чемно: попередній перегляд тоді показує один крок замість двох. У snapshot create замінює знімок, який уже існує: файл, що не є знімком, не замінюється ніколи.",
+ "switch.restart": "У kill повертає запис, коли процесу вже немає, разом з усім, що ділило його.",
+ "switch.stop": "У start-type і лише поруч із disabled зупиняє запис у тому самому плані після запису налаштування. Тип запуску змінює наступне завантаження і нічого зараз, тому без нього працюючий запис, переведений у disabled, продовжує працювати.",
+ "switch.full": "У show друкує й поля, які справді порожні. Поле, яке ніхто не зміг прочитати, друкується в будь-якому разі.",
+ "switch.components": "У license перетворює повідомлення на кожен компонент усередині цього виконуваного файлу з його версією, ліцензією та походженням. Той самий набір, що несе відомість матеріалів, опублікована поруч із завантаженням, бо обидва будуються з одного реєстру.",
+ "switch.json": "Той самий документ, машиночитаний, у стандартному виводі.",
+ "switch.note": "Для чого було зроблено знімок, зберігається всередині файлу.",
+ "switch.exit-code": "Завершується кодом 5, коли конфігурація відрізняється: запис додано чи видалено, або один налаштовано інакше. Один лише стан виконання не враховується. За замовчуванням вимкнено, щоб скрипт, якому потрібні лише надруковані відмінності, не спотикався об те, що він їх знайшов.",
+ "switch.live": "Порівнює файл із цією машиною в її теперішньому вигляді, а не з другим файлом.",
+ "switch.timing": "Скільки тривала кожна частина читання, у стандартному потоці помилок.",
+ "switch.dry-run": "Друкує план і нічого не змінює. Це той самий план, який виконує справжній запуск: другого шляху в коді для справжнього виконання немає.",
+ "switch.dependents": "Вносить у план служби, які б зламалися, як окремі кроки.",
+ "switch.timeout": "Скільки один крок може тривати без прогресу, перш ніж від нього відмовляться, відлік починається заново щоразу, коли служба повідомляє про прогрес. Шістдесят секунд, якщо не скажете іншого. За службою, яка й далі повідомляє про прогрес, спостерігають стільки, скільки потрібно. Вичерпання часу - це кінець спостереження, а не збій, і звіт каже, де запис було залишено.",
+
+ "field.name": "ім'я служби, за яким її розпізнає Windows",
+ "field.display": "відображуване ім'я, як його пише ця Windows",
+ "field.description": "що запис каже про себе",
+ "field.type": "що це за запис",
+ "field.peruser": "чи входить вона до одного з сімейств для кожного користувача, копію яких Windows створює на кожен сеанс",
+ "field.status": "що вона робить просто зараз",
+ "field.start": "що диспетчер робить із нею під час наступного завантаження",
+ "field.account": "обліковий запис, від якого вона працює, як його пише диспетчер",
+ "field.pid": "процес, у якому вона працює",
+ "field.trigger": "умова, що запускає або зупиняє її",
+ "field.path": "командний рядок, який запускає диспетчер",
+ "field.file": "чи є файл, який вона запускає, на диску",
+ "field.signed": "що Windows думає про підпис файлу, без перевірки відкликання",
+ "field.publisher": "хто підписав файл - підтверджено лише довіреним підписом",
+ "field.privilege": "привілей, який просить запис",
+ "field.dependson": "що потрібно цьому запису",
+ "field.requiredby": "що зламається, якщо цей зупиниться",
+ "field.sidtype": "тип SID служби",
+ "field.sddl": "дескриптор безпеки у вигляді тексту",
+ "field.memory": "що використовує її процес",
+ "field.mismatch": "конфігурація і стан, що розходяться",
+
+ "field.open.name": "текст",
+ "field.open.display": "текст",
+ "field.open.description": "текст",
+ "field.open.account": "текст, напр. localsystem",
+ "field.open.pid": "число: 1234, >1000, 100-200",
+ "field.open.path": "текст",
+ "field.open.publisher": "текст",
+ "field.open.privilege": "текст, напр. SeDebugPrivilege",
+ "field.open.dependson": "ім'я служби",
+ "field.open.requiredby": "ім'я служби",
+ "field.open.sddl": "текст",
+ "field.open.memory": "розмір з одиницею виміру: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "значення є, яким би воно не було",
+ "reserved.none": "значення справді немає - у запису його немає",
+ "reserved.unreadable": "інструмент не зміг прочитати це поле або не читав його, а це запитання, яке services.msc навіть не може поставити"
+}
diff --git a/site/i18n/vi.json b/site/i18n/vi.json
new file mode 100644
index 0000000..4df909b
--- /dev/null
+++ b/site/i18n/vi.json
@@ -0,0 +1,95 @@
+{
+ "_translated_from": "1867e30d6665",
+ "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.",
+
+ "chrome.skip": "Chuyển đến nội dung",
+ "chrome.nav": "Trang web",
+ "chrome.language": "Ngôn ngữ",
+
+ "chrome.footer.product": "Sản phẩm",
+ "chrome.footer.guides": "Hướng dẫn",
+ "chrome.footer.project": "Dự án",
+ "chrome.footer.source": "Mã nguồn trên GitHub",
+ "chrome.footer.releases": "Bản phát hành",
+ "chrome.footer.issues": "Trình theo dõi sự cố",
+ "chrome.footer.security": "Báo cáo sự cố bảo mật",
+ "chrome.footer.support": "Ủng hộ dự án",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Phát hành theo Giấy phép Công cộng GNU, phiên bản 3. Được xây dựng với quy trình có AI hỗ trợ.",
+ "chrome.legal.trademark": "{{product}} không liên kết với, không được chứng thực hay tài trợ bởi Microsoft. Windows là nhãn hiệu của nhóm công ty Microsoft, và tên này chỉ được dùng ở đây để nói công cụ quản lý thứ gì.",
+ "chrome.legal.privacy": "Trang web này không đặt cookie, không chạy script và không tải gì từ nơi khác.",
+
+ "table.head.code": "Mã",
+ "table.head.meaning": "Ý nghĩa",
+ "table.head.switch": "Tùy chọn",
+ "table.head.what": "Nó làm gì",
+ "table.head.where": "Nơi nó hoạt động",
+ "table.head.field": "Trường",
+ "table.head.asks": "Hỏi về",
+ "table.head.values": "Giá trị",
+
+ "exit.ok": "Xong, và mọi thứ đã đến nơi cần đến.",
+ "exit.runtime": "Công cụ đã thất bại - nó không thể làm điều được yêu cầu, vì lý do thuộc về công cụ chứ không phải kế hoạch.",
+ "exit.usage": "Dòng lệnh sai. Một lệnh gõ nhầm sẽ được đề nghị lệnh mà bạn có khả năng muốn dùng.",
+ "exit.incomplete": "Kế hoạch tốt, đã chạy, và có thứ trong đó không đến được nơi cần đến - trình quản lý từ chối, hoặc phiên không có quyền đối với nó.",
+ "exit.interrupted": "Ai đó đã dừng lần chạy bằng tay. Khác không ngay cả khi mọi bước vẫn đã đến nơi, để một lớp bao bọc không coi một lần chạy bị ngắt là sạch.",
+ "exit.differences": "Một lần so sánh đã chạy và thấy cấu hình đã lệch - một mục được thêm hoặc bị xóa, hoặc một mục được thiết lập khác. Chỉ riêng trạng thái chạy không phải là sai lệch. Chỉ với --exit-code, vì sai lệch là điều công cụ này tồn tại để tìm, và tìm thấy nó không phải là một thất bại.",
+
+ "switch.query": "Thu hẹp danh sách bằng ngôn ngữ truy vấn.",
+ "switch.signatures": "Đọc ai đã ký mỗi tệp thực thi và Windows có tin nó không. Mất vài giây trên cả máy, nên tắt trừ khi được yêu cầu - và một truy vấn về chữ ký tự bật nó.",
+ "switch.memory": "Đọc tiến trình của mỗi mục đang chạy đang dùng gì. Mặc định tắt vì đây là một phép đo chứ không phải một thiết lập: một giây sau nó đã khác.",
+ "switch.required-by": "Đọc những mục nào hỏng nếu dừng một mục, hỏi thẳng Windows chứ không suy ra từ những gì mọi thứ khai báo. Một lệnh gọi cho mỗi mục, nên tắt trừ khi được yêu cầu. show và snapshot create luôn đọc nó.",
+ "switch.follow-network": "Cho phép công cụ vươn ra ngoài máy này - một đường dẫn khởi chạy nằm trên thư mục chia sẻ của người khác, và một chứng chỉ mà máy này chưa có. Mặc định tắt vì an toàn: một thư mục chia sẻ không truy cập được tốn hai mươi mốt giây và xác thực bằng danh tính của người chạy nó, còn việc lấy chứng chỉ là một kết nối tới bên thứ ba giữa một danh sách bình thường. Không có nó, một chữ ký được kiểm tra với những gì có ở đây, và một kết quả có thể do không nhìn mà ra được báo là chưa đọc chứ không phải một phán quyết.",
+ "switch.force": "Với kill, kết thúc tiến trình ngay lập tức mà không hỏi lịch sự - bản xem trước khi đó hiển thị một bước thay vì hai. Với snapshot create, thay thế một bản chụp đã có - một tệp không phải bản chụp không bao giờ bị thay thế.",
+ "switch.restart": "Với kill, đưa mục trở lại khi tiến trình đã mất, cùng mọi thứ đã dùng chung nó.",
+ "switch.stop": "Với start-type, và chỉ bên cạnh disabled, dừng mục trong cùng kế hoạch sau khi thiết lập được ghi. Kiểu khởi động thay đổi lần khởi động tiếp theo và không thay đổi gì ngay bây giờ, nên không có nó, một mục đang chạy được đặt thành disabled vẫn tiếp tục chạy.",
+ "switch.full": "Với show, in cả các trường thực sự trống. Một trường không ai đọc được thì được in trong cả hai trường hợp.",
+ "switch.components": "Với license, biến thông báo thành mọi thành phần bên trong tệp thực thi này cùng phiên bản, giấy phép và nguồn gốc của nó. Cùng tập hợp mà bảng kê vật liệu phát hành bên cạnh bản tải xuống mang, vì cả hai được dựng từ một sổ đăng ký.",
+ "switch.json": "Cùng tài liệu đó, máy đọc được, trên đầu ra chuẩn.",
+ "switch.note": "Bản chụp được tạo ra để làm gì, lưu bên trong tệp.",
+ "switch.exit-code": "Kết thúc bằng mã 5 khi cấu hình khác nhau - một mục được thêm hoặc bị xóa, hoặc một mục được thiết lập khác. Riêng trạng thái chạy không được tính. Mặc định tắt, để một script chỉ muốn in các khác biệt không bị vấp chỉ vì tìm thấy một vài cái.",
+ "switch.live": "So sánh tệp với máy này như hiện giờ, thay vì với một tệp thứ hai.",
+ "switch.timing": "Mỗi phần của việc đọc mất bao lâu, trên lỗi chuẩn.",
+ "switch.dry-run": "In kế hoạch và không thay đổi gì. Đó là cùng một kế hoạch mà lần chạy thật thực thi - không có đường mã thứ hai cho việc thực thi thật.",
+ "switch.dependents": "Đưa các dịch vụ sẽ hỏng vào kế hoạch dưới dạng những bước riêng.",
+ "switch.timeout": "Một bước được phép trôi qua bao lâu không có tiến triển trước khi bị bỏ, đếm lại mỗi khi dịch vụ báo tiến triển. Sáu mươi giây trừ khi bạn nói khác. Một dịch vụ cứ báo tiến triển sẽ được theo dõi bao lâu cũng được. Hết thời gian là kết thúc việc theo dõi chứ không phải một thất bại, và báo cáo nói mục đã bị để lại ở đâu.",
+
+ "field.name": "tên dịch vụ, tên Windows dùng để nhận ra nó",
+ "field.display": "tên hiển thị, như Windows này viết",
+ "field.description": "mục tự nói gì về chính nó",
+ "field.type": "mục thuộc loại nào",
+ "field.peruser": "có phải một trong các họ theo người dùng mà Windows tạo bản sao cho mỗi phiên hay không",
+ "field.status": "nó đang làm gì ngay lúc này",
+ "field.start": "trình quản lý làm gì với nó ở lần khởi động tiếp theo",
+ "field.account": "tài khoản nó chạy dưới, như trình quản lý viết",
+ "field.pid": "tiến trình nó đang chạy trong đó",
+ "field.trigger": "một điều kiện khởi động hoặc dừng nó",
+ "field.path": "dòng lệnh mà trình quản lý khởi chạy",
+ "field.file": "tệp mà nó chạy có nằm trên đĩa không",
+ "field.signed": "Windows nghĩ gì về chữ ký của tệp, không kiểm tra thu hồi",
+ "field.publisher": "ai đã ký tệp - chỉ được chứng minh bởi một chữ ký đáng tin cậy",
+ "field.privilege": "một đặc quyền mà mục yêu cầu",
+ "field.dependson": "điều mà mục này cần",
+ "field.requiredby": "điều gì hỏng nếu mục này dừng",
+ "field.sidtype": "kiểu SID của dịch vụ",
+ "field.sddl": "bộ mô tả bảo mật, dạng văn bản",
+ "field.memory": "tiến trình của nó đang dùng gì",
+ "field.mismatch": "cấu hình và trạng thái không khớp nhau",
+
+ "field.open.name": "văn bản",
+ "field.open.display": "văn bản",
+ "field.open.description": "văn bản",
+ "field.open.account": "văn bản, ví dụ localsystem",
+ "field.open.pid": "một số: 1234, >1000, 100-200",
+ "field.open.path": "văn bản",
+ "field.open.publisher": "văn bản",
+ "field.open.privilege": "văn bản, ví dụ SeDebugPrivilege",
+ "field.open.dependson": "tên một dịch vụ",
+ "field.open.requiredby": "tên một dịch vụ",
+ "field.open.sddl": "văn bản",
+ "field.open.memory": "một kích thước kèm đơn vị: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "có một giá trị, bất kể là gì",
+ "reserved.none": "thực sự không có giá trị - mục không có giá trị nào",
+ "reserved.unreadable": "công cụ không thể đọc trường này, hoặc chưa đọc nó, một câu hỏi mà services.msc thậm chí không thể đặt ra"
+}
diff --git a/site/i18n/zh-hans.json b/site/i18n/zh-hans.json
new file mode 100644
index 0000000..0d4d925
--- /dev/null
+++ b/site/i18n/zh-hans.json
@@ -0,0 +1,95 @@
+{
+ "_translated_from": "1867e30d6665",
+ "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.",
+
+ "chrome.skip": "跳到内容",
+ "chrome.nav": "站点",
+ "chrome.language": "语言",
+
+ "chrome.footer.product": "产品",
+ "chrome.footer.guides": "指南",
+ "chrome.footer.project": "项目",
+ "chrome.footer.source": "GitHub 上的源代码",
+ "chrome.footer.releases": "发布版本",
+ "chrome.footer.issues": "问题跟踪器",
+ "chrome.footer.security": "报告安全问题",
+ "chrome.footer.support": "支持这个项目",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. 依据 GNU General Public License 第 3 版发布。采用 AI 辅助的工作流程构建。",
+ "chrome.legal.trademark": "{{product}} 与 Microsoft 没有关联,也未获得 Microsoft 的认可或赞助。Windows 是 Microsoft 公司集团的商标,这个名称在此处仅用于说明该工具管理的是什么。",
+ "chrome.legal.privacy": "本网站不设置 Cookie,不运行脚本,也不从其他任何地方加载任何内容。",
+
+ "table.head.code": "代码",
+ "table.head.meaning": "含义",
+ "table.head.switch": "选项",
+ "table.head.what": "作用",
+ "table.head.where": "适用范围",
+ "table.head.field": "字段",
+ "table.head.asks": "询问的内容",
+ "table.head.values": "取值",
+
+ "exit.ok": "完成,一切都到了它该去的地方。",
+ "exit.runtime": "工具失败了:由于与工具本身而不是与计划有关的原因,它无法完成被要求做的事。",
+ "exit.usage": "命令行有误。拼错的命令会得到一个你可能想用的命令的提示。",
+ "exit.incomplete": "计划是好的,也运行了,但其中有些内容没有到达它该去的地方:服务管理器拒绝了,或者会话没有相应的权限。",
+ "exit.interrupted": "有人手动停止了运行。即使每个步骤都已到达,结果也不是零,这样封装脚本就不会把被中断的运行当作正常结束。",
+ "exit.differences": "比较已运行,并发现配置发生了漂移:条目被添加或删除,或者某个条目的设置不同。仅有运行状态的变化不算漂移。仅在使用 --exit-code 时才会这样,因为漂移正是这个工具要找的东西,找到它并不是失败。",
+
+ "switch.query": "用查询语言缩小列表范围。",
+ "switch.signatures": "读取谁给每个可执行文件签了名,以及 Windows 是否信任它。在整台计算机上需要几秒钟,所以除非被要求,否则是关闭的,而关于签名的查询会自动把它打开。",
+ "switch.memory": "读取每个运行中条目的进程正在使用什么。默认关闭,因为它是一次测量而不是一项设置:一秒钟之后它就不同了。",
+ "switch.required-by": "读取停止某一个条目后哪些条目会出问题,直接向 Windows 询问,而不是根据各方的声明推算。每个条目需要一次调用,所以除非被要求,否则是关闭的。show 和 snapshot create 每次都会读取它。",
+ "switch.follow-network": "让工具完全可以访问这台计算机之外的内容:位于别人共享上的启动路径,以及这台计算机尚未持有的证书。出于安全考虑默认关闭:一个无法访问的共享会耗费二十一秒,并以运行者的身份进行身份验证,而获取证书则是在一次普通列表的过程中连接第三方。没有它时,签名会根据这里已有的内容进行检查,而可能是由于没有去查看而导致的结果,会被报告为未读取,而不是给出判定。",
+ "switch.force": "对 kill 而言,是不再礼貌地询问而直接结束进程:这样预览显示的是一个步骤,而不是两个。对 snapshot create 而言,是替换已经存在的快照:不是快照的文件绝不会被替换。",
+ "switch.restart": "对 kill 而言,是在进程消失后,把该条目连同与它共用进程的所有内容一起带回来。",
+ "switch.stop": "对 start-type 而言,并且只能与 disabled 搭配,在写入设置之后,在同一份计划中停止该条目。启动类型改变的是下一次启动,而不是现在,所以没有它时,设为 disabled 的运行中条目会继续运行。",
+ "switch.full": "对 show 而言,是同时打印真正为空的字段。无人能读取的字段无论如何都会被打印。",
+ "switch.components": "对 license 而言,是把通知变成这个可执行文件内部的每个组件及其版本、许可证和来源。这与随下载一同发布的物料清单所含的集合相同,因为两者都由同一份登记表生成。",
+ "switch.json": "同一份文档,以机器可读的形式输出到标准输出。",
+ "switch.note": "这份快照是为什么而生成的,保存在文件内部。",
+ "switch.exit-code": "当配置不同时以代码 5 结束:条目被添加或删除,或者某个条目的设置不同。仅有运行状态的变化不计入。默认关闭,这样只想打印差异的脚本,就不会因为发现了差异而被绊住。",
+ "switch.live": "把文件与这台计算机的当前状态比较,而不是与第二个文件比较。",
+ "switch.timing": "读取的每个部分花了多长时间,输出到标准错误。",
+ "switch.dry-run": "打印计划,不做任何更改。它与实际运行所执行的是同一份计划:真正执行时没有第二条代码路径。",
+ "switch.dependents": "把会出问题的服务作为独立的步骤放进计划。",
+ "switch.timeout": "一个步骤在没有进展的情况下最多可以持续多久,超过后就会被放弃,服务每次报告进展时都会重新计时。如果你不另行指定,则为六十秒。一直在报告进展的服务会被一直观察下去,直到完成为止。超时只是观察结束,而不是失败,报告会说明该条目被留在了什么状态。",
+
+ "field.name": "服务名称,即 Windows 用来识别它的那个名称",
+ "field.display": "显示名称,按这台 Windows 的写法",
+ "field.description": "条目对自身的描述",
+ "field.type": "这是哪一类条目",
+ "field.peruser": "它是否属于 Windows 为每个会话生成副本的按用户服务族之一",
+ "field.status": "它此刻在做什么",
+ "field.start": "服务管理器在下次启动时如何处理它",
+ "field.account": "它运行所用的账户,按服务管理器的写法",
+ "field.pid": "它所在的进程",
+ "field.trigger": "启动或停止它的条件",
+ "field.path": "服务管理器启动的命令行",
+ "field.file": "它所运行的文件是否在磁盘上",
+ "field.signed": "Windows 对文件签名的判断,不检查吊销",
+ "field.publisher": "谁给文件签的名,只有受信任的签名才能证明",
+ "field.privilege": "条目请求的一项特权",
+ "field.dependson": "它需要什么",
+ "field.requiredby": "它停止时什么会出问题",
+ "field.sidtype": "服务 SID 类型",
+ "field.sddl": "安全描述符,以文本形式表示",
+ "field.memory": "它的进程正在使用什么",
+ "field.mismatch": "相互矛盾的配置与状态",
+
+ "field.open.name": "文本",
+ "field.open.display": "文本",
+ "field.open.description": "文本",
+ "field.open.account": "文本,例如 localsystem",
+ "field.open.pid": "数字:1234、>1000、100-200",
+ "field.open.path": "文本",
+ "field.open.publisher": "文本",
+ "field.open.privilege": "文本,例如 SeDebugPrivilege",
+ "field.open.dependson": "服务名称",
+ "field.open.requiredby": "服务名称",
+ "field.open.sddl": "文本",
+ "field.open.memory": "带单位的大小:500MB、>1GB、100MB-1GB",
+
+ "reserved.any": "有值,无论是什么",
+ "reserved.none": "确实没有值,该条目没有值",
+ "reserved.unreadable": "工具无法读取这个字段,或者没有读取它,而这是 services.msc 连问都问不出的问题"
+}
diff --git a/site/i18n/zh-hant.json b/site/i18n/zh-hant.json
new file mode 100644
index 0000000..fd1d395
--- /dev/null
+++ b/site/i18n/zh-hant.json
@@ -0,0 +1,95 @@
+{
+ "_translated_from": "1867e30d6665",
+ "_note": "The site's chrome, and the sentences beside the tables the generator builds out of the program. Every language file carries exactly these keys - a missing one fails the build rather than falling back, because a page half in one language looks finished.",
+
+ "chrome.skip": "跳到內容",
+ "chrome.nav": "網站",
+ "chrome.language": "語言",
+
+ "chrome.footer.product": "產品",
+ "chrome.footer.guides": "指南",
+ "chrome.footer.project": "專案",
+ "chrome.footer.source": "GitHub 上的原始碼",
+ "chrome.footer.releases": "發行版本",
+ "chrome.footer.issues": "問題追蹤器",
+ "chrome.footer.security": "回報安全性問題",
+ "chrome.footer.support": "支持這個專案",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. 依據 GNU General Public License 第 3 版發佈。採用 AI 輔助的工作流程建置。",
+ "chrome.legal.trademark": "{{product}} 與 Microsoft 沒有關聯,也未獲得 Microsoft 的認可或贊助。Windows 是 Microsoft 公司集團的商標,這個名稱在此處僅用於說明該工具管理的是什麼。",
+ "chrome.legal.privacy": "本網站不設定 Cookie,不執行指令碼,也不從其他任何地方載入任何內容。",
+
+ "table.head.code": "代碼",
+ "table.head.meaning": "意義",
+ "table.head.switch": "選項",
+ "table.head.what": "作用",
+ "table.head.where": "適用範圍",
+ "table.head.field": "欄位",
+ "table.head.asks": "詢問的內容",
+ "table.head.values": "值",
+
+ "exit.ok": "完成,一切都到了它該去的地方。",
+ "exit.runtime": "工具失敗了:由於與工具本身而不是與計畫有關的原因,它無法完成被要求做的事。",
+ "exit.usage": "命令列有誤。拼錯的命令會得到一個你可能想用的命令的提示。",
+ "exit.incomplete": "計畫是好的,也執行了,但其中有些內容沒有到達它該去的地方:服務管理員拒絕了,或者工作階段沒有相應的權限。",
+ "exit.interrupted": "有人手動停止了執行。即使每個步驟都已到達,結果也不是零,這樣包裝指令碼就不會把被中斷的執行當作正常結束。",
+ "exit.differences": "比較已執行,並發現組態發生了漂移:項目被新增或刪除,或者某個項目的設定不同。僅有執行狀態的變化不算漂移。僅在使用 --exit-code 時才會這樣,因為漂移正是這個工具要找的東西,找到它並不是失敗。",
+
+ "switch.query": "用查詢語言縮小清單範圍。",
+ "switch.signatures": "讀取誰替每個可執行檔簽章,以及 Windows 是否信任它。在整台電腦上需要幾秒鐘,所以除非被要求,否則是關閉的,而關於簽章的查詢會自動把它開啟。",
+ "switch.memory": "讀取每個執行中項目的處理程序正在使用什麼。預設關閉,因為它是一次測量而不是一項設定:一秒鐘之後它就不同了。",
+ "switch.required-by": "讀取停止某一個項目後哪些項目會出問題,直接向 Windows 詢問,而不是根據各方的宣告推算。每個項目需要一次呼叫,所以除非被要求,否則是關閉的。show 和 snapshot create 每次都會讀取它。",
+ "switch.follow-network": "讓工具完全可以存取這台電腦之外的內容:位於別人共用資料夾上的啟動路徑,以及這台電腦尚未持有的憑證。出於安全考量預設關閉:一個無法存取的共用資料夾會耗費二十一秒,並以執行者的身分進行驗證,而取得憑證則是在一次普通清單的過程中連線第三方。沒有它時,簽章會根據這裡已有的內容進行檢查,而可能是由於沒有去查看而導致的結果,會被回報為未讀取,而不是給出判定。",
+ "switch.force": "對 kill 而言,是不再禮貌地詢問而直接結束處理程序:這樣預覽顯示的是一個步驟,而不是兩個。對 snapshot create 而言,是取代已經存在的快照:不是快照的檔案絕不會被取代。",
+ "switch.restart": "對 kill 而言,是在處理程序消失後,把該項目連同與它共用處理程序的所有內容一起帶回來。",
+ "switch.stop": "對 start-type 而言,並且只能與 disabled 搭配,在寫入設定之後,在同一份計畫中停止該項目。啟動類型改變的是下一次啟動,而不是現在,所以沒有它時,設為 disabled 的執行中項目會繼續執行。",
+ "switch.full": "對 show 而言,是同時列印真正為空的欄位。無人能讀取的欄位無論如何都會被列印。",
+ "switch.components": "對 license 而言,是把通知變成這個可執行檔內部的每個元件及其版本、授權和來源。這與隨下載一同發行的物料清單所含的集合相同,因為兩者都由同一份登記表產生。",
+ "switch.json": "同一份文件,以機器可讀的形式輸出到標準輸出。",
+ "switch.note": "這份快照是為什麼而產生的,儲存在檔案內部。",
+ "switch.exit-code": "當組態不同時以代碼 5 結束:項目被新增或刪除,或者某個項目的設定不同。僅有執行狀態的變化不計入。預設關閉,這樣只想列印差異的指令碼,就不會因為發現了差異而被絆住。",
+ "switch.live": "把檔案與這台電腦的目前狀態比較,而不是與第二個檔案比較。",
+ "switch.timing": "讀取的每個部分花了多長時間,輸出到標準錯誤。",
+ "switch.dry-run": "列印計畫,不做任何變更。它與實際執行所執行的是同一份計畫:真正執行時沒有第二條程式碼路徑。",
+ "switch.dependents": "把會出問題的服務作為獨立的步驟放進計畫。",
+ "switch.timeout": "一個步驟在沒有進展的情況下最多可以持續多久,超過後就會被放棄,服務每次回報進展時都會重新計時。如果你不另行指定,則為六十秒。一直在回報進展的服務會被一直觀察下去,直到完成為止。逾時只是觀察結束,而不是失敗,報告會說明該項目被留在了什麼狀態。",
+
+ "field.name": "服務名稱,即 Windows 用來識別它的那個名稱",
+ "field.display": "顯示名稱,依這台 Windows 的寫法",
+ "field.description": "項目對自身的描述",
+ "field.type": "這是哪一類項目",
+ "field.peruser": "它是否屬於 Windows 為每個工作階段產生副本的依使用者服務族之一",
+ "field.status": "它此刻在做什麼",
+ "field.start": "服務管理員在下次啟動時如何處理它",
+ "field.account": "它執行所用的帳戶,依服務管理員的寫法",
+ "field.pid": "它所在的處理程序",
+ "field.trigger": "啟動或停止它的條件",
+ "field.path": "服務管理員啟動的命令列",
+ "field.file": "它所執行的檔案是否在磁碟上",
+ "field.signed": "Windows 對檔案簽章的判斷,不檢查撤銷",
+ "field.publisher": "誰替檔案簽章,只有受信任的簽章才能證明",
+ "field.privilege": "項目要求的一項特殊權限",
+ "field.dependson": "它需要什麼",
+ "field.requiredby": "它停止時什麼會出問題",
+ "field.sidtype": "服務 SID 類型",
+ "field.sddl": "安全性描述元,以文字形式表示",
+ "field.memory": "它的處理程序正在使用什麼",
+ "field.mismatch": "相互矛盾的組態與狀態",
+
+ "field.open.name": "文字",
+ "field.open.display": "文字",
+ "field.open.description": "文字",
+ "field.open.account": "文字,例如 localsystem",
+ "field.open.pid": "數字:1234、>1000、100-200",
+ "field.open.path": "文字",
+ "field.open.publisher": "文字",
+ "field.open.privilege": "文字,例如 SeDebugPrivilege",
+ "field.open.dependson": "服務名稱",
+ "field.open.requiredby": "服務名稱",
+ "field.open.sddl": "文字",
+ "field.open.memory": "帶單位的大小:500MB、>1GB、100MB-1GB",
+
+ "reserved.any": "有值,無論是什麼",
+ "reserved.none": "確實沒有值,該項目沒有值",
+ "reserved.unreadable": "工具無法讀取這個欄位,或者沒有讀取它,而這是 services.msc 連問都問不出的問題"
+}
diff --git a/site/pages/404/cs.html b/site/pages/404/cs.html
new file mode 100644
index 0000000..eb4ea52
--- /dev/null
+++ b/site/pages/404/cs.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+Adresa neodpovídá ničemu na tomto webu. Nic nebylo smazáno, aby se to stalo - adresy se tu nemění, protože přesunutá stránka by rozbila každý odkaz, který na ni kdy ukazoval.
+ +Dva samostatné spustitelné soubory, nebo instalační program.
Každé pole a každá hodnota, podle které lze hledat.
Každý přepínač a každý návratový kód.
Co se na tomto stroji změnilo od včerejška.
Včetně toho, co nástroj z návrhu odmítá.
Všechno je na GitHubu pod GPL-3.0.
Alamat itu tidak cocok dengan apa pun di situs ini. Tidak ada yang dihapus agar hal itu terjadi - alamat di sini tidak berubah, karena halaman yang dipindahkan akan merusak setiap tautan yang pernah menunjuk ke sana.
+ +Dua berkas eksekusi mandiri, atau sebuah installer.
Setiap bidang dan setiap nilai yang bisa Anda cari.
Setiap opsi dan setiap kode keluar.
Apa yang berubah pada mesin ini sejak kemarin.
Termasuk apa yang sengaja ditolak alat ini.
Semuanya ada di GitHub di bawah GPL-3.0.
このアドレスは、このサイトのどこにも一致しません。そうなるように削除したものはありません。ここのアドレスは変更されません。ページを移動すると、そのページを指していたすべてのリンクが壊れてしまうからです。
+自己完結型の実行ファイル 2 つ、またはインストーラー。
検索できるすべてのフィールドと値。
すべてのオプションと終了コード。
このマシンで昨日から何が変わったか。
設計上ツールが拒否することも含みます。
すべて GitHub にあり、GPL-3.0 です。
Het adres komt met niets op deze site overeen. Er is niets verwijderd om dat te laten gebeuren - adressen veranderen hier niet, omdat een verplaatste pagina elke link zou breken die er ooit naar wees.
+ +Twee zelfstandige uitvoerbare bestanden, of een installatieprogramma.
Elk veld en elke waarde waarop u kunt zoeken.
Elke optie en elke afsluitcode.
Wat er sinds gisteren op deze machine is veranderd.
Ook wat het hulpmiddel bewust weigert.
Alles staat op GitHub onder GPL-3.0.
Adresa nu corespunde la nimic de pe acest site. Nu s-a șters nimic ca să se întâmple asta - adresele de aici nu se schimbă, pentru că o pagină mutată ar strica fiecare link care a indicat vreodată spre ea.
+ +Două executabile independente sau un program de instalare.
Fiecare câmp și fiecare valoare după care se poate căuta.
Fiecare opțiune și fiecare cod de ieșire.
Ce s-a schimbat pe această mașină de ieri.
Inclusiv ce refuză instrumentul prin construcție.
Totul este pe GitHub sub GPL-3.0.
Адрес не соответствует ничему на этом сайте. Ничего не удалялось, чтобы так вышло: адреса здесь не меняются, потому что перенесённая страница сломала бы каждую ссылку, которая на неё когда-либо вела.
+ +Два автономных исполняемых файла или установщик.
Каждое поле и каждое значение, по которым можно искать.
Каждый параметр и каждый код завершения.
Что изменилось на этой машине со вчерашнего дня.
В том числе от чего инструмент отказывается по замыслу.
Всё на GitHub под GPL-3.0.
Adres bu sitedeki hiçbir şeyle eşleşmiyor. Bunun olması için hiçbir şey silinmedi - buradaki adresler değişmez, çünkü taşınmış bir sayfa ona hiç işaret etmiş her bağlantıyı bozardı.
+ +İki bağımsız yürütülebilir dosya ya da bir yükleyici.
Üzerinde arama yapabileceğiniz her alan ve her değer.
Her seçenek ve her çıkış kodu.
Dünden beri bu makinede ne değişti.
Aracın tasarım gereği neyi reddettiği dahil.
Her şey GitHub'da GPL-3.0 altında.
Адреса не відповідає нічому на цьому сайті. Нічого не видалялося, щоб так вийшло: адреси тут не змінюються, бо перенесена сторінка зламала б кожне посилання, що будь-коли на неї вело.
+ +Два автономні виконувані файли або інсталятор.
Кожне поле й кожне значення, за якими можна шукати.
Кожен параметр і кожен код завершення.
Що змінилося на цій машині від учорашнього дня.
Зокрема й від чого інструмент відмовляється за задумом.
Усе на GitHub за GPL-3.0.
Địa chỉ không khớp với bất cứ thứ gì trên trang web này. Không có gì bị xóa để điều đó xảy ra - địa chỉ ở đây không thay đổi, vì một trang bị chuyển đi sẽ làm hỏng mọi liên kết từng trỏ tới nó.
+ +Hai tệp thực thi độc lập, hoặc một trình cài đặt.
Mọi trường và mọi giá trị bạn có thể tìm kiếm.
Mọi tùy chọn và mọi mã thoát.
Điều gì đã thay đổi trên máy này kể từ hôm qua.
Bao gồm những gì công cụ từ chối theo thiết kế.
Mọi thứ đều trên GitHub theo GPL-3.0.
Audit není seznam toho, co na stroji je. Je to rozdíl mezi tím, co na stroji je, a tím, co tam mělo být - a druhou polovinu na čisté instalaci Windows nezaznamenává nic.
+Snímek pořízený při nasazení a porovnání se strojem dnes večer. Konfigurace se hlásí odděleně od toho, co se jen spustilo nebo zastavilo, takže jeden změněný typ spouštění nezapadne mezi čtyřiceti službami, které náhodou běží.
+bws snapshot diff baseline.json --live
Pořiďte na každém snímek a porovnejte oba soubory - kdekoli, bez přítomnosti kteréhokoli stroje. Soubory nesou název stroje a účet, který je pořídil.
+bws snapshot diff staging.json production.json
Dotazy, které najdou tvary, na které stojí za to se podívat: služba, jejíž spustitelný soubor je pryč, nepodepsaná, běžící přesto, že je zakázána, nebo žádající o práva ladění.
+file:missing, signed:no, mismatch:running
# den, kdy stroj jde do provozu
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# každou noc z naplánované úlohy
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - žádný drift konfigurace
+# 5 - konfigurace se odchýlila a drift.json říká co
+# 3 - proběhlo to a nešlo přečíst všechno, takže odpověď je částečná
+ Návratový kód 5 je to, co z toho dělá audit, a ne zprávu, kterou nikdo nečte: úloha mlčí, dokud se stroj neodchýlí, a v noci, kdy se to stane, je někdo upozorněn.
Výchozí stav pořizujte ze sezení se zvýšenými oprávněními. Bez práv správce správce vypisuje méně položek a víc z vypsaných odmítá. Snímek zaznamenává, zda účet, který ho pořídil, byl správce, takže porovnání to může říct, místo aby hlásilo jako odstraněné položky, které nikdo neodstranil - ale výchozí stav, kterému chybí půlka stroje, je pořád výchozí stav, kterému chybí půlka stroje.
+git diff ho čte. Auditor, který tento nástroj nemá, může soubor přesto přečíst, a systém správy verzí už odpovídá na otázku kdy.Audit bukan daftar apa yang ada di mesin. Audit adalah selisih antara apa yang ada di mesin dan apa yang seharusnya ada - dan tidak ada apa pun pada Windows standar yang mencatat bagian kedua.
+Snapshot yang diambil saat penerapan, dan perbandingan dengan mesin malam ini. Konfigurasi dilaporkan terpisah dari apa yang sekadar mulai atau berhenti, sehingga satu tipe startup yang diubah seseorang tidak terkubur di bawah empat puluh layanan yang kebetulan berjalan.
+bws snapshot diff baseline.json --live
Ambil snapshot di masing-masing dan bandingkan kedua berkas - di mana saja, tanpa kehadiran salah satu mesin. Berkas membawa nama mesin dan akun yang mengambilnya.
+bws snapshot diff staging.json production.json
Kueri yang menemukan bentuk-bentuk yang layak dilihat: layanan yang berkas eksekusinya hilang, yang tidak bertanda tangan, yang berjalan padahal dinonaktifkan, yang meminta hak debug.
+file:missing, signed:no, mismatch:running
# 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
+ Kode keluar 5 adalah yang menjadikan ini audit dan bukan laporan yang tidak dibaca siapa pun: tugas itu diam sampai mesin menyimpang, dan pada malam hal itu terjadi, seseorang dipanggil.
Ambil acuan dasar dari sesi dengan hak tinggi. Tanpa hak administrator, manajer mencantumkan lebih sedikit entri dan menolak lebih banyak dari yang dicantumkannya. Snapshot mencatat apakah akun yang mengambilnya adalah administrator, sehingga perbandingan dapat menyatakannya alih-alih melaporkan entri sebagai dihapus padahal tidak ada yang menghapusnya - tetapi acuan dasar yang kehilangan separuh mesin tetaplah acuan dasar yang kehilangan separuh mesin.
+git diff membacanya. Auditor yang tidak memiliki alat ini tetap bisa membaca berkasnya, dan sistem kontrol versi sudah menjawab kapan.監査とは、マシンにあるものの一覧ではありません。マシンにあるものと、あるはずだったものとの差です。標準の Windows には、後半を記録するものが何もありません。
+デプロイ時に取ったスナップショットと、今夜のマシンとの差分です。構成は、単に開始や停止をしただけのものとは分けて報告されるので、誰かが変更した 1 つのスタートアップの種類が、たまたま実行されている 40 個のサービスの下に埋もれません。
+bws snapshot diff baseline.json --live
それぞれでスナップショットを取り、2 つのファイルの差分を取ります。どこでも、どちらのマシンもその場に必要ありません。ファイルには、マシン名と、取得したアカウントが入っています。
+bws snapshot diff staging.json production.json
見る価値のある形を見つけるクエリです。実行ファイルがなくなったサービス、署名のないもの、無効なのに実行されているもの、デバッグ権限を要求するもの。
+file:missing, signed:no, mismatch:running
# マシンが稼働を開始する日
+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 - 実行されたが、すべてを読み取れなかった。そのため答えは部分的
+ 終了コード 5 があることで、これは誰も読まないレポートではなく、監査になります。タスクはマシンがドリフトするまで静かで、ドリフトした夜に誰かが呼び出されます。
ベースラインは、昇格したセッションから取得してください。管理者権限がないと、マネージャーが一覧するエントリは少なくなり、一覧したもののうち拒否されるものが増えます。スナップショットには、取得したアカウントが管理者だったかどうかが記録されるので、誰も削除していないエントリが削除されたと報告する代わりに、比較がそのことを伝えられます。それでも、マシンの半分が欠けたベースラインは、マシンの半分が欠けたベースラインのままです。
+git diff で読めます。このツールを持たない監査人でもファイルを読めますし、バージョン管理システムはいつという問いにすでに答えています。감사는 컴퓨터에 있는 것의 목록이 아닙니다. 컴퓨터에 있는 것과 있어야 했던 것의 차이이며, 기본 Windows에는 뒤쪽 절반을 기록하는 것이 없습니다.
+배포할 때 만든 스냅샷과, 오늘 밤 컴퓨터와의 차이입니다. 구성은 단순히 시작되거나 중지된 것과 따로 보고되므로, 누군가 바꾼 시작 유형 하나가 우연히 실행 중인 서비스 마흔 개 아래에 묻히지 않습니다.
+bws snapshot diff baseline.json --live
각각에서 스냅샷을 만들고 두 파일의 차이를 보세요. 어디서든, 어느 컴퓨터도 그 자리에 없어도 됩니다. 파일에는 컴퓨터 이름과 그것을 만든 계정이 들어 있습니다.
+bws snapshot diff staging.json production.json
살펴볼 만한 형태를 찾는 쿼리입니다. 실행 파일이 사라진 서비스, 서명되지 않은 서비스, 사용 안 함인데 실행 중인 서비스, 디버그 권한을 요청하는 서비스.
+file:missing, signed:no, mismatch:running
# 컴퓨터가 운영에 들어가는 날
+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 - 실행되었지만 모든 것을 읽지 못했으므로 답이 부분적임
+ 종료 코드 5가 이것을 아무도 읽지 않는 보고서가 아니라 감사로 만듭니다. 작업은 컴퓨터가 드리프트할 때까지 조용하며, 드리프트한 밤에 누군가 호출됩니다.
기준선은 상승된 세션에서 만드세요. 관리자 권한이 없으면 서비스 관리자가 나열하는 항목이 더 적고, 나열한 것 중 더 많은 부분을 거부합니다. 스냅샷은 그것을 만든 계정이 관리자였는지 기록하므로, 아무도 제거하지 않은 항목이 제거되었다고 보고하는 대신 비교가 그 사실을 알려 줄 수 있습니다. 그래도 컴퓨터의 절반이 빠진 기준선은 여전히 컴퓨터의 절반이 빠진 기준선입니다.
+git diff가 읽습니다. 이 도구가 없는 감사자도 파일을 읽을 수 있고, 버전 관리 시스템은 언제에 이미 답합니다.Een audit is geen lijst van wat er op de machine staat. Het is het verschil tussen wat er op de machine staat en wat er hoorde te staan - en niets op een gewone Windows legt de tweede helft vast.
+Een momentopname bij de uitrol, en vanavond een vergelijking met de machine. Configuratie wordt los gemeld van wat alleen is gestart of gestopt, zodat het ene opstarttype dat iemand heeft gewijzigd niet wordt begraven onder veertig services die toevallig draaien.
+bws snapshot diff baseline.json --live
Maak op elk een momentopname en vergelijk de twee bestanden - overal, zonder dat een van beide machines aanwezig is. De bestanden dragen de naam van de machine en het account dat ze maakte.
+bws snapshot diff staging.json production.json
Queries die de vormen vinden die het bekijken waard zijn: een service waarvan het uitvoerbare bestand weg is, een die niet is ondertekend, een die draait terwijl hij is uitgeschakeld, een die om foutopsporingsrechten vraagt.
+file:missing, signed:no, mismatch:running
# de dag dat de machine in gebruik gaat
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# elke nacht, vanuit een geplande taak
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - geen configuratiedrift
+# 5 - de configuratie is afgedreven, en drift.json zegt wat
+# 3 - het draaide en kon niet alles lezen, dus het antwoord is gedeeltelijk
+ Afsluitcode 5 is wat dit tot een audit maakt in plaats van een rapport dat niemand leest: de taak zwijgt tot de machine afdrijft, en de nacht dat dat gebeurt wordt iemand gewaarschuwd.
Maak de basislijn vanuit een sessie met verhoogde rechten. Zonder beheerdersrechten toont de beheerder minder items en weigert hij er meer van wat hij toont. De momentopname legt vast of het account dat hem maakte een beheerder was, zodat de vergelijking dat kan zeggen in plaats van items als verwijderd te melden die niemand heeft verwijderd - maar een basislijn waarvan de helft van de machine ontbreekt, blijft een basislijn waarvan de helft van de machine ontbreekt.
+git diff leest het. Een auditor die dit hulpmiddel niet heeft kan het bestand nog steeds lezen, en een versiebeheersysteem beantwoordt al het wanneer.Un audit nu este o listă a ceea ce se află pe mașină. Este diferența dintre ce se află pe mașină și ce trebuia să se afle - iar a doua jumătate nu o înregistrează nimic pe un Windows obișnuit.
+Un instantaneu făcut la implementare și o comparație cu mașina în această seară. Configurația este raportată separat de ceea ce doar a pornit sau s-a oprit, așa că singurul tip de pornire pe care l-a schimbat cineva nu este îngropat sub patruzeci de servicii care se întâmplă să ruleze.
+bws snapshot diff baseline.json --live
Faceți un instantaneu pe fiecare și comparați cele două fișiere - oriunde, fără ca vreuna dintre mașini să fie prezentă. Fișierele poartă numele mașinii și contul care le-a făcut.
+bws snapshot diff staging.json production.json
Interogări care găsesc formele care merită privite: un serviciu al cărui executabil a dispărut, unul nesemnat, unul care rulează deși este dezactivat, unul care cere drepturi de depanare.
+file:missing, signed:no, mismatch:running
# ziua în care mașina intră în serviciu
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# în fiecare noapte, dintr-o sarcină programată
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - nicio derivă de configurație
+# 5 - configurația a derivat, iar drift.json spune ce
+# 3 - a rulat și n-a putut citi totul, deci răspunsul este parțial
+ Codul de ieșire 5 este ceea ce face din asta un audit și nu un raport pe care nu-l citește nimeni: sarcina tace până când mașina derivă, iar în noaptea în care se întâmplă, cineva este alertat.
Luați starea de referință dintr-o sesiune cu drepturi ridicate. Fără drepturi de administrator, managerul listează mai puține intrări și refuză mai multe din ce listează. Instantaneul consemnează dacă contul care l-a făcut era administrator, astfel încât comparația poate spune asta în loc să raporteze ca eliminate intrări pe care nimeni nu le-a eliminat - dar o stare de referință căreia îi lipsește jumătate din mașină rămâne o stare de referință căreia îi lipsește jumătate din mașină.
+git diff îl citește. Un auditor care nu are acest instrument poate totuși citi fișierul, iar un sistem de control al versiunilor răspunde deja la când.Аудит - это не список того, что есть на машине. Это разница между тем, что есть на машине, и тем, что должно было быть, - а вторую половину на обычной Windows не записывает ничто.
+Снимок, сделанный при развёртывании, и сравнение с машиной сегодня вечером. Конфигурация сообщается отдельно от того, что просто запустилось или остановилось, поэтому единственный тип запуска, который кто-то изменил, не тонет под сорока службами, которые случайно работают.
+bws snapshot diff baseline.json --live
Сделайте снимок на каждой и сравните два файла - где угодно, без присутствия обеих машин. Файлы несут имя машины и учётную запись, которая их сделала.
+bws snapshot diff staging.json production.json
Запросы, находящие формы, на которые стоит взглянуть: служба, чей исполняемый файл пропал, неподписанная, работающая, хотя отключена, просящая права отладки.
+file:missing, signed:no, mismatch:running
# день, когда машина вводится в эксплуатацию
+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 - выполнилось и не смогло прочитать всё, поэтому ответ частичный
+ Код завершения 5 - это то, что превращает это в аудит, а не в отчёт, который никто не читает: задача молчит, пока машина не уйдёт в дрейф, а в ночь, когда это случится, кого-то зовут.
Снимайте эталонное состояние из сеанса с повышенными правами. Без прав администратора диспетчер перечисляет меньше записей и отказывает в большем числе из перечисленных. Снимок записывает, был ли администратором сделавший его аккаунт, чтобы сравнение могло сказать об этом, а не сообщать как удалённые записи, которых никто не удалял, - но эталонное состояние, в котором не хватает половины машины, остаётся эталонным состоянием, в котором не хватает половины машины.
+git diff его читает. Аудитор, у которого нет этого инструмента, всё равно может прочитать файл, а система контроля версий уже отвечает на вопрос когда.Bir denetim, makinede olanların listesi değildir. Makinede olanla olması gerekenin arasındaki farktır - ve düz bir Windows'ta ikinci yarıyı hiçbir şey kaydetmez.
+Dağıtım sırasında alınmış bir anlık görüntü ve bu akşam makineyle bir karşılaştırma. Yapılandırma, yalnızca başlayan ya da duran şeyden ayrı bildirilir; böylece birinin değiştirdiği tek başlangıç türü, tesadüfen çalışan kırk hizmetin altında gömülmez.
+bws snapshot diff baseline.json --live
Her birinde bir anlık görüntü alın ve iki dosyayı karşılaştırın - herhangi bir yerde, makinelerin hiçbiri orada olmadan. Dosyalar makinenin adını ve onları alan hesabı taşır.
+bws snapshot diff staging.json production.json
Bakmaya değer biçimleri bulan sorgular: yürütülebilir dosyası kaybolmuş bir hizmet, imzasız biri, devre dışıyken çalışan biri, hata ayıklama hakları isteyen biri.
+file:missing, signed:no, mismatch:running
# makinenin hizmete girdiği gün
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# her gece, zamanlanmış bir görevden
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - yapılandırma sapması yok
+# 5 - yapılandırma saptı ve drift.json neyin olduğunu söyler
+# 3 - çalıştı ve her şeyi okuyamadı, yani yanıt kısmi
+ 5 çıkış kodu, bunu kimsenin okumadığı bir rapor değil bir denetim yapan şeydir: görev, makine sapana kadar sessizdir ve sapma gecesi birisi uyarılır.
Temel durumu yükseltilmiş bir oturumdan alın. Yönetici hakları olmadan yönetici daha az öğe listeler ve listelediklerinin daha fazlasını reddeder. Anlık görüntü, onu alan hesabın yönetici olup olmadığını kaydeder; böylece karşılaştırma, kimsenin kaldırmadığı öğeleri kaldırılmış olarak bildirmek yerine bunu söyleyebilir - ama yarısı eksik bir makinenin temel durumu, yine de yarısı eksik bir makinenin temel durumudur.
+git diff onu okur. Bu aracı olmayan bir denetçi dosyayı yine okuyabilir ve bir sürüm denetim sistemi ne zaman sorusunu zaten yanıtlar.Аудит - це не список того, що є на машині. Це різниця між тим, що є на машині, і тим, що мало бути, - і нічого в стандартній Windows не записує другої половини.
+Знімок, знятий під час розгортання, і порівняння з машиною сьогодні вночі. Конфігурація повідомляється окремо від того, що просто запустилося чи зупинилося, тож єдиний тип запуску, який хтось змінив, не тоне під сорока службами, що випадково працюють.
+bws snapshot diff baseline.json --live
Зробіть знімок на кожному й порівняйте два файли - будь-де, без присутності жодної з машин. Файли несуть ім'я машини та обліковий запис, що їх зробив.
+bws snapshot diff staging.json production.json
Запити, що знаходять форми, на які варто подивитися: служба, чий виконуваний файл зник, та, що не підписана, та, що працює, хоча вимкнена, та, що просить права налагодження.
+file:missing, signed:no, mismatch:running
# день, коли машина вводиться в експлуатацію
+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 - виконалося й не змогло прочитати все, тож відповідь часткова
+ Код завершення 5 - це те, що робить це аудитом, а не звітом, який ніхто не читає: задача мовчить, доки машина не піде в дрейф, а тієї ночі, коли піде, когось покличуть.
Знімайте еталонний стан із сеансу з підвищеними правами. Без прав адміністратора диспетчер перелічує менше записів і частіше відмовляє щодо того, що перелічує. Знімок записує, чи був обліковий запис, що його зробив, адміністратором, тож порівняння може про це сказати, а не повідомляти про видалення записів, яких ніхто не видаляв, - але еталонний стан без половини машини все одно еталонний стан без половини машини.
+git diff його читає. Аудитор, у якого немає цього інструмента, усе одно може прочитати файл, а система керування версіями вже відповідає на питання коли.Một cuộc kiểm toán không phải danh sách những gì có trên máy. Nó là hiệu giữa những gì có trên máy và những gì lẽ ra phải có - và không có gì trên một Windows nguyên bản ghi lại nửa thứ hai.
+Một bản chụp lấy lúc triển khai, và một phép so sánh với máy tối nay. Cấu hình được báo riêng với những gì chỉ vừa khởi động hoặc dừng, nên một kiểu khởi động ai đó đã đổi không bị chôn dưới bốn mươi dịch vụ tình cờ đang chạy.
+bws snapshot diff baseline.json --live
Chụp một bản trên mỗi môi trường và so sánh hai tệp - ở bất cứ đâu, không cần máy nào có mặt. Các tệp mang tên máy và tài khoản đã chụp chúng.
+bws snapshot diff staging.json production.json
Các truy vấn tìm ra những dạng đáng xem: một dịch vụ có tệp thực thi đã mất, một dịch vụ chưa ký, một dịch vụ đang chạy dù bị vô hiệu hóa, một dịch vụ yêu cầu quyền gỡ lỗi.
+file:missing, signed:no, mismatch:running
# ngày máy bắt đầu đưa vào hoạt động
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# mỗi đêm, từ một tác vụ theo lịch
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - không có sai lệch cấu hình
+# 5 - cấu hình đã lệch, và drift.json nói là gì
+# 3 - đã chạy và không đọc được hết, nên câu trả lời chỉ là một phần
+ Mã thoát 5 là điều biến việc này thành một cuộc kiểm toán thay vì một báo cáo không ai đọc: tác vụ im lặng cho đến khi máy lệch, và vào đêm nó lệch, có người được gọi.
Lấy mốc chuẩn từ một phiên nâng quyền. Khi không có quyền quản trị, trình quản lý liệt kê ít mục hơn và từ chối nhiều hơn những gì nó liệt kê. Bản chụp ghi lại tài khoản đã chụp nó có phải quản trị viên không, nên phép so sánh có thể nói điều đó thay vì báo các mục là bị xóa trong khi không ai xóa - nhưng một mốc chuẩn thiếu nửa cái máy vẫn là một mốc chuẩn thiếu nửa cái máy.
+git diff đọc được nó. Một kiểm toán viên không có công cụ này vẫn đọc được tệp, và một hệ thống quản lý phiên bản đã trả lời được câu khi nào.审计不是对计算机上现有内容的罗列。它是计算机上现有内容与本应存在的内容之间的差异,而标准的 Windows 里没有任何东西记录后半部分。
+部署时生成的快照,与今晚这台计算机的差异对比。配置与仅仅是启动或停止的内容分开报告,所以那个被某人更改的启动类型,不会淹没在四十个恰好在运行的服务之下。
+bws snapshot diff baseline.json --live
在各自上生成一个快照,然后对比这两个文件:在任何地方都行,不需要任何一台计算机在场。文件中带有计算机名称和生成它的账户。
+bws snapshot diff staging.json production.json
找出值得一看的形态的查询:可执行文件已丢失的服务、未签名的服务、已禁用却仍在运行的服务、请求调试权限的服务。
+file:missing、signed:no、mismatch:running
# 计算机投入使用的那一天
+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 - 已运行但无法读取全部内容,因此答案是部分的
+ 退出代码 5 使它成为一次审计,而不是一份没人读的报告:任务在计算机发生漂移之前保持安静,而发生漂移的那一夜,会有人收到通知。
请从提升权限的会话生成基线。没有管理员权限时,服务管理器列出的条目更少,对所列条目拒绝的操作更多。快照会记录生成它的账户是否是管理员,因此比较结果可以说明这一点,而不是把没人删除过的条目报告为已删除,但缺了一半计算机的基线,仍然是缺了一半计算机的基线。
+git diff 读取。没有这个工具的审计人员也能读这个文件,而版本控制系统已经回答了何时。稽核不是對電腦上現有內容的羅列。它是電腦上現有內容與本應存在的內容之間的差異,而標準的 Windows 裡沒有任何東西記錄後半部分。
+部署時產生的快照,與今晚這台電腦的差異比較。組態與僅僅是啟動或停止的內容分開回報,所以那個被某人變更的啟動類型,不會淹沒在四十個恰好在執行的服務之下。
+bws snapshot diff baseline.json --live
在各自上產生一個快照,然後比較這兩個檔案:在任何地方都行,不需要任何一台電腦在場。檔案中帶有電腦名稱和產生它的帳戶。
+bws snapshot diff staging.json production.json
找出值得一看的形態的查詢:可執行檔已遺失的服務、未簽章的服務、已停用卻仍在執行的服務、要求偵錯權限的服務。
+file:missing、signed:no、mismatch:running
# 電腦投入使用的那一天
+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 - 已執行但無法讀取全部內容,因此答案是部分的
+ 結束代碼 5 使它成為一次稽核,而不是一份沒人讀的報告:工作在電腦發生漂移之前保持安靜,而發生漂移的那一夜,會有人收到通知。
請從提升權限的工作階段產生基準。沒有系統管理員權限時,服務管理員列出的項目更少,對所列項目拒絕的動作更多。快照會記錄產生它的帳戶是否是系統管理員,因此比較結果可以說明這一點,而不是把沒人刪除過的項目回報為已刪除,但缺了一半電腦的基準,仍然是缺了一半電腦的基準。
+git diff 讀取。沒有這個工具的稽核人員也能讀這個檔案,而版本控制系統已經回答了何時。Každý příkaz, každý přepínač a každý návratový kód bws, verze {{version}}. Směrodatná je bws --help a ta je delší - tato stránka je tentýž povrch, rozložený tak, aby se dal číst.
Jedenáct příkazů. snapshot je podstatné jméno a za sebou bere slovo. tool je také podstatné jméno a samotné vypíše nástroje.
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
+ Špatně napsaný příkaz dostane nabídku toho, který jste pravděpodobně měli na mysli, a běh skončí kódem 2, místo aby udělal něco blízkého tomu, co jste chtěli.
$ bws lst
+There is no command lst. Did you mean list?
+ list a showlist je celý stroj, zúžený pomocí --query. show je jedna položka se vším, co je o ní známo - podpis, privilegia, popisovač zabezpečení a paměť, vše čtené pokaždé, protože u jedné položky to stojí asi šedesát milisekund, zatímco u celého stroje vteřinu. Pole, která jsou opravdu prázdná, se vynechají, pokud nezadáte --full. Pole, které nikdo nemohl přečíst, se vypíše vždy, protože jeho vynechání by vypadalo jako odpověď.
stop, start a restartKaždý sestaví plán a provede ho. --dry-run vypíše plán a nic nezmění, --dependents do něj zařadí služby, které by se rozbily, jako samostatné kroky a --timeout říká, jak dlouho smí jeden krok zůstat bez pokroku. Ovladače se odmítají, ne zkoušejí, protože zastavení ovladače jádra často nelze vrátit bez restartu.
kill - pro službu, která se nechce zastavitPožádá službu o zastavení a proces za ní ukončí, jen když to nezabere, takže položka, která se zastaví sama, se nikdy neukončí. Ukončení procesu vezme s sebou každou další službu žijící v tomto procesu, ať se předtím zastavila, nebo ne, a náhled je pojmenuje a pojmenuje proces číslem. --force přeskočí zdvořilý krok a náhled pak ukazuje jeden krok místo dvou. --restart potom všechno vrátí.
Windows tuto myšlenku píše jinak. --force u Stop-Service znamená "i když na tom něco závisí", což je to, co zde dělá --dependents. Proto je tohle samostatný příkaz, a ne přepínač u stop.
start-type - nastavení, ne pohybŘíká, co správce udělá s položkou při příštím startu, a bez --stop nic nepřesouvá: běžící položka běží dál, zastavená zůstane zastavená a plán to říká. disabled je ten, u kterého se vyplatí zastavit, protože správci zabrání položku vůbec spustit, včetně spuštění na vyžádání kvůli něčemu jinému, co ji potřebuje. delayed je automatické, spuštěné o něco později než ostatní automatické položky - slovo, na které se v dotazu ptá start:delayed - a Windows je odmítne u položky ve skupině pořadí načítání, což plán řekne dřív, než se cokoli stane. Každý ze čtyř zapíše, zda položka startuje pozdě, stejně jako sc.exe. --stop, jen vedle disabled, zastaví položku ve stejném plánu, jakmile je nastavení zapsáno.
snapshot create a snapshot diffcreate vždy čte podpisy a hashe, protože snímek se uchovává a porovnává později a snímek bez nich by se při porovnání se snímkem s nimi tvářil, jako by se stroj změnil. diff říká, co se změnilo od prvního souboru ke druhému, nebo od souboru k tomuto stroji s --live. Stránka o snímcích má formát a úvahy za ním.
history - kdo to změnil, ze systémového protokoluZměny typu spouštění a instalace ze systémového protokolu, nejnovější první, s účtem, který Windows zaznamenal. První řádek říká, jak daleko protokol sahá a zda byl vymazán, protože historie je tak dlouhá jako protokol. S názvem jde o změny typu spouštění dané služby - instalace se vypisují jen bez názvu, protože Windows zaznamenává instalaci pod zobrazovaným názvem a nikdy pod názvem služby. Účet se jmenuje tam, kde ho tento stroj umí pojmenovat sám, a jinak se ukáže jako jeho SID, a typy spouštění přicházejí slovy, jak je Windows zapsal.
+tool - hotové odpovědi na běžné problémyTytéž nástroje, které okno ukazuje na kartě Tools. bws tool je vypíše a bws tool fix vypíše rychlé opravy: printer, sound, indexing a search, každá je restart jedné služby Windows spolu s tím, co na ní závisí, zvolená proto, že ji navrhují vlastní stránky Microsoftu k řešení potíží. bws tool fix printer je přesně bws restart Spooler --dependents - týž plán, týž výstup a tytéž návratové kódy - a jako každý zdejší příkaz, který něco mění, se předem neptá, takže --dry-run je způsob, jak se podívat, než se spustí.
license - co je uvnitř staženého souboruNečte vůbec nic - žádného správce služeb, žádný disk, žádnou síť - a odpovídá z registru zkompilovaného do spustitelného souboru. --components změní upozornění na každou součást s její verzí, licencí a původem. Stejná sada, jakou nese soupis součástí zveřejněný vedle stažení, protože oba vznikají z jednoho registru, a důvod, proč za to stojí: program je jeden samostatný soubor, takže vedle něj není nic, co by mohl skener číst.
Níže uvedené plány byly ověřeny pomocí --dry-run proti programu, který tato stránka popisuje. Příkaz, který něco mění, se předem neptá, takže --dry-run je způsob, jak se podívat, než se spustí. Spooler zastupuje libovolnou službu - dosaďte název té své.
bws list každá služba a ovladač na tomto stroji
+bws list --query "start:auto !status:running" co by mělo běžet a neběží
+bws list --query "status:running" --memory co používá proces každé běžící položky
+bws show Spooler všechno, co je o jedné položce známo
+bws show Spooler --full i pole, která jsou opravdu prázdná
+ bws restart Spooler --dry-run plán a nic jiného
+bws restart Spooler --dependents restartovat spolu s tím, co na ní závisí
+bws stop Spooler --dependents --timeout 120 povolit dvě minuty na krok bez pokroku
+bws start-type WSearch delayed --dry-run spustit o něco později než ostatní automatické položky
+bws start-type Spooler disabled --stop zakázat a zastavit v jednom plánu
+ bws kill Spooler --dry-run proces a každá služba, která v něm žije
+bws kill Spooler --restart ukončit proces, jen když zastavení selže, potom vše vrátit
+bws kill Spooler --force --dry-run jeden krok místo dvou: proces ukončen hned
+ bws snapshot create before.json --note "before the patch" zmrazit stroj s poznámkou uloženou uvnitř
+bws snapshot diff before.json after.json dva soubory - dva dny, nebo dva stroje
+bws snapshot diff before.json --live soubor proti tomuto stroji, jaký je teď
+bws snapshot diff before.json --live --exit-code totéž, skončí kódem 5, pokud se konfigurace odchýlila
+ bws history každá změna typu spouštění a instalace, kterou systémový protokol obsahuje
+bws history Spooler změny typu spouštění jedné služby
+bws history --json totéž jako dokument, s protokolem a změnami
+ bws tool nástroje, které existují
+bws tool fix rychlé opravy a služba za každou z nich
+bws tool fix sound --dry-run plán restartu dvou zvukových služeb
+bws tool fix printer restartovat Print Spooler s tím, co na něm závisí
+ bws license --components každá součást, její verze, licence a původ
+bws --version verze tohoto spustitelného souboru
+ # položky, které by měly běžet a neběží, jako objekty
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# nepodepsané soubory do tabulky
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# co jedna služba potřebuje
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# noční kontrola, která větví podle návratového kódu
+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" }
+}
+ rem druhý příkaz jen když první neskončil čistě
+bws restart Spooler || echo the restart did not end cleanly
+
+rem v dávkovém souboru se zapnutým zpožděným rozvinutím potřebuje ! stříšku
+bws list --query "start:auto ^!status:running"
+ {{switch_count}} jich je. Třetí sloupec jsou příkazy, ke kterým každý patří - přepínač předaný příkazu, který pro něj nemá využití, je chyba s tímto seznamem uvnitř, a ne tiše ignorovaný příznak.
+ {{table:switches}} +{{exit_code_count}} konců a každý je pro skript jiná věc, kterou udělat. Data jdou na standardní výstup a všechno ostatní na standardní chybový výstup, takže bws list --json | jq funguje a varování nikdy nepřistane ve vašem JSONu.
Každý dokument JSON je čisté ASCII: písmeno mimo něj se zapíše jako šestiznakový escape, který každý čtecí program JSON převede zpět na písmeno, takže bws list --json > file.json je platné UTF-8 a | ConvertFrom-Json to přečte správně, ať je konzole nastavena na jakoukoli kódovou stránku. V textu, který čte člověk, se znak, který by terminál posunul, místo aby se vytiskl - tabulátor, zalomení řádku, escape sekvence, přepsání směru - ukáže jako svůj kódový bod, <U+001B>.
-- ukončuje přepínače, takže službu, jejíž název začíná pomlčkou, lze přesto pojmenovat: bws show -- -odd. Příkazové řádky, které vám nástroj dává, jsou psané pro PowerShell: název s mezerou jde do dvojitých uvozovek, což cmd čte stejně, a název, který by PowerShell uvnitř nich rozvinul, například MSSQL$SQLEXPRESS, jde do jednoduchých uvozovek.
Ctrl+C má tři úrovně, každá říká, co stojí ta další. První přestane postupovat vpřed a stále vrátí, co bylo odebráno, druhá nechá věci tak, jak jsou, a stále vytiskne zprávu, třetí proces ukončí. Běh zastavený ručně končí kódem 4, i když každý krok ještě dorazil.
Zavření okna konzole se počítá jako první Ctrl+C. Windows pak programu dává pět sekund a v nich tento přestane postupovat vpřed a vrátí, co shodil. Odhlášení a vypnutí ho ukončí bez jakéhokoli varování, na které by mohl reagovat, a přerušená vzdálená relace možná také.
+Tvar, pro který byl tento nástroj vytvořen: zmrazit stroj, když je prokazatelně v pořádku, a pak se každou noc ptát, zda stále je.
+# den, kdy stroj jde do provozu
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# každou noc z naplánované úlohy
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - žádný drift konfigurace
+# 5 - konfigurace se odchýlila a drift.json říká co
+# 3 - proběhlo to a nešlo přečíst všechno, takže odpověď je částečná
+ Okno je druhá polovina téhož jádra: {{archive_window}} ho obsahuje a stránka ke stažení říká, co který archiv je.
BetterWindowsServices.exe bere jeden argument určený člověku: --catalogue otevře vývojářský list zobrazující každou součást okna v každém stavu a nic nečte z vašeho stroje. Druhý, --carry, je způsob, jak okno předá to, co zobrazovalo, vlastní kopii, kterou restartuje jako správce. Nikdo ho nepíše a cokoli v něm, co by toto okno nemohlo napsat, se odmítne.
Setiap perintah, setiap opsi, dan setiap kode keluar bws, versi {{version}}. bws --help adalah yang berwibawa dan lebih panjang - halaman ini adalah permukaan yang sama, ditata agar bisa dibaca.
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?
+ list dan showlist 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 restartMasing-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 berhentiIa 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 gerakanIa 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 diffcreate 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 SystemPerubahan 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 umumAlat-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 unduhIa 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.
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.
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
+ 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
+ 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
+ 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
+ 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
+ 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
+ bws license --components setiap komponen, versinya, lisensinya, dan asalnya
+bws --version versi berkas eksekusi ini
+ # 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" }
+}
+ 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"
+ {{switch_count}} 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.
+ {{table:switches}} +{{exit_code_count}} 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.
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.
+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: {{archive_window}} memuatnya, dan halaman unduhan menyatakan apa masing-masing arsip.
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.
bws バージョン {{version}} のすべてのコマンド、オプション、終了コード。権威あるものは 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 と showlist はマシン全体で、--query で絞り込みます。show は 1 つのエントリについてわかっているすべてを表示します。署名、特権、セキュリティ記述子、メモリはすべて毎回読み取られます。1 つのエントリなら約 60 ミリ秒で済むのに対し、マシン全体では 1 秒かかるためです。本当に空のフィールドは、--full を指定しない限り省かれます。誰も読み取れなかったフィールドは、省くと答えのように見えてしまうため、常に表示されます。
stop、start、restartそれぞれ、プランを作成して実行します。--dry-run はプランを表示するだけで何も変更しません。--dependents は、壊れるサービスを独立したステップとしてプランに含めます。--timeout は、1 つのステップが進捗なしで続けられる時間を指定します。ドライバーは、試行されずに拒否されます。カーネルドライバーの停止は、再起動なしには元に戻せないことが多いためです。
kill:止まらないサービスのためにサービスに停止を要求し、それがうまくいかない場合にのみその背後のプロセスを終了します。そのため、自力で停止するエントリが強制終了されることはありません。プロセスを終了すると、そのプロセスに存在するほかのすべてのサービスも、先に停止していたかどうかにかかわらず巻き込まれます。プレビューはそれらの名前を示し、プロセスを番号で示します。--force は丁寧なステップを省略し、プレビューには 2 つではなく 1 つのステップが表示されます。--restart は、あとですべてを元に戻します。
Windows は、この考え方を異なる形で表します。Stop-Service の --force は「何かが依存していても」を意味し、ここでは --dependents がそれにあたります。これが、stop のオプションではなく独立したコマンドになっている理由です。
start-type:動かすのではなく、設定次回の起動時にマネージャーがエントリをどう扱うかを設定します。--stop がなければ何も動かしません。実行中のエントリは実行されたまま、停止中のものは停止したままで、プランもそう伝えます。disabled は立ち止まって考える価値があります。ほかの何かが必要としたときのオンデマンド開始を含めて、マネージャーがエントリを開始すること自体を止めるからです。delayed は自動で、ほかの自動のエントリより少しあとに開始されます。クエリで start:delayed が尋ねる語がこれです。Windows はロード順グループに属するエントリに対してこれを拒否し、プランは何かが起きる前にそのことを伝えます。4 つのいずれも、sc.exe と同様に、エントリが遅れて開始されるかどうかを書き込みます。--stop は disabled と組み合わせたときのみ使え、設定を書き込んだあと、同じプランの中でエントリを停止します。
snapshot create と snapshot diffcreate は常に署名とハッシュを読み取ります。スナップショットは保存されてあとで比較されるため、それらがないものを、あるものと比較すると、マシンが変わったかのように見えてしまうからです。diff は、最初のファイルから 2 番目のファイルへ、または --live を付けてファイルからこのマシンへ、何が変わったかを示します。スナップショットのページに、形式と考え方があります。
history:誰が変更したか、System ログからSystem ログから、スタートアップの種類の変更とインストールを新しい順に、Windows が記録したアカウントとともに表示します。最初の行は、ログがどこまでさかのぼるか、消去されたかどうかを示します。履歴はログの長さまでしか存在しないからです。名前を指定すると、そのサービスのスタートアップの種類の変更になります。インストールは、名前なしの場合のみ一覧に出ます。Windows はインストールを表示名で記録し、サービス名では記録しないためです。アカウントは、このマシンが自分で名前を解決できる場合はその名前で、できない場合は SID で表示されます。スタートアップの種類は、Windows が書いた言葉のまま表示されます。
+tool:よくある問題への既製の答えウィンドウの Tools タブに表示されるのと同じツールです。bws tool はそれらを一覧表示し、bws tool fix はクイック修正を一覧表示します。printer、sound、indexing、search で、それぞれ 1 つの Windows サービスとそれに依存するものの再起動です。Microsoft 自身のトラブルシューティングのページが提案しているため選ばれました。bws tool fix printer は、まさに bws restart Spooler --dependents と同じです。同じプラン、同じ出力、同じ終了コードです。そして、ここにある何かを変更するすべてのコマンドと同じく、事前には確認しないため、実行前に確認するには --dry-run を使います。
license:ダウンロードしたファイルの中身何も読み取りません。サービス マネージャーも、ディスクも、ネットワークも使わず、実行ファイルにコンパイルされた台帳から答えます。--components を付けると、通知がすべてのコンポーネントとそのバージョン、ライセンス、出所の一覧になります。ダウンロードの横で公開されている部品表と同じ内容です。どちらも 1 つの台帳から生成されるためで、これが価値のある理由です。プログラムは自己完結型の 1 つのファイルであり、スキャナーが読むものが隣にありません。
以下のプランは、このページが説明するプログラムに対して --dry-run で確認したものです。何かを変更するコマンドは事前に確認しないため、実行前に確認するには --dry-run を使います。Spooler は任意のサービスを表します。ご自身のサービスの名前に置き換えてください。
bws list このマシン上のすべてのサービスとドライバー
+bws list --query "start:auto !status:running" 起動しているはずなのに起動していないもの
+bws list --query "status:running" --memory 実行中の各エントリのプロセスが使っているもの
+bws show Spooler 1 つのエントリについてわかっているすべて
+bws show Spooler --full 本当に空のフィールドも含める
+ bws restart Spooler --dry-run プランだけで、ほかには何もしない
+bws restart Spooler --dependents 依存するものとともに再起動する
+bws stop Spooler --dependents --timeout 120 進捗なしで 1 ステップあたり 2 分まで許可する
+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 2 ステップではなく 1 ステップ。プロセスはすぐに終了される
+ bws snapshot create before.json --note "before the patch" メモを中に入れて、マシンを固定する
+bws snapshot diff before.json after.json 2 つのファイル。2 日間、または 2 台のマシン
+bws snapshot diff before.json --live ファイルを、現在のこのマシンと比較する
+bws snapshot diff before.json --live --exit-code 同じ比較で、構成がドリフトしていれば 5 で終了する
+ bws history System ログにあるスタートアップの種類の変更とインストールのすべて
+bws history Spooler 1 つのサービスのスタートアップの種類の変更
+bws history --json 同じ内容をドキュメントとして。ログと変更を含む
+ bws tool あるツールの一覧
+bws tool fix クイック修正と、それぞれの背後にあるサービス
+bws tool fix sound --dry-run 2 つのオーディオ サービスを再起動するプラン
+bws tool fix printer Print Spooler を、依存するものとともに再起動する
+ bws license --components すべてのコンポーネント、バージョン、ライセンス、出所
+bws --version この実行ファイルのバージョン
+ # 起動しているはずなのに起動していないエントリを、オブジェクトとして
+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
+
+# 1 つのサービスが必要とするもの
+(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" }
+}
+ rem 最初のコマンドが正常に終了しなかった場合のみ、2 番目のコマンドを実行する
+bws restart Spooler || echo the restart did not end cleanly
+
+rem 遅延展開を有効にしたバッチファイルでは、! の前にキャレット(^)が必要
+bws list --query "start:auto ^!status:running"
+ 全部で {{switch_count}} 個あります。3 列目は、各オプションが属するコマンドです。使い道のないコマンドにオプションを渡すとエラーになり、その一覧が示されます。黙って無視されるフラグではありません。
+ {{table:switches}} +終わり方は {{exit_code_count}} 通りあり、それぞれがスクリプトにとって異なる意味を持ちます。データは標準出力に、それ以外はすべて標準エラーに出力されるので、bws list --json | jq が動作し、警告が JSON に混ざることはありません。
すべての JSON ドキュメントは純粋な ASCII です。ASCII 外の文字は 6 文字のエスケープとして書かれ、すべての JSON リーダーが元の文字に戻します。そのため、bws list --json > file.json は有効な UTF-8 になり、| ConvertFrom-Json は、コンソールがどのコードページに設定されていても正しく読み取ります。人が読むテキストでは、印字されずにターミナルを動かしてしまう文字(タブ、改行、エスケープシーケンス、方向の上書き)は、そのコードポイント <U+001B> として表示されます。
-- はオプションの終わりを示すので、ダッシュで始まる名前のサービスも指定できます。bws show -- -odd のようにします。ツールが提示するコマンドラインは PowerShell 向けに書かれています。スペースを含む名前は二重引用符で囲みます。cmd も同じように読みます。MSSQL$SQLEXPRESS のように、PowerShell が二重引用符の中で展開してしまう名前は、一重引用符で囲みます。
Ctrl+C には 3 つのレベルがあり、それぞれが次のレベルの代償を示します。最初のものは先に進むのをやめ、取り外したものを元に戻します。2 番目は、そのままの状態にして、レポートを表示します。3 番目はプロセスを終了します。手動で止めた実行は、すべてのステップが到達していても 4 で終了します。
コンソール ウィンドウを閉じることは、最初の Ctrl+C として扱われます。その後、Windows はプログラムに 5 秒を与え、その間にこのプログラムは先に進むのをやめ、停止したものを元に戻します。サインアウトとシャットダウンは、対応できる予告なしに終了させ、切断されたリモートセッションもそうなることがあります。
+このツールが想定している形です。マシンが正常だとわかっているときに固定し、そのあと毎晩、まだ正常かどうかを尋ねます。
+# マシンが稼働を開始する日
+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 - 実行されたが、すべてを読み取れなかった。そのため答えは部分的
+ ウィンドウは、同じエンジンのもう半分です。{{archive_window}} に入っていて、各アーカイブが何であるかはダウンロードのページに書かれています。
BetterWindowsServices.exe は、人が使うための引数を 1 つ受け付けます。--catalogue は、ウィンドウのすべてのコンポーネントをすべての状態で表示する開発者向けのシートを開き、マシンからは何も読み取りません。もう 1 つの --carry は、ウィンドウが表示していた内容を、管理者として再起動する自分自身のコピーに引き渡す方法です。誰も手で入力するものではなく、そのウィンドウが書けるはずのないものが含まれていれば拒否されます。
bws 버전 {{version}}의 모든 명령, 모든 옵션, 모든 종료 코드입니다. 기준이 되는 것은 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와 showlist는 --query로 좁힌 컴퓨터 전체입니다. show는 한 항목에 대해 알려진 모든 것입니다. 서명, 권한, 보안 설명자, 메모리를 모두 매번 읽는데, 항목 하나라면 약 60밀리초가 들지만 컴퓨터 전체라면 1초가 들기 때문입니다. 정말로 비어 있는 필드는 --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 diffcreate는 항상 서명과 해시를 읽습니다. 스냅샷은 보관했다가 나중에 비교하므로, 서명과 해시가 없는 스냅샷을 있는 스냅샷과 비교하면 컴퓨터가 바뀐 것처럼 보이기 때문입니다. 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 진행 없이 단계당 2분까지 허용
+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 로그에 있는 모든 시작 유형 변경과 설치
+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 이 실행 파일의 버전
+ # 떠 있어야 하는데 떠 있지 않은 항목을 개체로
+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" }
+}
+ rem 첫 번째 명령이 깨끗하게 끝나지 않았을 때만 두 번째 명령 실행
+bws restart Spooler || echo the restart did not end cleanly
+
+rem 지연된 확장을 켠 배치 파일에서는 !에 캐럿이 필요함
+bws list --query "start:auto ^!status:running"
+ 옵션은 {{switch_count}}개입니다. 세 번째 열은 각 옵션이 속한 명령입니다. 쓸모가 없는 명령에 전달한 옵션은 조용히 무시되는 플래그가 아니라, 그 목록이 담긴 오류입니다.
+ {{table:switches}} +끝나는 방식은 {{exit_code_count}}가지이며, 각각은 스크립트가 해야 할 서로 다른 일입니다. 데이터는 표준 출력으로, 나머지는 모두 표준 오류로 나가므로 bws list --json | jq가 동작하고 경고가 JSON에 섞이지 않습니다.
모든 JSON 문서는 순수 ASCII입니다. ASCII 밖의 글자는 여섯 글자 이스케이프로 쓰이고 모든 JSON 판독기가 이를 글자로 되돌리므로, bws list --json > file.json은 유효한 UTF-8이고 | ConvertFrom-Json은 콘솔의 코드 페이지가 무엇이든 올바르게 읽습니다. 사람이 읽는 텍스트에서는, 출력되는 대신 터미널을 움직이게 할 글자(탭, 줄 바꿈, 이스케이프 시퀀스, 방향 재정의)가 코드 포인트 <U+001B>로 표시됩니다.
--는 옵션의 끝을 뜻하므로, 이름이 대시로 시작하는 서비스도 bws show -- -odd처럼 지정할 수 있습니다. 도구가 건네주는 명령줄은 PowerShell용으로 작성됩니다. 공백이 있는 이름은 큰따옴표에 넣으며 cmd도 같은 방식으로 읽고, MSSQL$SQLEXPRESS처럼 PowerShell이 큰따옴표 안에서 확장해 버릴 이름은 작은따옴표에 넣습니다.
Ctrl+C에는 세 단계가 있으며, 각각 다음 단계의 비용을 알려 줍니다. 첫 번째는 앞으로 나아가기를 멈추고 가져간 것을 되돌려 놓으며, 두 번째는 상태를 그대로 두고 보고서를 출력하며, 세 번째는 프로세스를 종료합니다. 수동으로 멈춘 실행은 모든 단계가 도달했더라도 4로 끝납니다.
콘솔 창을 닫는 것은 첫 번째 Ctrl+C로 간주됩니다. 그 뒤 Windows는 프로그램에 5초를 주며, 그동안 이 프로그램은 앞으로 나아가기를 멈추고 내려 둔 것을 되돌려 놓습니다. 로그아웃과 종료는 대응할 수 있는 경고 없이 프로그램을 끝내며, 끊어진 원격 세션도 그럴 수 있습니다.
+이 도구가 만들어진 이유인 형태입니다. 컴퓨터가 정상이라고 알려져 있을 때 고정하고, 그 뒤 매일 밤 여전히 그런지 묻습니다.
+# 컴퓨터가 운영에 들어가는 날
+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 - 실행되었지만 모든 것을 읽지 못했으므로 답이 부분적임
+ 창은 같은 엔진의 나머지 절반입니다. {{archive_window}}에 들어 있으며, 각 압축 파일이 무엇인지는 다운로드 페이지에 있습니다.
BetterWindowsServices.exe는 사람을 위한 인수를 하나 받습니다. --catalogue는 창의 모든 구성 요소를 모든 상태로 보여 주는 개발자용 시트를 열며, 컴퓨터에서는 아무것도 읽지 않습니다. 두 번째인 --carry는 창이 보여 주던 것을, 관리자 권한으로 다시 시작하는 자신의 복사본에 넘기는 방법입니다. 아무도 직접 입력하지 않으며, 그 안에 그 창이 쓸 수 없었을 내용이 있으면 거부됩니다.
Elke opdracht, elke optie en elke afsluitcode van bws, versie {{version}}. bws --help is de gezaghebbende en is langer - deze pagina is hetzelfde oppervlak, gerangschikt om te lezen.
Elf opdrachten. snapshot is een zelfstandig naamwoord en neemt een woord erna. tool is ook een zelfstandig naamwoord, en op zichzelf toont het de tools.
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
+ Een verkeerd getypte opdracht krijgt degene aangeboden die u waarschijnlijk bedoelde, en de uitvoering eindigt met code 2 in plaats van iets te doen dat dicht bij uw vraag in de buurt komt.
$ bws lst
+There is no command lst. Did you mean list?
+ list en showlist is de hele machine, beperkt door --query. show is één item met alles wat erover bekend is - de handtekening, de bevoegdheden, de beveiligingsdescriptor en het geheugen, alles elke keer gelezen, omdat dat over één item ongeveer zestig milliseconden kost waar het over de hele machine een seconde kost. Velden die echt leeg zijn blijven weg tenzij u --full meegeeft. Een veld dat niemand kon lezen wordt hoe dan ook afgedrukt, omdat het weglaten ervan op een antwoord zou lijken.
stop, start en restartElk bouwt een plan en voert het uit. --dry-run drukt het plan af en wijzigt niets, --dependents zet de services die zouden kapotgaan als aparte stappen erin, en --timeout zegt hoe lang één stap zonder voortgang mag gaan. Stuurprogramma's worden geweigerd in plaats van geprobeerd, omdat het stoppen van een kernelstuurprogramma vaak niet ongedaan te maken is zonder herstart.
kill - voor een service die niet wil stoppenHet vraagt de service te stoppen en beëindigt het proces erachter alleen als dat niet werkt, dus een item dat uit zichzelf stopt wordt nooit beëindigd. Het beëindigen van een proces neemt elke andere service die in dat proces leeft mee, of ze nu eerst waren gestopt of niet, en de voorvertoning noemt ze en noemt het proces bij nummer. --force slaat de beleefde stap over en de voorvertoning toont dan één stap in plaats van twee. --restart brengt achteraf alles terug.
Windows spelt dit idee anders. --force bij Stop-Service betekent "ook als er iets van afhangt", wat --dependents hier doet. Daarom is dit een opdracht op zich en geen optie van stop.
start-type - een instelling, geen bewegingHet zegt wat de beheerder bij de volgende opstart met een item doet, en zonder --stop verplaatst het niets: een item dat draait blijft draaien, een gestopt item blijft gestopt, en het plan zegt dat. disabled is degene om even bij stil te staan, omdat het voorkomt dat de beheerder het item überhaupt start, ook op verzoek voor iets anders dat het nodig heeft. delayed is automatisch, een beetje na de andere automatische items gestart - het woord waarnaar start:delayed in een query vraagt - en Windows weigert het voor een item in een laadvolgordegroep, wat het plan zegt voordat er iets gebeurt. Elk van de vier schrijft of het item laat start, zoals sc.exe doet. --stop, alleen naast disabled, stopt het item in hetzelfde plan zodra de instelling is geschreven.
snapshot create en snapshot diffcreate leest altijd handtekeningen en hashes, omdat een momentopname wordt bewaard en later vergeleken en een zonder die gegevens bij vergelijking met een met die gegevens zou doen alsof de machine was veranderd. diff zegt wat er veranderde van het eerste bestand naar het tweede, of van een bestand naar deze machine met --live. De pagina over momentopnamen heeft het formaat en de redenering.
history - wie het heeft gewijzigd, uit het systeemlogboekWijzigingen van het opstarttype en installaties uit het systeemlogboek, nieuwste eerst, met het account dat Windows heeft vastgelegd. De eerste regel zegt hoe ver het logboek teruggaat en of het is gewist, omdat een geschiedenis maar zo lang is als het logboek. Met een naam zijn het de wijzigingen van het opstarttype van die service - installaties worden alleen zonder naam getoond, omdat Windows een installatie onder de weergavenaam vastlegt en nooit onder de servicenaam. Een account wordt genoemd waar deze machine het zelf kan noemen en anders als zijn SID getoond, en opstarttypes komen in de woorden die Windows schreef.
+tool - kant-en-klare antwoorden op veelvoorkomende problemenDezelfde tools die het venster op het tabblad Tools toont. bws tool toont ze en bws tool fix toont de snelle oplossingen: printer, sound, indexing en search, elk een herstart van één Windows-service samen met wat ervan afhangt, gekozen omdat de eigen probleemoplossingspagina's van Microsoft het voorstellen. bws tool fix printer is precies bws restart Spooler --dependents - hetzelfde plan, dezelfde uitvoer en dezelfde afsluitcodes - en zoals elke opdracht hier die iets wijzigt vraagt het niet eerst, dus --dry-run is de manier om te kijken voordat het draait.
license - wat er in het gedownloade bestand zitHet leest helemaal niets - geen servicebeheerder, geen schijf, geen netwerk - en antwoordt uit een register dat in het uitvoerbare bestand is gecompileerd. --components verandert de mededeling in elk onderdeel met zijn versie, zijn licentie en waar het vandaan kwam. Dezelfde set die de materiaallijst naast de download bevat, omdat beide uit één register worden gemaakt, en de reden dat het de moeite waard is: het programma is één zelfstandig bestand, dus er is niets ernaast dat een scanner kan lezen.
De onderstaande plannen zijn met --dry-run gecontroleerd tegen het programma dat deze pagina beschrijft. Een opdracht die iets wijzigt vraagt niet eerst, dus --dry-run is de manier om te kijken voordat het draait. Spooler staat voor elke service - zet de naam van de uwe op zijn plaats.
bws list elke service en elk stuurprogramma op deze machine
+bws list --query "start:auto !status:running" wat zou moeten draaien en niet draait
+bws list --query "status:running" --memory wat het proces van elk draaiend item gebruikt
+bws show Spooler alles wat over één item bekend is
+bws show Spooler --full ook de velden die echt leeg zijn
+ bws restart Spooler --dry-run het plan, en verder niets
+bws restart Spooler --dependents herstart het samen met wat ervan afhangt
+bws stop Spooler --dependents --timeout 120 sta twee minuten per stap zonder voortgang toe
+bws start-type WSearch delayed --dry-run start het een beetje na de andere automatische items
+bws start-type Spooler disabled --stop schakel het uit en stop het in één plan
+ bws kill Spooler --dry-run het proces, en elke service die erin leeft
+bws kill Spooler --restart beëindig het proces alleen als een stop mislukt, breng dan alles terug
+bws kill Spooler --force --dry-run één stap in plaats van twee: het proces meteen beëindigd
+ bws snapshot create before.json --note "before the patch" leg de machine vast, met een notitie erin bewaard
+bws snapshot diff before.json after.json twee bestanden - twee dagen, of twee machines
+bws snapshot diff before.json --live het bestand tegen deze machine zoals ze nu is
+bws snapshot diff before.json --live --exit-code hetzelfde, eindigend met 5 als de configuratie is afgedreven
+ bws history elke wijziging van het opstarttype en elke installatie die het systeemlogboek bevat
+bws history Spooler de wijzigingen van het opstarttype van één service
+bws history --json hetzelfde als document, met logboek en wijzigingen
+ bws tool de tools die er zijn
+bws tool fix de snelle oplossingen, en de service achter elk
+bws tool fix sound --dry-run het plan om de twee audioservices te herstarten
+bws tool fix printer herstart de Print Spooler met wat ervan afhangt
+ bws license --components elk onderdeel, zijn versie, zijn licentie en waar het vandaan kwam
+bws --version de versie van dit uitvoerbare bestand
+ # de items die zouden moeten draaien en niet draaien, als objecten
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# de niet-ondertekende bestanden, in een spreadsheet
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# wat één service nodig heeft
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# een nachtelijke controle die vertakt op de afsluitcode
+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" }
+}
+ rem een tweede opdracht alleen als de eerste niet schoon eindigde
+bws restart Spooler || echo the restart did not end cleanly
+
+rem in een batchbestand met vertraagde uitbreiding aan heeft de ! een dakje nodig
+bws list --query "start:auto ^!status:running"
+ {{switch_count}} stuks. De derde kolom zijn de opdrachten waartoe elk behoort - een optie die aan een opdracht wordt meegegeven die er geen gebruik voor heeft is een fout met die lijst erin, in plaats van een vlag die stilletjes wordt genegeerd.
+ {{table:switches}} +{{exit_code_count}} eindes, en elk daarvan is iets anders voor een script om te doen. Gegevens gaan naar de standaarduitvoer en al het andere naar de standaardfout, zodat bws list --json | jq werkt en een waarschuwing nooit in uw JSON belandt.
Elk JSON-document is platte ASCII: een letter daarbuiten wordt geschreven als een escape van zes tekens die elke JSON-lezer terugverandert in de letter, dus bws list --json > file.json is geldige UTF-8 en | ConvertFrom-Json leest het goed welke codepagina de console ook heeft. In de tekst die een mens leest wordt een teken dat de terminal zou verplaatsen in plaats van afdrukken - een tab, een regeleinde, een escapereeks, een richtingsoverschrijving - getoond als zijn codepunt, <U+001B>.
-- beëindigt de opties, zodat een service waarvan de naam met een streepje begint toch kan worden genoemd: bws show -- -odd. De opdrachtregels die het hulpmiddel u geeft zijn voor PowerShell geschreven: een naam met een spatie gaat tussen dubbele aanhalingstekens, wat cmd op dezelfde manier leest, en een naam die PowerShell daarbinnen zou uitbreiden, zoals MSSQL$SQLEXPRESS, gaat tussen enkele aanhalingstekens.
Ctrl+C heeft drie niveaus, elk zegt wat het volgende kost. Het eerste stopt met vooruitgaan en zet nog terug wat was weggenomen, het tweede laat dingen zoals ze zijn en drukt nog het rapport af, het derde beëindigt het proces. Een met de hand gestopte uitvoering eindigt met 4, ook als elke stap nog was aangekomen.
Het sluiten van het consolevenster telt als de eerste Ctrl+C. Windows geeft een programma daarna vijf seconden, en daarin stopt dit met vooruitgaan en zet het terug wat het had neergehaald. Afmelden en afsluiten beëindigen het zonder enige waarschuwing waarop het kon handelen, en een weggevallen sessie op afstand mogelijk ook.
+De vorm waarvoor dit hulpmiddel is gebouwd: leg de machine vast wanneer ze bewezen goed is, en vraag dan elke nacht of ze dat nog is.
+# de dag dat de machine in gebruik gaat
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# elke nacht, vanuit een geplande taak
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - geen configuratiedrift
+# 5 - de configuratie is afgedreven, en drift.json zegt wat
+# 3 - het draaide en kon niet alles lezen, dus het antwoord is gedeeltelijk
+ Het venster is de andere helft van dezelfde engine: {{archive_window}} bevat het, en de downloadpagina zegt wat elk archief is.
BetterWindowsServices.exe neemt één argument dat voor een mens is bedoeld: --catalogue opent een ontwikkelaarsblad met elk onderdeel van het venster in elke toestand, en leest niets van uw machine. Een tweede, --carry, is hoe een venster doorgeeft wat het toonde aan de kopie van zichzelf die het als beheerder herstart. Niemand typt het, en alles erin wat dat venster niet kon hebben geschreven wordt geweigerd.
Fiecare comandă, fiecare opțiune și fiecare cod de ieșire al lui bws, versiunea {{version}}. Autoritar este bws --help, care este mai lung - această pagină este aceeași suprafață, aranjată pentru a fi citită.
Unsprezece comenzi. snapshot este un substantiv și primește un cuvânt după el. tool este tot un substantiv, iar singur listează instrumentele.
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
+ O comandă scrisă greșit primește oferta celei pe care probabil ați vrut-o, iar rularea se încheie cu codul 2, în loc să facă ceva apropiat de ce ați cerut.
$ bws lst
+There is no command lst. Did you mean list?
+ list și showlist este toată mașina, restrânsă cu --query. show este o singură intrare cu tot ce se știe despre ea - semnătura, privilegiile, descriptorul de securitate și memoria, toate citite de fiecare dată, pentru că peste o singură intrare asta costă cam șaizeci de milisecunde, în timp ce peste toată mașina costă o secundă. Câmpurile cu adevărat goale sunt omise dacă nu dați --full. Un câmp pe care nimeni nu l-a putut citi este tipărit oricum, pentru că omiterea lui ar arăta ca un răspuns.
stop, start și restartFiecare construiește un plan și îl execută. --dry-run tipărește planul și nu schimbă nimic, --dependents pune în el, ca pași de sine stătători, serviciile care s-ar defecta, iar --timeout spune cât timp poate merge un pas fără progres. Driverele sunt refuzate, nu încercate, pentru că oprirea unui driver de nucleu adesea nu se poate anula fără repornire.
kill - pentru un serviciu care nu vrea să se opreascăCere serviciului să se oprească și încheie procesul din spatele lui doar dacă asta nu funcționează, așa că o intrare care se oprește singură nu este niciodată încheiată. Încheierea unui proces ia cu sine fiecare alt serviciu care trăiește în acel proces, indiferent dacă s-a oprit mai întâi sau nu, iar previzualizarea le numește și numește procesul prin număr. --force sare peste pasul politicos, iar previzualizarea arată atunci un pas în loc de doi. --restart readuce totul după aceea.
Windows scrie această idee altfel. --force la Stop-Service înseamnă "chiar dacă ceva depinde de el", ceea ce face aici --dependents. De aceea aceasta este o comandă proprie și nu o opțiune a lui stop.
start-type - o setare, nu o mișcareSpune ce va face managerul cu o intrare la următoarea pornire și, fără --stop, nu mută nimic: o intrare care rulează continuă să ruleze, una oprită rămâne oprită, iar planul spune asta. disabled este cea la care merită să vă opriți, pentru că împiedică managerul să pornească intrarea deloc, inclusiv la cerere pentru altceva care are nevoie de ea. delayed este automat, pornit puțin după celelalte intrări automate - cuvântul despre care întreabă start:delayed într-o interogare - iar Windows îl refuză pentru o intrare dintr-un grup de ordine de încărcare, lucru pe care planul îl spune înainte să se întâmple ceva. Fiecare dintre cele patru scrie dacă intrarea pornește târziu, așa cum face sc.exe. --stop, doar alături de disabled, oprește intrarea în același plan după ce setarea este scrisă.
snapshot create și snapshot diffcreate citește întotdeauna semnăturile și hash-urile, pentru că un instantaneu este păstrat și comparat mai târziu, iar unul fără ele, comparat cu unul cu ele, ar face să pară că mașina s-a schimbat. diff spune ce s-a schimbat de la primul fișier la al doilea sau de la un fișier la această mașină cu --live. Pagina despre instantanee are formatul și raționamentul.
history - cine a schimbat, din jurnalul SystemSchimbările de tip de pornire și instalările din jurnalul System, cele mai noi primele, cu contul pe care Windows l-a înregistrat. Prima linie spune cât de departe ajunge jurnalul și dacă a fost șters, pentru că un istoric este doar cât este de lung jurnalul. Cu un nume, sunt schimbările de tip de pornire ale acelui serviciu - instalările sunt listate doar fără nume, pentru că Windows înregistrează o instalare sub numele afișat și niciodată sub numele serviciului. Un cont este numit acolo unde această mașină îl poate numi singură și arătat ca SID în caz contrar, iar tipurile de pornire vin în cuvintele pe care le-a scris Windows.
+tool - răspunsuri gata făcute la probleme frecventeAceleași instrumente pe care fereastra le arată în fila Tools. bws tool le listează, iar bws tool fix listează remedierile rapide: printer, sound, indexing și search, fiecare o repornire a unui serviciu Windows împreună cu ce depinde de el, alese pentru că paginile de depanare ale Microsoft însuși o sugerează. bws tool fix printer este exact bws restart Spooler --dependents - același plan, aceeași ieșire și aceleași coduri de ieșire - și, ca orice comandă de aici care schimbă ceva, nu întreabă mai întâi, deci --dry-run este calea de a privi înainte să ruleze.
license - ce se află în fișierul descărcatNu citește absolut nimic - niciun manager de servicii, niciun disc, nicio rețea - și răspunde dintr-un registru compilat în executabil. --components transformă mențiunea în fiecare componentă cu versiunea, licența și proveniența ei. Același set pe care îl poartă lista de materiale publicată lângă descărcare, pentru că ambele sunt generate dintr-un singur registru, și motivul pentru care merită: programul este un singur fișier independent, deci nu este nimic lângă el pe care un scaner să-l citească.
Planurile de mai jos au fost verificate cu --dry-run pe programul pe care îl descrie această pagină. O comandă care schimbă ceva nu întreabă mai întâi, deci --dry-run este calea de a privi înainte să ruleze. Spooler stă pentru orice serviciu - puneți în loc numele serviciului dumneavoastră.
bws list fiecare serviciu și driver de pe această mașină
+bws list --query "start:auto !status:running" ce ar trebui să fie pornit și nu este
+bws list --query "status:running" --memory ce folosește procesul fiecărei intrări care rulează
+bws show Spooler tot ce se știe despre o intrare
+bws show Spooler --full și câmpurile care sunt cu adevărat goale
+ bws restart Spooler --dry-run planul și nimic altceva
+bws restart Spooler --dependents repornește-l împreună cu ce depinde de el
+bws stop Spooler --dependents --timeout 120 permite două minute pe pas fără progres
+bws start-type WSearch delayed --dry-run pornește-l puțin după celelalte intrări automate
+bws start-type Spooler disabled --stop dezactivează-l și oprește-l într-un singur plan
+ bws kill Spooler --dry-run procesul și fiecare serviciu care trăiește în el
+bws kill Spooler --restart încheie procesul doar dacă o oprire eșuează, apoi readu totul
+bws kill Spooler --force --dry-run un pas în loc de doi: procesul încheiat imediat
+ bws snapshot create before.json --note "before the patch" îngheață mașina, cu o notă păstrată în interior
+bws snapshot diff before.json after.json două fișiere - două zile sau două mașini
+bws snapshot diff before.json --live fișierul față de această mașină așa cum este acum
+bws snapshot diff before.json --live --exit-code la fel, încheindu-se cu 5 dacă configurația a derivat
+ bws history fiecare schimbare de tip de pornire și instalare pe care o conține jurnalul System
+bws history Spooler schimbările de tip de pornire ale unui serviciu
+bws history --json la fel ca document, cu jurnal și schimbări
+ bws tool instrumentele care există
+bws tool fix remedierile rapide și serviciul din spatele fiecăreia
+bws tool fix sound --dry-run planul pentru repornirea celor două servicii audio
+bws tool fix printer repornește Print Spooler cu ce depinde de el
+ bws license --components fiecare componentă, versiunea, licența și proveniența ei
+bws --version versiunea acestui executabil
+ # intrările care ar trebui să fie pornite și nu sunt, ca obiecte
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# fișierele nesemnate, într-o foaie de calcul
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# de ce are nevoie un serviciu
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# o verificare nocturnă care ramifică după codul de ieșire
+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" }
+}
+ rem o a doua comandă doar când prima nu s-a încheiat curat
+bws restart Spooler || echo the restart did not end cleanly
+
+rem într-un fișier batch cu expandare întârziată activată, ! are nevoie de semnul ^
+bws list --query "start:auto ^!status:running"
+ {{switch_count}} la număr. A treia coloană sunt comenzile cărora le aparține fiecare - o opțiune dată unei comenzi care nu are ce face cu ea este o eroare cu acea listă în ea, nu un indicator ignorat în tăcere.
+ {{table:switches}} +{{exit_code_count}} sfârșituri, iar fiecare este un lucru diferit de făcut pentru un script. Datele merg la ieșirea standard și tot restul la eroarea standard, deci bws list --json | jq funcționează, iar un avertisment nu ajunge niciodată în JSON-ul dumneavoastră.
Fiecare document JSON este ASCII simplu: o literă din afara lui este scrisă ca un escape de șase caractere pe care orice cititor JSON îl transformă înapoi în literă, deci bws list --json > file.json este UTF-8 valid, iar | ConvertFrom-Json îl citește corect indiferent de pagina de cod a consolei. În textul pe care îl citește o persoană, un caracter care ar muta terminalul în loc să se tipărească - un tab, o întrerupere de linie, o secvență escape, o suprascriere a direcției - este arătat ca punctul său de cod, <U+001B>.
-- încheie opțiunile, așa că un serviciu al cărui nume începe cu o liniuță poate fi totuși numit: bws show -- -odd. Liniile de comandă pe care vi le dă instrumentul sunt scrise pentru PowerShell: un nume cu spațiu merge între ghilimele duble, pe care cmd le citește la fel, iar un nume pe care PowerShell l-ar expanda înăuntrul lor, precum MSSQL$SQLEXPRESS, merge între ghilimele simple.
Ctrl+C are trei niveluri, fiecare spunând ce costă următorul. Primul încetează să meargă înainte și tot pune la loc ce a fost luat, al doilea lasă lucrurile cum sunt și tot tipărește raportul, al treilea încheie procesul. O rulare oprită cu mâna se încheie cu 4 chiar dacă fiecare pas a ajuns.
Închiderea ferestrei consolei contează ca primul Ctrl+C. Windows dă apoi unui program cinci secunde, iar în ele acesta încetează să meargă înainte și pune la loc ce a doborât. Deconectarea și oprirea îl încheie fără niciun avertisment la care ar putea reacționa, iar o sesiune la distanță căzută poate la fel.
+Forma pentru care a fost construit acest instrument: înghețați mașina când se știe că este bună, apoi întrebați în fiecare noapte dacă încă este.
+# ziua în care mașina intră în serviciu
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# în fiecare noapte, dintr-o sarcină programată
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - nicio derivă de configurație
+# 5 - configurația a derivat, iar drift.json spune ce
+# 3 - a rulat și n-a putut citi totul, deci răspunsul este parțial
+ Fereastra este cealaltă jumătate a aceluiași motor: {{archive_window}} o conține, iar pagina de descărcare spune ce este fiecare arhivă.
BetterWindowsServices.exe primește un argument destinat unei persoane: --catalogue deschide o foaie pentru dezvoltatori care arată fiecare componentă a ferestrei în fiecare stare și nu citește nimic de pe mașina dumneavoastră. Un al doilea, --carry, este modul în care o fereastră predă ce afișa copiei sale pe care o repornește ca administrator. Nimeni nu îl tastează, iar orice din el pe care acea fereastră n-ar fi putut să-l scrie este refuzat.
Каждая команда, каждый параметр и каждый код завершения bws, версия {{version}}. Авторитетна 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 и showlist - это вся машина, суженная параметром --query. show - одна запись со всем, что о ней известно: подпись, привилегии, дескриптор безопасности и память, всё это читается каждый раз, потому что для одной записи это стоит около шестидесяти миллисекунд, а для всей машины - секунду. Поля, которые действительно пусты, опускаются, пока вы не передадите --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 diffcreate всегда читает подписи и хеши, потому что снимок хранится и сравнивается позже, а снимок без них при сравнении со снимком с ними выглядел бы так, будто машина изменилась. 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 отключить и остановить в одном плане
+ 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 версия этого исполняемого файла
+ # записи, которые должны работать и не работают, как объекты
+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" }
+}
+ rem вторая команда, только если первая завершилась не чисто
+bws restart Spooler || echo the restart did not end cleanly
+
+rem в пакетном файле с включённым отложенным расширением для ! нужна каретка
+bws list --query "start:auto ^!status:running"
+ {{switch_count}} штук. Третий столбец - команды, к которым относится каждый: параметр, переданный команде, которой он ни к чему, - это ошибка с этим списком внутри, а не молча игнорируемый флаг.
+ {{table:switches}} +{{exit_code_count}} исходов, и каждый - это отдельное действие для скрипта. Данные идут в стандартный вывод, а всё остальное в стандартный поток ошибок, поэтому bws list --json | jq работает, а предупреждение никогда не попадёт в ваш JSON.
Каждый документ JSON - простой ASCII: буква вне него записывается как шестисимвольная escape-последовательность, которую любой читатель JSON превращает обратно в букву, поэтому bws list --json > file.json - корректный UTF-8, а | ConvertFrom-Json читает его верно при любой кодовой странице консоли. В тексте, который читает человек, символ, который сдвинул бы терминал вместо того, чтобы напечататься, - табуляция, перевод строки, escape-последовательность, переопределение направления - показывается как его кодовая точка, <U+001B>.
-- завершает параметры, поэтому службу, имя которой начинается с дефиса, всё же можно назвать: bws show -- -odd. Командные строки, которые вам выдаёт инструмент, написаны для PowerShell: имя с пробелом берётся в двойные кавычки, которые cmd читает так же, а имя, которое PowerShell раскрыл бы внутри них, например MSSQL$SQLEXPRESS, берётся в одинарные.
У 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 - выполнилось и не смогло прочитать всё, поэтому ответ частичный
+ Окно - вторая половина того же движка: {{archive_window}} содержит его, а страница загрузки говорит, что такое каждый архив.
BetterWindowsServices.exe принимает один аргумент, предназначенный для человека: --catalogue открывает лист разработчика, показывающий каждый компонент окна в каждом состоянии, и ничего не читает с вашей машины. Второй, --carry, - способ, которым окно передаёт то, что показывало, своей копии, которую перезапускает от имени администратора. Его никто не набирает, и всё в нём, чего это окно не могло бы записать, отклоняется.
bws'nin her komutu, her seçeneği ve her çıkış kodu, sürüm {{version}}. Yetkili olan bws --help'tir ve daha uzundur - bu sayfa aynı yüzeydir, okunmak üzere düzenlenmiş.
On bir komut. snapshot bir isimdir ve arkasından bir sözcük alır. tool da bir isimdir ve tek başına araçları listeler.
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
+ Yanlış yazılmış bir komuta büyük olasılıkla kastettiğiniz komut önerilir ve çalıştırma, istediğinize yakın bir şey yapmak yerine 2 koduyla biter.
$ bws lst
+There is no command lst. Did you mean list?
+ list ve showlist tüm makinedir, --query ile daraltılmış. show, hakkında bilinen her şeyle tek bir öğedir - imza, ayrıcalıklar, güvenlik tanımlayıcısı ve bellek; hepsi her seferinde okunur, çünkü tek bir öğede bu yaklaşık altmış milisaniyeye mal olurken tüm makinede bir saniyeye mal olur. Gerçekten boş olan alanlar, --full vermedikçe bırakılır. Kimsenin okuyamadığı bir alan her durumda yazdırılır, çünkü bırakılması bir yanıt gibi görünürdü.
stop, start ve restartHer biri bir plan kurar ve yürütür. --dry-run planı yazdırır ve hiçbir şeyi değiştirmez, --dependents bozulacak hizmetleri plana kendi başlarına birer adım olarak koyar, --timeout ise bir adımın ilerleme olmadan ne kadar gidebileceğini söyler. Sürücüler denenmez, reddedilir; çünkü bir çekirdek sürücüsünü durdurmak çoğu zaman yeniden başlatma olmadan geri alınamaz.
kill - durmayan bir hizmet içinHizmetten durmasını ister ve arkasındaki süreci yalnızca bu işe yaramazsa sonlandırır; yani kendiliğinden duran bir öğe asla sonlandırılmaz. Bir süreci sonlandırmak, o süreçte yaşayan diğer her hizmeti, önce durmuş olsun olmasın, beraberinde götürür ve önizleme bunları ve süreci numarasıyla adlandırır. --force kibar adımı atlar ve önizleme o zaman iki yerine bir adım gösterir. --restart sonrasında her şeyi geri getirir.
Windows bu fikri farklı yazar. Stop-Service üzerinde --force "ona bağlı bir şey olsa bile" demektir; burada --dependents'in yaptığı budur. Bu yüzden bu, stop üzerinde bir seçenek değil, kendi başına bir komuttur.
start-type - bir ayar, bir hareket değilYöneticinin bir öğeyle bir sonraki açılışta ne yapacağını söyler ve --stop olmadan hiçbir şeyi taşımaz: çalışan bir öğe çalışmaya devam eder, durmuş olan durmuş kalır ve plan bunu söyler. disabled, üzerinde durulmaya değer olandır; çünkü yöneticinin öğeyi hiç başlatmasını, ona ihtiyaç duyan başka bir şey için isteğe bağlı olarak başlatmasını da dahil, engeller. delayed otomatiktir, diğer otomatik öğelerden biraz sonra başlatılır - bir sorguda start:delayed'in sorduğu sözcük - ve Windows bunu yükleme sırası grubundaki bir öğe için reddeder; bunu plan, bir şey olmadan önce söyler. Dördünün her biri, sc.exe'nin yaptığı gibi, öğenin geç başlayıp başlamadığını yazar. --stop, yalnızca disabled ile birlikte, ayar yazıldıktan sonra öğeyi aynı planda durdurur.
snapshot create ve snapshot diffcreate imzaları ve karmaları her zaman okur; çünkü bir anlık görüntü saklanır ve sonra karşılaştırılır, bunlar olmayan biri, bunlarla birlikte olan biriyle karşılaştırıldığında makine değişmiş gibi görünürdü. diff, ilk dosyadan ikinciye giderken ya da --live ile bir dosyadan bu makineye giderken neyin değiştiğini söyler. Anlık görüntü sayfası biçimi ve gerekçeyi içerir.
history - kimin değiştirdiği, System günlüğündenSystem günlüğünden başlangıç türü değişiklikleri ve kurulumlar; en yeniler önce, Windows'un kaydettiği hesapla birlikte. İlk satır günlüğün ne kadar geriye gittiğini ve temizlenip temizlenmediğini söyler; çünkü bir geçmiş ancak günlük kadar uzundur. Bir adla, o hizmetin başlangıç türü değişiklikleridir - kurulumlar yalnızca adsız listelenir, çünkü Windows bir kurulumu görünen ad altında kaydeder ve asla hizmet adı altında değil. Bir hesap, bu makinenin onu kendi başına adlandırabildiği yerde adlandırılır, aksi halde SID'i olarak gösterilir ve başlangıç türleri Windows'un yazdığı sözcüklerle gelir.
+tool - yaygın sorunlara hazır yanıtlarPencerenin Tools sekmesinde gösterdiği araçların aynısı. bws tool onları listeler, bws tool fix ise hızlı düzeltmeleri listeler: printer, sound, indexing ve search; her biri, Microsoft'un kendi sorun giderme sayfalarının önerdiği için seçilmiş, tek bir Windows hizmetinin ona bağlı olanlarla birlikte yeniden başlatılmasıdır. bws tool fix printer tam olarak bws restart Spooler --dependents'tir - aynı plan, aynı çıktı ve aynı çıkış kodları - ve buradaki bir şeyi değiştiren her komut gibi önce sormaz, bu yüzden çalışmadan önce bakmanın yolu --dry-run'dır.
license - indirdiğiniz dosyanın içinde ne varHiçbir şey okumaz - hizmet yöneticisi yok, disk yok, ağ yok - ve yürütülebilir dosyaya derlenmiş bir kayıttan yanıt verir. --components bildirimi her bileşene, sürümü, lisansı ve nereden geldiğiyle açar. İndirmenin yanında yayımlanan malzeme listesinin taşıdığı aynı küme, çünkü ikisi de tek bir kayıttan üretilir ve buna değmesinin nedeni de budur: program tek bir bağımsız dosyadır, yani yanında bir tarayıcının okuyabileceği hiçbir şey yoktur.
Aşağıdaki planlar, bu sayfanın anlattığı programa karşı --dry-run ile denetlendi. Bir şeyi değiştiren komut önce sormaz, bu yüzden çalışmadan önce bakmanın yolu --dry-run'dır. Spooler herhangi bir hizmeti temsil eder - yerine kendi hizmetinizin adını koyun.
bws list bu makinedeki her hizmet ve sürücü
+bws list --query "start:auto !status:running" açık olması gereken ve olmayan
+bws list --query "status:running" --memory çalışan her öğenin işleminin ne kullandığı
+bws show Spooler bir öğe hakkında bilinen her şey
+bws show Spooler --full gerçekten boş olan alanlar da
+ bws restart Spooler --dry-run plan ve başka hiçbir şey
+bws restart Spooler --dependents onu, ona bağlı olanlarla birlikte yeniden başlat
+bws stop Spooler --dependents --timeout 120 ilerleme olmadan adım başına iki dakikaya izin ver
+bws start-type WSearch delayed --dry-run diğer otomatik öğelerden biraz sonra başlat
+bws start-type Spooler disabled --stop devre dışı bırak ve tek planda durdur
+ bws kill Spooler --dry-run süreç ve içinde yaşayan her hizmet
+bws kill Spooler --restart süreci yalnızca durdurma başarısız olursa sonlandır, sonra hepsini geri getir
+bws kill Spooler --force --dry-run iki yerine bir adım: süreç hemen sonlandırıldı
+ bws snapshot create before.json --note "before the patch" makineyi dondur, içinde saklanan bir notla
+bws snapshot diff before.json after.json iki dosya - iki gün ya da iki makine
+bws snapshot diff before.json --live dosya, bu makineyle şu anki haliyle
+bws snapshot diff before.json --live --exit-code aynısı, yapılandırma saptıysa 5 ile biter
+ bws history System günlüğünün tuttuğu her başlangıç türü değişikliği ve kurulum
+bws history Spooler tek bir hizmetin başlangıç türü değişiklikleri
+bws history --json aynısı bir belge olarak, günlük ve değişikliklerle
+ bws tool mevcut araçlar
+bws tool fix hızlı düzeltmeler ve her birinin arkasındaki hizmet
+bws tool fix sound --dry-run iki ses hizmetini yeniden başlatma planı
+bws tool fix printer Print Spooler'ı ona bağlı olanlarla yeniden başlat
+ bws license --components her bileşen, sürümü, lisansı ve nereden geldiği
+bws --version bu yürütülebilir dosyanın sürümü
+ # açık olması gereken ve olmayan öğeler, nesne olarak
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# imzasız dosyalar, bir elektronik tabloya
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# bir hizmetin neye ihtiyaç duyduğu
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# çıkış koduna göre dallanan gecelik bir denetim
+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" }
+}
+ rem ikinci bir komut yalnızca ilki temiz bitmediğinde
+bws restart Spooler || echo the restart did not end cleanly
+
+rem gecikmeli genişletmenin açık olduğu bir toplu iş dosyasında ! için bir şapka işareti gerekir
+bws list --query "start:auto ^!status:running"
+ {{switch_count}} tane. Üçüncü sütun, her birinin ait olduğu komutlardır - işe yaramayacağı bir komuta verilen seçenek, sessizce yok sayılan bir bayrak değil, içinde o liste olan bir hatadır.
+ {{table:switches}} +{{exit_code_count}} son ve her biri bir betiğin yapacağı farklı bir şeydir. Veriler standart çıktıya, geri kalan her şey standart hataya gider; böylece bws list --json | jq çalışır ve bir uyarı asla JSON'unuza düşmez.
Her JSON belgesi düz ASCII'dir: onun dışındaki bir harf, her JSON okuyucusunun harfe geri çevirdiği altı karakterlik bir kaçış olarak yazılır; bu yüzden bws list --json > file.json geçerli UTF-8'dir ve konsolun hangi kod sayfasına ayarlı olduğundan bağımsız olarak | ConvertFrom-Json onu doğru okur. Bir insanın okuduğu metinde, yazdırılmak yerine terminali oynatacak bir karakter - bir sekme, bir satır sonu, bir kaçış dizisi, bir yön geçersiz kılma - kod noktası olarak gösterilir, <U+001B>.
-- seçenekleri sonlandırır; böylece adı tireyle başlayan bir hizmet yine de adlandırılabilir: bws show -- -odd. Aracın size verdiği komut satırları PowerShell için yazılmıştır: boşluklu bir ad çift tırnağa girer, cmd bunu aynı şekilde okur; PowerShell'in içlerinde genişleteceği bir ad ise, örneğin MSSQL$SQLEXPRESS, tek tırnağa girer.
Ctrl+C'nin üç düzeyi vardır; her biri bir sonrakinin neye mal olduğunu söyler. Birincisi ilerlemeyi bırakır ve alınanı yine geri koyar, ikincisi işleri olduğu gibi bırakır ve raporu yine yazdırır, üçüncüsü süreci sonlandırır. Elle durdurulan bir çalıştırma, her adım yine de ulaşmış olsa bile 4 ile biter.
Konsol penceresini kapatmak ilk Ctrl+C sayılır. Windows bundan sonra bir programa beş saniye verir ve bu sürede program ilerlemeyi bırakır ve indirdiğini geri koyar. Oturumu kapatmak ve bilgisayarı kapatmak, tepki verebileceği hiçbir uyarı olmadan onu sonlandırır; kopmuş bir uzak oturum da öyle olabilir.
+Bu aracın üzerine kurulduğu biçim: makine iyi olduğu bilindiğinde dondurun, sonra her gece hâlâ öyle olup olmadığını sorun.
+# makinenin hizmete girdiği gün
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# her gece, zamanlanmış bir görevden
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - yapılandırma sapması yok
+# 5 - yapılandırma saptı ve drift.json neyin olduğunu söyler
+# 3 - çalıştı ve her şeyi okuyamadı, yani yanıt kısmi
+ Pencere aynı motorun diğer yarısıdır: {{archive_window}} onu içerir ve indirme sayfası her arşivin ne olduğunu söyler.
BetterWindowsServices.exe bir insan için tasarlanmış tek bir bağımsız değişken alır: --catalogue, pencerenin her bileşenini her durumda gösteren bir geliştirici sayfası açar ve makinenizden hiçbir şey okumaz. İkincisi, --carry, bir pencerenin gösterdiği şeyi yönetici olarak yeniden başlattığı kendi kopyasına aktarma yoludur. Kimse onu yazmaz ve içindeki, o pencerenin yazamayacağı her şey reddedilir.
Кожна команда, кожен параметр і кожен код завершення bws, версія {{version}}. Найавторитетніша - 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 і showlist - це вся машина, звужена за допомогою --query. show - один запис з усім, що про нього відомо: підпис, привілеї, дескриптор безпеки й пам'ять, і все це читається щоразу, бо для одного запису це коштує близько шістдесяти мілісекунд, тоді як для всієї машини - секунду. Поля, які справді порожні, пропускаються, якщо не передати --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 diffcreate завжди читає підписи й хеші, бо знімок зберігається й порівнюється пізніше, а знімок без них порівнювався б зі знімком із ними так, ніби машина змінилася. 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 вимкнути її й зупинити одним планом
+ 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 версія цього виконуваного файлу
+ # записи, які мають працювати й не працюють, як об'єкти
+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" }
+}
+ rem друга команда, лише якщо перша не завершилася чисто
+bws restart Spooler || echo the restart did not end cleanly
+
+rem у пакетному файлі з увімкненим відкладеним розгортанням перед ! потрібен знак ^
+bws list --query "start:auto ^!status:running"
+ Їх {{switch_count}}. Третій стовпець - команди, до яких належить кожен: параметр, переданий команді, якій він ні до чого, - це помилка з цим списком усередині, а не мовчки проігнорований прапорець.
+ {{table:switches}} +Закінчень: {{exit_code_count}}, і кожне - це окрема дія для скрипта. Дані йдуть у стандартний вивід, а все інше в стандартний потік помилок, тому bws list --json | jq працює, а попередження ніколи не потрапить у ваш JSON.
Кожен документ JSON - звичайний ASCII: літера поза ним записується як шестисимвольна escape-послідовність, яку кожен читач JSON перетворює назад на літеру, тож bws list --json > file.json - це чинний UTF-8, а | ConvertFrom-Json читає його правильно, яка б кодова сторінка не була встановлена в консолі. У тексті, який читає людина, символ, що зсунув би термінал, а не надрукувався - табуляція, розрив рядка, escape-послідовність, перевизначення напрямку, - показується як його кодова точка, <U+001B>.
-- завершує параметри, тож службу, ім'я якої починається з дефіса, все одно можна назвати: bws show -- -odd. Командні рядки, які дає інструмент, написано для PowerShell: ім'я з пробілом береться у подвійні лапки, які cmd читає так само, а ім'я, яке PowerShell розгорнув би всередині них, наприклад MSSQL$SQLEXPRESS, береться в одинарні лапки.
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 - виконалося й не змогло прочитати все, тож відповідь часткова
+ Вікно - це друга половина того самого рушія: {{archive_window}} містить його, а сторінка завантаження каже, що таке кожен архів.
BetterWindowsServices.exe приймає один аргумент, призначений для людини: --catalogue відкриває аркуш розробника, що показує кожен компонент вікна в кожному стані й нічого не читає з вашої машини. Другий, --carry, - це спосіб, у який вікно передає те, що показувало, власній копії, яку воно перезапускає від імені адміністратора. Його ніхто не набирає, і все в ньому, чого це вікно не могло б записати, відхиляється.
Mọi lệnh, mọi tùy chọn và mọi mã thoát của bws, phiên bản {{version}}. bws --help là bản có thẩm quyền và dài hơn - trang này là cùng bề mặt đó, được bố trí để dễ đọc.
Mười một lệnh. snapshot là một danh từ và theo sau nó là một từ nữa. tool cũng là một danh từ, và đứng một mình nó liệt kê các công cụ.
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
+ Một lệnh gõ nhầm sẽ được đề nghị lệnh mà bạn có khả năng muốn dùng, và lần chạy kết thúc với mã 2 thay vì làm điều gì đó gần giống điều bạn yêu cầu.
$ bws lst
+There is no command lst. Did you mean list?
+ list và showlist là cả máy, được thu hẹp bởi --query. show là một mục với mọi thứ đã biết về nó - chữ ký, đặc quyền, bộ mô tả bảo mật và bộ nhớ, tất cả đều được đọc mỗi lần, vì với một mục thì việc đó tốn khoảng sáu mươi mili giây còn với cả máy thì tốn một giây. Các trường thực sự trống bị bỏ ra trừ khi bạn truyền --full. Một trường không ai đọc được thì được in trong cả hai trường hợp, vì bỏ nó đi sẽ trông như một câu trả lời.
stop, start và restartMỗi lệnh dựng một kế hoạch và thực hiện nó. --dry-run in kế hoạch và không thay đổi gì, --dependents đưa các dịch vụ sẽ hỏng vào đó thành những bước riêng, và --timeout nói một bước được phép trôi qua bao lâu không có tiến triển. Trình điều khiển bị từ chối chứ không thử, vì dừng một trình điều khiển nhân thường không thể hoàn tác nếu không khởi động lại.
kill - cho một dịch vụ không chịu dừngNó yêu cầu dịch vụ dừng và kết thúc tiến trình đằng sau nó chỉ khi điều đó không có tác dụng, nên một mục tự dừng thì không bao giờ bị kết thúc. Kết thúc một tiến trình kéo theo mọi dịch vụ khác sống trong tiến trình đó, dù chúng đã dừng trước hay chưa, và bản xem trước nêu tên chúng và nêu tiến trình bằng số. --force bỏ qua bước lịch sự và bản xem trước khi đó hiển thị một bước thay vì hai. --restart đưa mọi thứ trở lại sau đó.
Windows viết ý tưởng này theo cách khác. --force trên Stop-Service nghĩa là "ngay cả khi có thứ phụ thuộc vào nó", điều mà --dependents làm ở đây. Đó là lý do đây là một lệnh riêng chứ không phải một tùy chọn của stop.
start-type - một thiết lập, không phải một cú di chuyểnNó nói trình quản lý sẽ làm gì với một mục ở lần khởi động tiếp theo, và không có --stop nó không di chuyển gì: một mục đang chạy vẫn chạy, một mục đã dừng vẫn dừng, và kế hoạch nói điều đó. disabled là cái đáng dừng lại suy nghĩ, vì nó ngăn trình quản lý khởi động mục hoàn toàn, kể cả theo yêu cầu cho thứ khác cần nó. delayed là tự động, được khởi động muộn hơn một chút so với các mục tự động khác - từ mà start:delayed hỏi trong một truy vấn - và Windows từ chối nó với một mục trong nhóm thứ tự tải, điều mà kế hoạch nói trước khi có gì xảy ra. Mỗi trong bốn kiểu ghi việc mục có khởi động muộn hay không, như sc.exe làm. --stop, chỉ bên cạnh disabled, dừng mục trong cùng kế hoạch sau khi thiết lập được ghi.
snapshot create và snapshot diffcreate luôn đọc chữ ký và mã băm, vì một bản chụp được giữ lại và so sánh sau, và một bản không có chúng, so với một bản có chúng, sẽ trông như thể máy đã thay đổi. diff nói điều gì đã thay đổi đi từ tệp thứ nhất sang tệp thứ hai, hoặc từ một tệp sang máy này với --live. Trang về bản chụp có định dạng và lập luận.
history - ai đã thay đổi, từ nhật ký SystemCác lần đổi kiểu khởi động và cài đặt từ nhật ký System, mới nhất trước, cùng tài khoản mà Windows đã ghi lại. Dòng đầu tiên nói nhật ký lùi xa đến đâu và có bị xóa không, vì một lịch sử chỉ dài bằng nhật ký. Với một tên, đó là các lần đổi kiểu khởi động của dịch vụ đó - các lần cài đặt chỉ được liệt kê khi không có tên, vì Windows ghi một lần cài đặt dưới tên hiển thị và không bao giờ dưới tên dịch vụ. Một tài khoản được nêu tên ở nơi máy này tự nêu được và hiển thị dưới dạng SID của nó nếu không, và các kiểu khởi động đến bằng những từ Windows đã viết.
+tool - câu trả lời dựng sẵn cho các sự cố phổ biếnChính những công cụ mà cửa sổ hiển thị trên thẻ Tools. bws tool liệt kê chúng và bws tool fix liệt kê các cách sửa nhanh: printer, sound, indexing và search, mỗi cái là một lần khởi động lại một dịch vụ Windows cùng với những gì phụ thuộc vào nó, được chọn vì chính các trang khắc phục sự cố của Microsoft đề xuất nó. bws tool fix printer chính xác là bws restart Spooler --dependents - cùng kế hoạch, cùng đầu ra và cùng mã thoát - và như mọi lệnh ở đây thay đổi gì đó, nó không hỏi trước, nên --dry-run là cách để xem trước khi nó chạy.
license - bên trong tệp bạn đã tải về có gìNó không đọc gì cả - không trình quản lý dịch vụ, không đĩa, không mạng - và trả lời từ một sổ đăng ký được biên dịch vào tệp thực thi. --components biến thông báo thành mọi thành phần cùng phiên bản, giấy phép và nguồn gốc của nó. Cùng tập hợp mà bảng kê vật liệu phát hành bên cạnh bản tải xuống mang, vì cả hai được dựng từ một sổ đăng ký, và là lý do nó đáng có: chương trình là một tệp độc lập, nên bên cạnh nó không có gì để một trình quét đọc.
Các kế hoạch dưới đây đã được kiểm tra bằng --dry-run với chương trình mà trang này mô tả. Một lệnh thay đổi gì đó không hỏi trước, nên --dry-run là cách để xem trước khi nó chạy. Spooler đại diện cho bất kỳ dịch vụ nào - hãy đặt tên dịch vụ của bạn vào chỗ đó.
bws list mọi dịch vụ và trình điều khiển trên máy này
+bws list --query "start:auto !status:running" những gì lẽ ra phải chạy mà không chạy
+bws list --query "status:running" --memory tiến trình của mỗi mục đang chạy đang dùng gì
+bws show Spooler mọi thứ đã biết về một mục
+bws show Spooler --full cả các trường thực sự trống
+ bws restart Spooler --dry-run chỉ kế hoạch, không gì khác
+bws restart Spooler --dependents khởi động lại nó cùng những gì phụ thuộc vào nó
+bws stop Spooler --dependents --timeout 120 cho phép hai phút mỗi bước không có tiến triển
+bws start-type WSearch delayed --dry-run khởi động muộn hơn một chút so với các mục tự động khác
+bws start-type Spooler disabled --stop vô hiệu hóa và dừng trong một kế hoạch
+ bws kill Spooler --dry-run tiến trình, và mọi dịch vụ sống trong đó
+bws kill Spooler --restart chỉ kết thúc tiến trình nếu lệnh dừng thất bại, rồi đưa mọi thứ trở lại
+bws kill Spooler --force --dry-run một bước thay vì hai: tiến trình bị kết thúc ngay
+ bws snapshot create before.json --note "before the patch" đóng băng máy, kèm một ghi chú lưu bên trong
+bws snapshot diff before.json after.json hai tệp - hai ngày, hoặc hai máy
+bws snapshot diff before.json --live tệp so với máy này như hiện giờ
+bws snapshot diff before.json --live --exit-code như trên, kết thúc bằng 5 nếu cấu hình đã lệch
+ bws history mọi lần đổi kiểu khởi động và cài đặt mà nhật ký System lưu
+bws history Spooler các lần đổi kiểu khởi động của một dịch vụ
+bws history --json như trên dưới dạng tài liệu, kèm nhật ký và thay đổi
+ bws tool các công cụ hiện có
+bws tool fix các cách sửa nhanh, và dịch vụ đằng sau mỗi cách
+bws tool fix sound --dry-run kế hoạch khởi động lại hai dịch vụ âm thanh
+bws tool fix printer khởi động lại Print Spooler cùng những gì phụ thuộc vào nó
+ bws license --components mọi thành phần, phiên bản, giấy phép và nguồn gốc của nó
+bws --version phiên bản của tệp thực thi này
+ # các mục lẽ ra phải chạy mà không chạy, dưới dạng đối tượng
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# các tệp chưa ký, vào một bảng tính
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# một dịch vụ cần gì
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# một lần kiểm tra hằng đêm rẽ nhánh theo mã thoát
+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" }
+}
+ rem lệnh thứ hai chỉ khi lệnh đầu không kết thúc sạch
+bws restart Spooler || echo the restart did not end cleanly
+
+rem trong tệp batch bật delayed expansion, dấu ! cần dấu ^
+bws list --query "start:auto ^!status:running"
+ {{switch_count}} tùy chọn. Cột thứ ba là các lệnh mà mỗi tùy chọn thuộc về - một tùy chọn truyền cho lệnh không dùng đến nó là một lỗi có danh sách đó trong đó, chứ không phải một cờ bị lặng lẽ bỏ qua.
+ {{table:switches}} +{{exit_code_count}} kết cục, và mỗi kết cục là một việc khác nhau để script làm. Dữ liệu đi tới đầu ra chuẩn và mọi thứ khác đi tới lỗi chuẩn, nên bws list --json | jq hoạt động và một cảnh báo không bao giờ rơi vào JSON của bạn.
Mọi tài liệu JSON là ASCII thuần: một chữ cái ngoài ASCII được viết thành một chuỗi thoát sáu ký tự mà mọi trình đọc JSON biến trở lại thành chữ cái, nên bws list --json > file.json là UTF-8 hợp lệ và | ConvertFrom-Json đọc đúng bất kể bảng mã của bảng điều khiển. Trong văn bản mà con người đọc, một ký tự sẽ di chuyển thiết bị đầu cuối thay vì in ra - một tab, một ngắt dòng, một chuỗi thoát, một ký tự ghi đè hướng - được hiển thị dưới dạng điểm mã của nó, <U+001B>.
-- kết thúc các tùy chọn, nên một dịch vụ có tên bắt đầu bằng dấu gạch ngang vẫn có thể được nêu tên: bws show -- -odd. Các dòng lệnh mà công cụ đưa cho bạn được viết cho PowerShell: một tên có dấu cách đặt trong nháy kép, cmd đọc giống vậy, và một tên mà PowerShell sẽ mở rộng bên trong chúng, như MSSQL$SQLEXPRESS, đặt trong nháy đơn.
Ctrl+C có ba mức, mỗi mức nói mức tiếp theo tốn gì. Mức đầu ngừng tiến tới và vẫn trả lại những gì đã lấy, mức hai để mọi thứ như hiện trạng và vẫn in báo cáo, mức ba kết thúc tiến trình. Một lần chạy bị dừng bằng tay kết thúc với 4 ngay cả khi mọi bước vẫn đã đến nơi.
Đóng cửa sổ console được tính là Ctrl+C đầu tiên. Windows cho một chương trình năm giây sau đó, và trong thời gian ấy nó ngừng tiến tới và trả lại những gì nó đã hạ gục. Đăng xuất và tắt máy kết thúc nó mà không có cảnh báo nào để nó hành động, và một phiên từ xa bị rớt có thể cũng vậy.
+Dạng mà công cụ này được xây dựng cho: đóng băng máy khi biết nó tốt, rồi mỗi đêm hỏi xem nó có còn như vậy không.
+# ngày máy bắt đầu đưa vào hoạt động
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# mỗi đêm, từ một tác vụ theo lịch
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - không có sai lệch cấu hình
+# 5 - cấu hình đã lệch, và drift.json nói là gì
+# 3 - đã chạy và không đọc được hết, nên câu trả lời chỉ là một phần
+ Cửa sổ là nửa còn lại của cùng lõi: {{archive_window}} chứa nó, và trang tải xuống nói mỗi bản nén là gì.
BetterWindowsServices.exe nhận một đối số dành cho con người: --catalogue mở một tờ dành cho nhà phát triển hiển thị mọi thành phần của cửa sổ ở mọi trạng thái, và không đọc gì từ máy của bạn. Đối số thứ hai, --carry, là cách một cửa sổ chuyển những gì nó đang hiển thị cho bản sao của chính nó mà nó khởi động lại với quyền quản trị. Không ai gõ nó, và bất cứ thứ gì trong đó mà cửa sổ đó không thể đã viết ra đều bị từ chối.
bws 版本 {{version}} 的每个命令、每个选项和每个退出代码。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 和 showlist 是整台计算机,由 --query 缩小范围。show 是单个条目及其所有已知信息:签名、特权、安全描述符和内存,每次都会全部读取,因为针对一个条目只需约六十毫秒,而针对整台计算机则需要一秒。真正为空的字段会被省略,除非你传入 --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 diffcreate 始终会读取签名和哈希,因为快照是要保存下来、之后再比较的,没有它们的快照与有它们的快照比较时,会让人觉得计算机发生了变化。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 在一份计划中禁用并停止它
+ 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 此可执行文件的版本
+ # 应该在运行却没有运行的条目,作为对象
+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" }
+}
+ rem 仅当第一个命令没有正常结束时才执行第二个命令
+bws restart Spooler || echo the restart did not end cleanly
+
+rem 在启用了延迟展开的批处理文件中,! 前面需要插入符号 ^
+bws list --query "start:auto ^!status:running"
+ 共 {{switch_count}} 个。第三列是每个选项所属的命令:把选项传给用不上它的命令是一个错误,错误中会带有这份列表,而不是一个被悄悄忽略的标志。
+ {{table:switches}} +共 {{exit_code_count}} 种结束方式,每一种对脚本来说都是不同的处理。数据输出到标准输出,其余所有内容输出到标准错误,因此 bws list --json | jq 可以正常工作,警告也绝不会混进你的 JSON。
每个 JSON 文档都是纯 ASCII:ASCII 之外的字符会被写成六个字符的转义序列,所有 JSON 读取器都会把它还原成那个字符,所以 bws list --json > file.json 是有效的 UTF-8,而 | ConvertFrom-Json 无论控制台设置为什么代码页都能正确读取。在供人阅读的文本中,会移动终端而不是被打印出来的字符,例如制表符、换行、转义序列和方向覆盖字符,会显示为它的码位 <U+001B>。
-- 表示选项到此结束,所以名称以短横线开头的服务仍然可以指定:bws show -- -odd。工具交给你的命令行是为 PowerShell 编写的:带空格的名称放在双引号中,cmd 对其读取方式相同,而 PowerShell 会在双引号内展开的名称,例如 MSSQL$SQLEXPRESS,则放在单引号中。
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 - 已运行但无法读取全部内容,因此答案是部分的
+ 窗口是同一引擎的另一半:{{archive_window}} 中包含它,而下载页面说明了每个压缩包是什么。
BetterWindowsServices.exe 接受一个供人使用的参数:--catalogue 会打开一张开发者用的表,显示窗口的每个组件在每种状态下的样子,并且不会从你的计算机读取任何内容。第二个参数 --carry 是窗口把它正在显示的内容交给它以管理员身份重新启动的自己的副本的方式。没有人会手动输入它,其中任何该窗口不可能写出的内容都会被拒绝。
bws 版本 {{version}} 的每個命令、每個選項和每個結束代碼。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 和 showlist 是整台電腦,由 --query 縮小範圍。show 是單一項目及其所有已知資訊:簽章、特殊權限、安全性描述元和記憶體,每次都會全部讀取,因為針對一個項目只需約六十毫秒,而針對整台電腦則需要一秒。真正為空的欄位會被省略,除非你傳入 --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 diffcreate 始終會讀取簽章和雜湊,因為快照是要儲存下來、之後再比較的,沒有它們的快照與有它們的快照比較時,會讓人覺得電腦發生了變化。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 在一份計畫中停用並停止它
+ 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 此可執行檔的版本
+ # 應該執行卻沒有執行的項目,作為物件
+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" }
+}
+ rem 僅當第一個命令沒有正常結束時才執行第二個命令
+bws restart Spooler || echo the restart did not end cleanly
+
+rem 在啟用了延遲擴充的批次檔中,! 前面需要插入符號 ^
+bws list --query "start:auto ^!status:running"
+ 共 {{switch_count}} 個。第三欄是每個選項所屬的命令:把選項傳給用不上它的命令是一個錯誤,錯誤中會帶有這份清單,而不是一個被悄悄忽略的旗標。
+ {{table:switches}} +共 {{exit_code_count}} 種結束方式,每一種對指令碼來說都是不同的處理。資料輸出到標準輸出,其餘所有內容輸出到標準錯誤,因此 bws list --json | jq 可以正常運作,警告也絕不會混進你的 JSON。
每個 JSON 文件都是純 ASCII:ASCII 之外的字元會被寫成六個字元的逸出序列,所有 JSON 讀取器都會把它還原成那個字元,所以 bws list --json > file.json 是有效的 UTF-8,而 | ConvertFrom-Json 無論主控台設定為什麼字碼頁都能正確讀取。在供人閱讀的文字中,會移動終端機而不是被列印出來的字元,例如定位字元、換行、逸出序列和方向覆寫字元,會顯示為它的碼位 <U+001B>。
-- 表示選項到此結束,所以名稱以連字號開頭的服務仍然可以指定:bws show -- -odd。工具交給你的命令列是為 PowerShell 撰寫的:帶空格的名稱放在雙引號中,cmd 對其讀取方式相同,而 PowerShell 會在雙引號內展開的名稱,例如 MSSQL$SQLEXPRESS,則放在單引號中。
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 - 已執行但無法讀取全部內容,因此答案是部分的
+ 視窗是同一引擎的另一半:{{archive_window}} 中包含它,而下載頁面說明了每個壓縮檔是什麼。
BetterWindowsServices.exe 接受一個供人使用的參數:--catalogue 會開啟一張開發者用的表,顯示視窗的每個元件在每種狀態下的樣子,並且不會從你的電腦讀取任何內容。第二個參數 --carry 是視窗把它正在顯示的內容交給它以系統管理員身分重新啟動的自己的副本的方式。沒有人會手動輸入它,其中任何該視窗不可能寫出的內容都會被拒絕。
Verze {{version}}. Archivy nepotřebují instalační program a nic nezapisují do registru a k prohlížení nejsou potřeba práva správce. Podepsaný instalační program místo toho nainstaluje oba programy pro celý stroj. Volný a otevřený zdrojový kód pod GPL-3.0.
+ +| Soubor | Co to je |
|---|---|
{{archive_window}} | Okno: BetterWindowsServices.exe, jeden samostatný spustitelný soubor s vlastním runtime .NET uvnitř |
{{archive_cli}} | Příkazový řádek: bws.exe, jeden samostatný spustitelný soubor, pro skripty, naplánované úlohy a CI |
{{archive_installer}} | Instalační program: oba programy v Program Files pro každý účet na stroji, okno v nabídce Start a bws v proměnné PATH stroje |
Vezměte si jeden nebo oba - jsou to dva klienti téhož jádra a žádný nepotřebuje druhého. Na serveru je příkazový řádek menší z nich a dělá všechno, co okno.
+Instalační program nese přesně to, co oba archivy. Instaluje se tiše příkazem msiexec /i {{archive_installer}} /qn, novější verze se nainstaluje přes starší a nic, co běží, nezavírá - zavřete tedy před aktualizací okno i každý běžící bws, protože ponechaná běžící kopie se může zastavit s chybou. Odinstalování v Nastavení, Aplikace odstraní programy, položku v nabídce Start i položku v PATH a vaše vlastní soubory nechá být.
Spustitelné soubory nesou podpis Authenticode, takže Windows uvádí vydavatele místo varování před neznámým.
+Okno uchovává jeden vlastní soubor - rozvržení, v jakém jste nechali seznam - v %APPDATA%\BetterWindowsServices. Snímek jde tam, kam bws snapshot create řeknete, a když neřeknete, do aktuálního adresáře.
Program mluví anglicky. Okno čte jazykový soubor languages\gui.<kód>.json, uložený vedle něj a vybraný podle jazyka Windows, bez přepínače. Překlad je tedy příspěvek, který lze přidat bez nového sestavení - CONTRIBUTING.md říká jak.
Tento nástroj dělá to, co správce se službami, a část toho je přesně to, co bezpečnostní software sleduje.
+Zastavuje a spouští služby, může ukončit proces za nimi a čte u každé služby popisovač zabezpečení a požadovaná privilegia. EDR, který označí proces ukončující svchost.exe, dělá svou práci, a vynucené zastavení zde může vypadat přesně takto.
Co nedělá, abyste to mohli ověřit: nic nevkládá do žádného procesu, nic nebalí ani neobfuskuje, neinstaluje žádnou službu ani ovladač, nenechává nic běžet a neotevírá žádné síťové spojení. Je open source pod GPL-3.0 a oba spustitelné soubory si můžete sestavit sami.
+Pokud vaše politika vyžaduje výjimku, vyjměte ty dva spustitelné soubory podle souboru, ne podle složky. Jediná věc, se kterou stojí za to zacházet stejně pečlivě jako s nástrojem samotným, je soubor snímku: popisuje celý stroj.
+.NET 10 SDK, na Windows.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Některé testy čtou skutečného správce služeb stroje, na kterém běží, a porovnávají, co říká tento nástroj, s tím, co říká sc.exe. Jsou jen pro čtení. Jednosouborové spustitelné soubory, které vydání nesou, jsou tyto dvě publikace, každá jeden soubor s runtime uvnitř:
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+ Skončí jako bws.exe a BetterWindowsServices.exe pod bin/Release/.../win-x64/publish/ každého projektu. Soubory .pdb vedle nich jsou ladicí symboly a ke spuštění je nic nepotřebuje.
Změřeno na jednom stroji s 810 službami. Vaše čísla se budou lišit - ovlivňují je počet služeb, disk i procesor.
+než bws list přečte celý stroj.
od spuštění okna po zobrazení seznamu na obrazovce.
pro okno - polovinu z toho tvoří uživatelské rozhraní Windows, ještě než se spustí jakýkoli kód tohoto nástroje.
pro příkazový řádek na stejném stroji.
Versi {{version}}. Arsip tidak membutuhkan installer dan tidak menulis apa pun ke registri, dan melihat tidak membutuhkan hak administrator. Installer bertanda tangan sebaliknya memasang kedua program untuk seluruh mesin. Bebas dan bersumber terbuka di bawah GPL-3.0.
+ +| Berkas | Apa itu |
|---|---|
{{archive_window}} | Jendela: BetterWindowsServices.exe, satu berkas eksekusi mandiri dengan runtime .NET-nya sendiri di dalamnya |
{{archive_cli}} | Baris perintah: bws.exe, satu berkas eksekusi mandiri, untuk skrip, tugas terjadwal, dan CI |
{{archive_installer}} | Installer: kedua program di Program Files untuk setiap akun di mesin, jendela di menu Start, dan bws di PATH mesin |
Ambil salah satu atau keduanya - keduanya adalah dua klien dari mesin yang sama dan tidak ada yang membutuhkan yang lain. Di server, baris perintah adalah yang lebih kecil dari keduanya dan melakukan semua yang dilakukan jendela.
+Installer membawa persis apa yang dibawa kedua arsip. Ia terpasang secara senyap dengan msiexec /i {{archive_installer}} /qn, versi yang lebih baru terpasang di atas yang lebih lama, dan ia tidak menutup apa pun yang sedang berjalan - jadi tutup jendela dan setiap bws yang berjalan sebelum meningkatkan versi, karena salinan yang dibiarkan berjalan dapat berhenti dengan galat. Mencopot melalui Pengaturan, Aplikasi menghapus program, entri menu Start, dan entri PATH, dan membiarkan berkas Anda sendiri.
Berkas eksekusi membawa tanda tangan Authenticode, sehingga Windows menyebut penerbitnya alih-alih memperingatkan tentang penerbit yang tidak dikenal.
+Jendela menyimpan satu berkasnya sendiri - tata letak tempat Anda meninggalkan daftar - di bawah %APPDATA%\BetterWindowsServices. Snapshot disimpan di tempat yang Anda minta pada bws snapshot create, dan di direktori saat ini bila Anda tidak memintanya.
Program ini berbahasa Inggris. Jendela membaca berkas bahasa, languages\gui.<kode>.json, yang ditaruh di sebelahnya dan dipilih menurut bahasa Windows, tanpa sakelar. Terjemahan karena itu merupakan kontribusi yang dapat ditambahkan tanpa membangun ulang - CONTRIBUTING.md menjelaskan caranya.
Alat ini melakukan apa yang dilakukan administrator terhadap layanan, dan sebagian dari itu adalah persis apa yang diawasi perangkat lunak keamanan.
+Ia menghentikan dan memulai layanan, dapat mengakhiri proses di balik salah satunya, dan membaca deskriptor keamanan serta hak istimewa yang dibutuhkan setiap layanan. EDR yang menandai proses yang mengakhiri svchost.exe sedang menjalankan tugasnya, dan penghentian paksa di sini bisa tampak persis seperti itu.
Apa yang tidak dilakukannya, agar Anda dapat memeriksa klaim itu: ia tidak menyuntikkan apa pun ke proses mana pun, tidak mengemas atau mengaburkan apa pun, tidak memasang layanan maupun driver dan tidak meninggalkan apa pun yang berjalan, dan tidak membuka koneksi jaringan apa pun. Ia bersumber terbuka di bawah GPL-3.0 dan Anda dapat membangun kedua berkas eksekusi sendiri.
+Jika kebijakan Anda membutuhkan pengecualian, kecualikan kedua berkas eksekusi berdasarkan berkas, bukan folder. Satu-satunya hal yang layak diperlakukan dengan kehati-hatian yang sama seperti alat itu sendiri adalah berkas snapshot: ia menggambarkan seluruh mesin.
+.NET 10 SDK, di Windows.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Beberapa pengujian membaca service control manager nyata dari mesin tempat pengujian berjalan dan membandingkan apa yang dikatakan alat ini dengan apa yang dikatakan sc.exe. Pengujian itu hanya-baca. Berkas eksekusi satu-berkas yang dibawa rilis adalah dua publikasi ini, masing-masing satu berkas dengan runtime di dalamnya:
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+ Hasilnya berada sebagai bws.exe dan BetterWindowsServices.exe di bawah bin/Release/.../win-x64/publish/ setiap proyek. Berkas .pdb di sebelahnya adalah simbol debug, dan tidak ada yang membutuhkannya untuk berjalan.
Diukur pada satu mesin dengan 810 layanan. Angka Anda akan berbeda - jumlah layanan, disk, dan prosesor semuanya memengaruhinya.
+agar bws list membaca seluruh mesin.
dari menjalankan jendela sampai daftar muncul di layar.
untuk jendela - separuhnya adalah kerangka antarmuka pengguna Windows, sebelum kode alat ini sendiri berjalan.
untuk baris perintah pada mesin yang sama.
バージョン {{version}}。アーカイブにインストーラーは不要で、レジストリには何も書き込みません。見るだけなら管理者権限は不要です。署名付きインストーラーを使うと、代わりに両方のプログラムがマシン全体にインストールされます。GPL-3.0 の下で、無料でオープンソースです。
+| ファイル | 内容 |
|---|---|
{{archive_window}} | ウィンドウです。BetterWindowsServices.exe という 1 つの自己完結型の実行ファイルで、.NET ランタイムが内蔵されています |
{{archive_cli}} | コマンドラインです。bws.exe という 1 つの自己完結型の実行ファイルで、スクリプト、スケジュールされたタスク、CI 向けです |
{{archive_installer}} | インストーラーです。マシン上のすべてのアカウント向けに、両方のプログラムを Program Files にインストールし、ウィンドウをスタート メニューに、bws をマシンの PATH に追加します |
どちらか一方、または両方をお使いください。同じエンジンの 2 つのクライアントであり、どちらも相手を必要としません。サーバーでは、コマンドラインのほうが小さく、ウィンドウができることはすべて行えます。
+インストーラーには、2 つのアーカイブの内容がそのまま入っています。msiexec /i {{archive_installer}} /qn でサイレントインストールでき、新しいバージョンは古いバージョンに上書きインストールされます。実行中のものは閉じないため、アップグレード前にウィンドウと実行中の bws を閉じてください。実行したままのコピーはエラーで停止することがあります。「設定」の「アプリ」からアンインストールすると、プログラム、スタート メニューの項目、PATH の項目が削除され、ご自身のファイルには手を触れません。
実行ファイルには Authenticode 署名があるため、Windows は不明な発行元として警告せず、発行元の名前を表示します。
+ウィンドウは独自のファイルを 1 つだけ保持します。一覧を最後に置いたレイアウトで、場所は %APPDATA%\BetterWindowsServices です。スナップショットは、bws snapshot create に指定した場所に保存され、指定しない場合はカレントディレクトリに保存されます。
プログラムは英語で表示されます。ウィンドウは、隣に置かれた言語ファイル languages\gui.<code>.json を読み込み、Windows の言語で選択します。切り替えスイッチはありません。したがって翻訳は、再ビルドなしで追加できる貢献です。方法は CONTRIBUTING.md に書かれています。
このツールは、管理者がサービスに対して行うことを行います。その一部は、セキュリティソフトが監視している動作そのものです。
+サービスを停止・開始し、その背後のプロセスを終了でき、すべてのサービスのセキュリティ記述子と必要な特権を読み取ります。svchost.exe を終了するプロセスを検知する EDR は、役目を果たしています。ここでの強制停止は、まさにそのように見えることがあります。
このツールが行わないことを挙げます。確認できるようにするためです。どのプロセスにも何も注入しません。何かをパックしたり難読化したりしません。サービスもドライバーもインストールせず、何も常駐させません。ネットワーク接続も開きません。GPL-3.0 のオープンソースであり、2 つの実行ファイルは自分でビルドできます。
+ポリシーで除外が必要な場合は、フォルダーではなく、2 つの実行ファイルをファイル単位で除外してください。ツール自体と同じ注意を払う価値があるものが 1 つあります。スナップショットファイルです。マシン全体を記述しているからです。
+.NET 10 SDK、Windows 上で。
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ 一部のテストは、実行しているマシンの実際のサービス コントロール マネージャーを読み取り、このツールの出力を sc.exe の出力と比較します。これらは読み取り専用です。リリースに含まれる単一ファイルの実行ファイルは、次の 2 つのパブリッシュで作られます。それぞれ、ランタイムを内蔵した 1 つのファイルです。
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+ 出力は、各プロジェクトの bin/Release/.../win-x64/publish/ の下に bws.exe と BetterWindowsServices.exe として生成されます。隣にある .pdb ファイルはデバッグ用シンボルで、実行には必要ありません。
810 個のサービスがある 1 台のマシンで計測しました。サービスの数、ディスク、プロセッサーによって数値は変わります。
+bws list がマシン全体を読み取るまで。
ウィンドウを起動してから、一覧が画面に表示されるまで。
ウィンドウの場合です。その半分は Windows のユーザーインターフェイスフレームワークで、このツール自体のコードが動く前の分です。
同じマシンでのコマンドラインの場合です。
버전 {{version}}. 압축 파일에는 설치 프로그램이 필요 없고 레지스트리에 아무것도 쓰지 않으며, 보기만 할 때는 관리자 권한이 필요 없습니다. 서명된 설치 프로그램을 쓰면 대신 두 프로그램이 컴퓨터 전체에 설치됩니다. GPL-3.0 아래의 무료 오픈 소스입니다.
+| 파일 | 설명 |
|---|---|
{{archive_window}} | 창입니다. BetterWindowsServices.exe이며, .NET 런타임이 안에 들어 있는 자체 포함 실행 파일 하나입니다 |
{{archive_cli}} | 명령줄입니다. bws.exe이며, 스크립트, 예약 작업, CI를 위한 자체 포함 실행 파일 하나입니다 |
{{archive_installer}} | 설치 프로그램입니다. 컴퓨터의 모든 계정을 위해 두 프로그램을 Program Files에 설치하고, 창은 시작 메뉴에, bws는 컴퓨터의 PATH에 추가합니다 |
하나만 받아도, 둘 다 받아도 됩니다. 같은 엔진의 두 클라이언트이며 어느 쪽도 상대를 필요로 하지 않습니다. 서버에서는 명령줄이 둘 중 더 작고, 창이 하는 모든 일을 합니다.
+설치 프로그램에는 두 압축 파일에 들어 있는 것이 그대로 들어 있습니다. msiexec /i {{archive_installer}} /qn으로 조용히 설치되고, 새 버전은 이전 버전 위에 설치되며, 실행 중인 것은 닫지 않습니다. 따라서 업그레이드하기 전에 창과 실행 중인 bws를 닫으세요. 실행 상태로 남은 복사본은 오류와 함께 멈출 수 있습니다. 설정, 앱에서 제거하면 프로그램, 시작 메뉴 항목, PATH 항목이 제거되고 사용자의 파일은 그대로 둡니다.
실행 파일에는 Authenticode 서명이 있으므로, Windows는 알 수 없는 게시자를 경고하는 대신 게시자 이름을 표시합니다.
+창은 자체 파일을 하나만 보관합니다. 목록을 마지막으로 둔 레이아웃이며 %APPDATA%\BetterWindowsServices에 있습니다. 스냅샷은 bws snapshot create에 지정한 위치에 저장되고, 지정하지 않으면 현재 디렉터리에 저장됩니다.
프로그램은 영어로 표시됩니다. 창은 옆에 놓인 언어 파일 languages\gui.<code>.json을 읽으며, Windows의 언어에 따라 선택하고 스위치는 없습니다. 따라서 번역은 다시 빌드하지 않고 추가할 수 있는 기여입니다. 방법은 CONTRIBUTING.md에 있습니다.
이 도구는 관리자가 서비스에 대해 하는 일을 하며, 그중 일부는 보안 소프트웨어가 감시하는 바로 그 동작입니다.
+서비스를 중지하고 시작하며, 서비스 뒤의 프로세스를 종료할 수 있고, 모든 서비스의 보안 설명자와 필요한 권한을 읽습니다. svchost.exe를 종료하는 프로세스를 표시하는 EDR은 제 할 일을 하는 것이며, 여기서의 강제 중지는 정확히 그렇게 보일 수 있습니다.
이 도구가 하지 않는 일은 다음과 같습니다. 주장을 직접 확인할 수 있도록 적습니다. 어떤 프로세스에도 아무것도 주입하지 않습니다. 아무것도 패킹하거나 난독화하지 않습니다. 서비스도 드라이버도 설치하지 않고 아무것도 실행 상태로 남기지 않으며, 네트워크 연결을 열지 않습니다. GPL-3.0 아래의 오픈 소스이며 두 실행 파일을 직접 빌드할 수 있습니다.
+정책상 예외가 필요하다면 폴더가 아니라 두 실행 파일을 파일 단위로 제외하세요. 도구 자체와 같은 주의를 기울일 가치가 있는 것은 하나뿐입니다. 스냅샷 파일입니다. 컴퓨터 전체를 설명하기 때문입니다.
+.NET 10 SDK, Windows에서.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ 일부 테스트는 실행 중인 컴퓨터의 실제 서비스 제어 관리자를 읽고, 이 도구가 말하는 내용을 sc.exe가 말하는 내용과 비교합니다. 읽기 전용입니다. 릴리스에 들어 있는 단일 파일 실행 파일은 다음 두 번의 게시로 만들며, 각각 런타임이 안에 들어 있는 파일 하나입니다.
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+ 결과는 각 프로젝트의 bin/Release/.../win-x64/publish/ 아래에 bws.exe와 BetterWindowsServices.exe로 생성됩니다. 옆에 있는 .pdb 파일은 디버깅 기호이며, 실행에는 필요하지 않습니다.
서비스 810개가 있는 컴퓨터 한 대에서 측정했습니다. 서비스 수, 디스크, 프로세서에 따라 수치가 달라집니다.
+bws list가 컴퓨터 전체를 읽는 데 걸리는 시간.
창을 시작해서 목록이 화면에 나타날 때까지.
창이 사용하는 양입니다. 그 절반은 Windows 사용자 인터페이스 프레임워크이며, 이 도구 자체의 코드가 실행되기 전의 양입니다.
같은 컴퓨터에서 명령줄이 사용하는 양입니다.
Versie {{version}}. De archieven hebben geen installatieprogramma nodig en schrijven niets naar het register, en kijken vraagt geen beheerdersrechten. Een ondertekend installatieprogramma zet beide programma's in plaats daarvan op de hele machine. Vrij en open source onder GPL-3.0.
+ +| Bestand | Wat het is |
|---|---|
{{archive_window}} | Het venster: BetterWindowsServices.exe, één zelfstandig uitvoerbaar bestand met een eigen .NET-runtime erin |
{{archive_cli}} | De opdrachtregel: bws.exe, één zelfstandig uitvoerbaar bestand, voor scripts, geplande taken en CI |
{{archive_installer}} | Het installatieprogramma: beide programma's in Program Files voor elk account op de machine, het venster in het startmenu en bws in het PATH van de machine |
Neem er een of beide - het zijn twee clients van dezelfde engine en geen van beide heeft de andere nodig. Op een server is de opdrachtregel de kleinste van de twee en doet alles wat het venster doet.
+Het installatieprogramma bevat precies wat de twee archieven bevatten. Het installeert stil met msiexec /i {{archive_installer}} /qn, een nieuwere versie installeert over een oudere heen, en het sluit niets af wat draait - sluit dus het venster en elke draaiende bws voordat u bijwerkt, want een kopie die blijft draaien kan met een fout stoppen. Verwijderen via Instellingen, Apps haalt de programma's, het item in het startmenu en het PATH-item weg en laat uw eigen bestanden met rust.
De uitvoerbare bestanden dragen een Authenticode-handtekening, zodat Windows de uitgever noemt in plaats van te waarschuwen voor een onbekende.
+Het venster bewaart één eigen bestand - de indeling waarin u de lijst hebt achtergelaten - onder %APPDATA%\BetterWindowsServices. Een momentopname komt waar u bws snapshot create opdraagt hem neer te zetten, en in de huidige map als u dat niet doet.
Het programma spreekt Engels. Het venster leest een taalbestand, languages\gui.<code>.json, dat ernaast ligt en wordt gekozen op basis van de taal van Windows, zonder schakelaar. Een vertaling is dus een bijdrage die kan worden toegevoegd zonder opnieuw te bouwen - CONTRIBUTING.md legt uit hoe.
Dit hulpmiddel doet wat een beheerder met services doet, en een deel daarvan is wat beveiligingssoftware in de gaten houdt.
+Het stopt en start services, het kan het proces achter een service beëindigen, en het leest van elke service de beveiligingsdescriptor en vereiste bevoegdheden. Een EDR die een proces markeert dat svchost.exe beëindigt, doet zijn werk, en een geforceerde stop hier kan er precies zo uitzien.
Wat het niet doet, zodat u de bewering kunt controleren: het injecteert niets in een proces, het verpakt of versluiert niets, het installeert geen service en geen stuurprogramma en laat niets draaien, en het opent geen netwerkverbinding. Het is open source onder GPL-3.0 en u kunt beide uitvoerbare bestanden zelf bouwen.
+Als uw beleid een uitzondering vraagt, sluit dan de twee uitvoerbare bestanden uit op bestand in plaats van op map. Het enige wat met dezelfde zorg moet worden behandeld als het hulpmiddel zelf is een momentopnamebestand: het beschrijft de hele machine.
+.NET 10 SDK, op Windows.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Sommige tests lezen de echte servicebeheerder van de machine waarop ze draaien en vergelijken wat dit hulpmiddel zegt met wat sc.exe zegt. Ze zijn alleen-lezen. De uitvoerbare bestanden uit één bestand die de releases dragen zijn deze twee publicaties, elk één bestand met de runtime erin:
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+ Ze komen terecht als bws.exe en BetterWindowsServices.exe onder bin/Release/.../win-x64/publish/ van elk project. De .pdb-bestanden ernaast zijn foutopsporingssymbolen, en niets heeft ze nodig om te draaien.
Gemeten op één machine met 810 services. Uw cijfers zullen verschillen - het aantal services, de schijf en de processor beïnvloeden ze allemaal.
+voor bws list om de hele machine te lezen.
van het starten van het venster tot de lijst op het scherm staat.
voor het venster - de helft daarvan is het gebruikersinterfaceframework van Windows, voordat enige code van dit hulpmiddel draait.
voor de opdrachtregel op dezelfde machine.
Versiunea {{version}}. Arhivele nu au nevoie de program de instalare și nu scriu nimic în registru, iar privitul nu cere drepturi de administrator. Un program de instalare semnat pune în schimb ambele programe pe toată mașina. Liber și open source sub GPL-3.0.
+ +| Fișier | Ce este |
|---|---|
{{archive_window}} | Fereastra: BetterWindowsServices.exe, un singur executabil independent cu propriul runtime .NET în interior |
{{archive_cli}} | Linia de comandă: bws.exe, un singur executabil independent, pentru scripturi, sarcini programate și CI |
{{archive_installer}} | Programul de instalare: ambele programe în Program Files pentru fiecare cont de pe mașină, fereastra în meniul Start și bws în PATH-ul mașinii |
Luați unul sau pe amândouă - sunt doi clienți ai aceluiași motor și niciunul nu îl cere pe celălalt. Pe un server, linia de comandă este cea mai mică dintre ele și face tot ce face fereastra.
+Programul de instalare conține exact ce conțin cele două arhive. Se instalează silențios cu msiexec /i {{archive_installer}} /qn, o versiune mai nouă se instalează peste una mai veche și nu închide nimic din ce rulează - așa că închideți fereastra și orice bws care rulează înainte de actualizare, pentru că o copie lăsată să ruleze se poate opri cu o eroare. Dezinstalarea din Setări, Aplicații elimină programele, intrarea din meniul Start și intrarea din PATH și lasă fișierele dumneavoastră în pace.
Executabilele poartă o semnătură Authenticode, așa că Windows numește editorul în loc să avertizeze despre unul necunoscut.
+Fereastra păstrează un singur fișier al ei - aranjamentul în care ați lăsat lista - sub %APPDATA%\BetterWindowsServices. Un instantaneu merge acolo unde îi spuneți lui bws snapshot create să-l pună, iar în directorul curent când nu spuneți.
Programul vorbește engleza. Fereastra citește un fișier de limbă, languages\gui.<cod>.json, așezat lângă ea și ales după limba Windows, fără comutator. O traducere este deci o contribuție care se poate adăuga fără recompilare - CONTRIBUTING.md spune cum.
Acest instrument face ceea ce face un administrator cu serviciile, iar o parte din asta este exact ceea ce urmărește software-ul de securitate.
+Oprește și pornește servicii, poate încheia procesul din spatele unuia și citește descriptorul de securitate și privilegiile necesare ale fiecărui serviciu. Un EDR care semnalează un proces ce încheie svchost.exe își face treaba, iar o oprire forțată de aici poate arăta exact așa.
Ce nu face, ca să puteți verifica afirmația: nu injectează nimic în niciun proces, nu împachetează și nu ofuscă nimic, nu instalează niciun serviciu și niciun driver și nu lasă nimic să ruleze, și nu deschide nicio conexiune de rețea. Este open source sub GPL-3.0 și puteți compila singur ambele executabile.
+Dacă politica dumneavoastră cere o excepție, excludeți cele două executabile după fișier, nu după folder. Singurul lucru care merită tratat cu aceeași grijă ca instrumentul însuși este un fișier de instantaneu: descrie întreaga mașină.
+.NET 10 SDK, pe Windows.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Unele teste citesc managerul real de servicii al mașinii pe care rulează și compară ce spune acest instrument cu ce spune sc.exe. Sunt doar pentru citire. Executabilele dintr-un singur fișier pe care le poartă versiunile sunt aceste două publicări, fiecare un singur fișier cu runtime-ul în interior:
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+ Ajung ca bws.exe și BetterWindowsServices.exe sub bin/Release/.../win-x64/publish/ al fiecărui proiect. Fișierele .pdb de lângă ele sunt simboluri de depanare, iar nimic nu are nevoie de ele pentru a rula.
Măsurat pe o singură mașină cu 810 servicii. Cifrele dumneavoastră vor diferi - numărul de servicii, discul și procesorul le influențează pe toate.
+pentru ca bws list să citească toată mașina.
de la pornirea ferestrei până când lista apare pe ecran.
pentru fereastră - jumătate din această cantitate este cadrul de interfață al Windows, înainte să ruleze vreun cod al acestui instrument.
pentru linia de comandă pe aceeași mașină.
Версия {{version}}. Архивам не нужен установщик, и они ничего не пишут в реестр, а для просмотра не нужны права администратора. Подписанный установщик вместо этого ставит обе программы на всю машину. Свободный и с открытым кодом под GPL-3.0.
+ +| Файл | Что это |
|---|---|
{{archive_window}} | Окно: BetterWindowsServices.exe, один автономный исполняемый файл со своей средой выполнения .NET внутри |
{{archive_cli}} | Командная строка: bws.exe, один автономный исполняемый файл, для скриптов, запланированных задач и CI |
{{archive_installer}} | Установщик: обе программы в Program Files для каждой учётной записи на машине, окно в меню «Пуск» и bws в PATH машины |
Берите одну или обе - это два клиента одного движка, и ни одной не нужна другая. На сервере командная строка меньше из двух и делает всё, что делает окно.
+Установщик несёт ровно то, что содержат два архива. Он тихо ставится командой msiexec /i {{archive_installer}} /qn, новая версия ставится поверх старой, и он ничего не закрывает из работающего - поэтому перед обновлением закройте окно и каждый работающий bws, ведь оставленная работающей копия может остановиться с ошибкой. Удаление через «Параметры», «Приложения» убирает программы, пункт меню «Пуск» и запись в PATH и не трогает ваши собственные файлы.
Исполняемые файлы несут подпись Authenticode, поэтому Windows называет издателя, а не предупреждает о неизвестном.
+Окно хранит один собственный файл - раскладку, в которой вы оставили список, - в %APPDATA%\BetterWindowsServices. Снимок попадает туда, куда вы скажете bws snapshot create его положить, а если не скажете - в текущий каталог.
Программа говорит по-английски. Окно читает файл языка, languages\gui.<код>.json, лежащий рядом с ним и выбираемый по языку Windows, без переключателя. Перевод поэтому - это вклад, который можно добавить без пересборки - CONTRIBUTING.md объясняет как.
Этот инструмент делает то, что администратор делает со службами, и часть этого - ровно то, за чем следит защитное ПО.
+Он останавливает и запускает службы, может завершить процесс, стоящий за одной из них, и читает дескриптор безопасности и требуемые привилегии каждой службы. EDR, который отмечает процесс, завершающий svchost.exe, делает свою работу, а принудительная остановка здесь может выглядеть в точности так.
Чего он не делает, чтобы вы могли проверить это утверждение: он ничего не внедряет ни в какой процесс, ничего не упаковывает и не запутывает, не устанавливает ни службы, ни драйвера и ничего не оставляет работающим, и не открывает ни одного сетевого соединения. Он с открытым кодом под GPL-3.0, и оба исполняемых файла можно собрать самому.
+Если вашей политике нужно исключение, исключайте два исполняемых файла по файлу, а не по папке. Единственное, к чему стоит относиться с той же заботой, что и к самому инструменту, - это файл снимка: он описывает всю машину.
+.NET 10 SDK, в Windows.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Некоторые тесты читают настоящий диспетчер служб машины, на которой работают, и сравнивают то, что говорит этот инструмент, с тем, что говорит sc.exe. Они только читают. Однофайловые исполняемые файлы, которые несут выпуски, - это две публикации ниже, каждая - один файл со средой выполнения внутри:
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+ Они оказываются как bws.exe и BetterWindowsServices.exe в bin/Release/.../win-x64/publish/ каждого проекта. Файлы .pdb рядом - это отладочные символы, и для работы они никому не нужны.
Измерено на одной машине с 810 службами. Ваши цифры будут другими: число служб, диск и процессор влияют на все.
+чтобы bws list прочитал всю машину.
от запуска окна до появления списка на экране.
для окна - половина из них приходится на интерфейсный фреймворк Windows, ещё до того, как запустится какой-либо код этого инструмента.
для командной строки на той же машине.
Sürüm {{version}}. Arşivler yükleyici gerektirmez ve kayıt defterine hiçbir şey yazmaz; bakmak yönetici hakları gerektirmez. İmzalı bir yükleyici ise iki programı birden tüm makineye kurar. GPL-3.0 altında özgür ve açık kaynak.
+ +| Dosya | Nedir |
|---|---|
{{archive_window}} | Pencere: BetterWindowsServices.exe, içinde kendi .NET çalışma zamanı olan tek bir bağımsız yürütülebilir dosya |
{{archive_cli}} | Komut satırı: bws.exe, tek bir bağımsız yürütülebilir dosya; betikler, zamanlanmış görevler ve CI için |
{{archive_installer}} | Yükleyici: makinedeki her hesap için Program Files içinde iki program, Başlat menüsünde pencere ve makinenin PATH'inde bws |
Birini ya da ikisini alın - aynı motorun iki istemcisidir ve hiçbiri diğerine ihtiyaç duymaz. Bir sunucuda komut satırı ikisinden küçüğüdür ve pencerenin yaptığı her şeyi yapar.
+Yükleyici, iki arşivin içerdiğinin aynısını taşır. msiexec /i {{archive_installer}} /qn ile sessizce kurulur, daha yeni bir sürüm eskisinin üzerine kurulur ve çalışan hiçbir şeyi kapatmaz - bu yüzden yükseltmeden önce pencereyi ve çalışan her bws'i kapatın; çünkü çalışır halde bırakılan bir kopya bir hatayla durabilir. Ayarlar, Uygulamalar'dan kaldırmak programları, Başlat menüsü girdisini ve PATH girdisini kaldırır; kendi dosyalarınıza dokunmaz.
Yürütülebilir dosyalar bir Authenticode imzası taşır; böylece Windows bilinmeyen bir yayımcı konusunda uyarmak yerine yayımcıyı adıyla anar.
+Pencere kendine ait tek bir dosya tutar - listeyi bıraktığınız düzen - %APPDATA%\BetterWindowsServices altında. Bir anlık görüntü, bws snapshot create'e nereye koymasını söylerseniz oraya gider; söylemezseniz geçerli dizine.
Program İngilizce konuşur. Pencere, yanında duran ve Windows'un diline göre, anahtarsız seçilen bir dil dosyasını, languages\gui.<kod>.json, okur. Dolayısıyla çeviri, yeniden derlemeden eklenebilecek bir katkıdır - CONTRIBUTING.md nasıl yapılacağını anlatır.
Bu araç, bir yöneticinin hizmetlerle yaptığını yapar ve bunun bir kısmı tam olarak güvenlik yazılımının izlediği şeydir.
+Hizmetleri durdurur ve başlatır, birinin arkasındaki süreci sonlandırabilir ve her hizmetin güvenlik tanımlayıcısını ve gereken ayrıcalıklarını okur. svchost.exe'yi sonlandıran bir süreci işaretleyen bir EDR işini yapıyordur ve buradaki zorla durdurma tam olarak öyle görünebilir.
Neyi yapmadığı, iddiayı doğrulayabilmeniz için: hiçbir işleme hiçbir şey enjekte etmez, hiçbir şeyi paketlemez ya da gizlemez, hiçbir hizmet ya da sürücü kurmaz ve hiçbir şeyi çalışır halde bırakmaz, hiçbir ağ bağlantısı açmaz. GPL-3.0 altında açık kaynaktır ve iki yürütülebilir dosyayı da kendiniz derleyebilirsiniz.
+İlkeniz bir istisna gerektiriyorsa, iki yürütülebilir dosyayı klasöre göre değil dosyaya göre hariç tutun. Araçla aynı özenle ele alınmaya değer tek şey bir anlık görüntü dosyasıdır: tüm makineyi tanımlar.
+.NET 10 SDK, Windows üzerinde.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Bazı testler, çalıştıkları makinenin gerçek hizmet yöneticisini okur ve bu aracın söylediğini sc.exe'nin söylediğiyle karşılaştırır. Salt okunurdur. Sürümlerin taşıdığı tek dosyalık yürütülebilir dosyalar şu iki yayımlamadır; her biri çalışma zamanı içinde tek bir dosyadır:
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+ bws.exe ve BetterWindowsServices.exe olarak her projenin bin/Release/.../win-x64/publish/ klasörüne düşerler. Yanlarındaki .pdb dosyaları hata ayıklama sembolleridir ve çalışmak için hiçbir şeyin onlara ihtiyacı yoktur.
810 hizmetli tek bir makinede ölçüldü. Sizin rakamlarınız farklı olacaktır - hizmet sayısı, disk ve işlemci hepsini etkiler.
+bws list'in tüm makineyi okuması için.
pencerenin başlatılmasından listenin ekrana gelmesine kadar.
pencere için - bu aracın kendi kodu çalışmadan önce, yarısı Windows kullanıcı arabirimi çerçevesidir.
aynı makinede komut satırı için.
Версія {{version}}. Архівам не потрібен інсталятор, і вони нічого не пишуть у реєстр, а для перегляду права адміністратора не потрібні. Підписаний інсталятор натомість ставить обидві програми на всю машину. Безкоштовний і з відкритим кодом за ліцензією GPL-3.0.
+ +| Файл | Що це |
|---|---|
{{archive_window}} | Вікно: BetterWindowsServices.exe, один автономний виконуваний файл зі власним середовищем виконання .NET усередині |
{{archive_cli}} | Командний рядок: bws.exe, один автономний виконуваний файл, для скриптів, запланованих задач і CI |
{{archive_installer}} | Інсталятор: обидві програми в Program Files для кожного облікового запису на машині, вікно в меню «Пуск» і bws у PATH машини |
Беріть один або обидва - це два клієнти одного рушія, і жоден не потребує іншого. На сервері командний рядок менший із двох і робить усе, що робить вікно.
+Інсталятор несе рівно те, що містять два архіви. Він ставиться тихо командою msiexec /i {{archive_installer}} /qn, новіша версія встановлюється поверх старішої, і він нічого не закриває з того, що працює, - тож перед оновленням закрийте вікно та будь-який запущений bws, бо копія, залишена запущеною, може зупинитися з помилкою. Видалення через «Параметри», «Програми» прибирає програми, пункт у меню «Пуск» і запис у PATH, а ваші власні файли не чіпає.
Виконувані файли несуть підпис Authenticode, тому Windows називає видавця, а не попереджає про невідомого.
+Вікно зберігає один власний файл - розкладку, у якій ви залишили список, - у %APPDATA%\BetterWindowsServices. Знімок потрапляє туди, куди ви скажете покласти його команді bws snapshot create, а якщо не скажете - у поточний каталог.
Програма говорить англійською. Вікно читає файл мови, languages\gui.<code>.json, що лежить поруч і вибирається за мовою Windows, без перемикача. Переклад - це тому внесок, який можна додати без перебудови, - як це зробити, пояснює CONTRIBUTING.md.
Цей інструмент робить зі службами те, що робить адміністратор, а частина цього - саме те, за чим стежить захисне програмне забезпечення.
+Він зупиняє й запускає служби, може завершити процес, що стоїть за однією з них, і читає дескриптор безпеки та потрібні привілеї кожної служби. EDR, який позначає процес, що завершує svchost.exe, робить свою роботу, а примусова зупинка тут може виглядати саме так.
Чого він не робить, щоб ви могли перевірити твердження: нічого не впроваджує в жоден процес, нічого не пакує й не обфускує, не встановлює ні служби, ні драйвера й нічого не залишає запущеним, і не відкриває жодного мережевого з'єднання. Він має відкритий код за GPL-3.0, і обидва виконувані файли можна зібрати самому.
+Якщо вашій політиці потрібен виняток, виключайте два виконувані файли за файлом, а не за каталогом. Єдине, до чого варто ставитися з такою самою обережністю, як до самого інструмента, - це файл знімка: він описує всю машину.
+.NET 10 SDK, у Windows.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Деякі тести читають справжній диспетчер керування службами машини, на якій запущені, і порівнюють те, що каже цей інструмент, із тим, що каже sc.exe. Вони лише читають. Однофайлові виконувані файли, які несуть випуски, - це ці дві публікації, кожна в один файл із середовищем виконання всередині:
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+ Вони з'являються як bws.exe і BetterWindowsServices.exe у bin/Release/.../win-x64/publish/ кожного проєкту. Файли .pdb поруч із ними - це символи налагодження, і для запуску вони не потрібні.
Виміряно на одній машині з 810 службами. Ваші цифри відрізнятимуться: на них впливають кількість служб, диск і процесор.
+щоб bws list прочитав усю машину.
від запуску вікна до появи списку на екрані.
для вікна - половина з них це фреймворк інтерфейсу користувача Windows, ще до того, як запрацює будь-який власний код цього інструмента.
для командного рядка на тій самій машині.
Phiên bản {{version}}. Các bản nén không cần trình cài đặt và không ghi gì vào registry, và việc xem không cần quyền quản trị. Thay vào đó, một trình cài đặt có chữ ký đặt cả hai chương trình lên toàn bộ máy. Miễn phí và mã nguồn mở theo GPL-3.0.
+ +| Tệp | Đó là gì |
|---|---|
{{archive_window}} | Cửa sổ: BetterWindowsServices.exe, một tệp thực thi độc lập có sẵn runtime .NET bên trong |
{{archive_cli}} | Dòng lệnh: bws.exe, một tệp thực thi độc lập, cho script, tác vụ theo lịch và CI |
{{archive_installer}} | Trình cài đặt: cả hai chương trình trong Program Files cho mọi tài khoản trên máy, cửa sổ trong menu Start và bws trong PATH của máy |
Lấy một hoặc cả hai - chúng là hai máy khách của cùng một lõi và cái này không cần cái kia. Trên máy chủ, dòng lệnh là cái nhỏ hơn trong hai và làm mọi thứ mà cửa sổ làm.
+Trình cài đặt mang đúng những gì hai bản nén chứa. Nó cài đặt âm thầm bằng msiexec /i {{archive_installer}} /qn, phiên bản mới hơn cài đè lên phiên bản cũ, và nó không đóng bất cứ thứ gì đang chạy - nên hãy đóng cửa sổ và mọi bws đang chạy trước khi nâng cấp, vì một bản sao bị để chạy có thể dừng với lỗi. Gỡ cài đặt từ Settings, Apps sẽ xóa các chương trình, mục menu Start và mục PATH, và để yên các tệp của bạn.
Các tệp thực thi mang chữ ký Authenticode, nên Windows nêu tên nhà phát hành thay vì cảnh báo về một nhà phát hành không rõ.
+Cửa sổ giữ một tệp riêng - bố cục bạn để lại danh sách - dưới %APPDATA%\BetterWindowsServices. Một bản chụp đi tới nơi bạn bảo bws snapshot create đặt nó, và vào thư mục hiện tại khi bạn không bảo.
Chương trình nói tiếng Anh. Cửa sổ đọc một tệp ngôn ngữ, languages\gui.<mã>.json, đặt bên cạnh nó và được chọn theo ngôn ngữ của Windows, không cần công tắc. Vì vậy một bản dịch là một đóng góp có thể thêm vào mà không cần biên dịch lại - CONTRIBUTING.md nói cách làm.
Công cụ này làm điều mà một quản trị viên làm với dịch vụ, và một phần trong đó chính là thứ mà phần mềm bảo mật theo dõi.
+Nó dừng và khởi động dịch vụ, có thể kết thúc tiến trình đằng sau một dịch vụ, và đọc bộ mô tả bảo mật cùng các đặc quyền yêu cầu của mọi dịch vụ. Một EDR đánh dấu tiến trình kết thúc svchost.exe đang làm đúng việc của nó, và một lần dừng cưỡng bức ở đây có thể trông y như vậy.
Những gì nó không làm, để bạn kiểm chứng được lời khẳng định: nó không chèn gì vào bất kỳ tiến trình nào, không đóng gói hay làm rối mã thứ gì, không cài dịch vụ hay trình điều khiển nào và không để lại gì đang chạy, và không mở kết nối mạng nào. Nó là mã nguồn mở theo GPL-3.0 và bạn có thể tự xây dựng cả hai tệp thực thi.
+Nếu chính sách của bạn cần một ngoại lệ, hãy loại trừ hai tệp thực thi theo tệp chứ không theo thư mục. Thứ duy nhất đáng được xử lý cẩn thận như chính công cụ là một tệp bản chụp: nó mô tả cả máy.
+.NET 10 SDK, trên Windows.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Một số bài kiểm thử đọc trình quản lý dịch vụ thật của máy chúng chạy trên và so sánh điều công cụ này nói với điều sc.exe nói. Chúng chỉ đọc. Các tệp thực thi một-tệp mà các bản phát hành mang là hai lần xuất bản này, mỗi lần là một tệp với runtime bên trong:
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+ Chúng nằm ở bws.exe và BetterWindowsServices.exe dưới bin/Release/.../win-x64/publish/ của mỗi dự án. Các tệp .pdb bên cạnh là ký hiệu gỡ lỗi, và không thứ gì cần chúng để chạy.
Đo trên một máy có 810 dịch vụ. Số liệu của bạn sẽ khác - số dịch vụ, ổ đĩa và bộ xử lý đều ảnh hưởng.
+để bws list đọc cả máy.
từ lúc khởi động cửa sổ đến khi danh sách hiện trên màn hình.
cho cửa sổ - một nửa là khung giao diện người dùng của Windows, trước khi bất kỳ mã nào của công cụ này chạy.
cho dòng lệnh trên cùng máy đó.
版本 {{version}}。压缩包不需要安装程序,也不向注册表写入任何内容,查看时不需要管理员权限。使用已签名的安装程序,则会把这两个程序装到整台计算机上。免费开源,采用 GPL-3.0。
+| 文件 | 说明 |
|---|---|
{{archive_window}} | 窗口:BetterWindowsServices.exe,一个自包含的可执行文件,内置自己的 .NET 运行时 |
{{archive_cli}} | 命令行:bws.exe,一个自包含的可执行文件,用于脚本、计划任务和 CI |
{{archive_installer}} | 安装程序:为计算机上的每个账户把这两个程序安装到 Program Files,窗口出现在开始菜单中,bws 加入计算机的 PATH |
可以取其一或两者都要,它们是同一引擎的两个客户端,彼此互不依赖。在服务器上,命令行是两者中较小的一个,窗口能做的它都能做。
+安装程序包含的内容与两个压缩包完全相同。它可以用 msiexec /i {{archive_installer}} /qn 静默安装,较新的版本会覆盖安装在较旧的版本之上,并且它不会关闭任何正在运行的程序,所以升级前请先关闭窗口和任何正在运行的 bws,因为遗留在运行中的副本可能会报错停止。在“设置”的“应用”中卸载,会删除程序、开始菜单项和 PATH 项,而不会动你自己的文件。
可执行文件带有 Authenticode 签名,因此 Windows 会显示发布者名称,而不是警告来自未知发布者。
+窗口只保留一个自己的文件:你离开时列表的布局,位于 %APPDATA%\BetterWindowsServices 下。快照会保存到你在 bws snapshot create 中指定的位置,未指定时则保存到当前目录。
程序使用英文界面。窗口会读取放在它旁边的语言文件 languages\gui.<code>.json,并根据 Windows 的语言选择,没有切换开关。因此翻译是一项无需重新生成就能加入的贡献:CONTRIBUTING.md 说明了方法。
这个工具做的是管理员对服务做的事,其中一部分正是安全软件所监视的行为。
+它会停止和启动服务,可以结束服务背后的进程,并读取每个服务的安全描述符和所需特权。如果某个 EDR 把结束 svchost.exe 的进程标记出来,那它是在履行职责,而这里的强制停止看起来可能与之完全一样。
它不会做的事,便于你核对这一说法:它不会向任何进程注入任何内容,不会打包或混淆任何内容,不会安装服务或驱动程序,也不会留下任何运行中的内容,更不会建立任何网络连接。它以 GPL-3.0 开源,你可以自己构建这两个可执行文件。
+如果你的策略需要排除项,请按文件而不是按文件夹排除这两个可执行文件。唯一值得与工具本身同样小心对待的是快照文件:它描述了整台计算机。
+.NET 10 SDK,在 Windows 上。
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ 有些测试会读取它所运行的计算机上的真实服务控制管理器,并把这个工具的输出与 sc.exe 的输出进行比较。这些测试是只读的。发布版本所带的单文件可执行文件来自下面这两次发布,每次都生成一个内含运行时的文件:
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+ 它们会以 bws.exe 和 BetterWindowsServices.exe 的名称出现在各项目的 bin/Release/.../win-x64/publish/ 下。旁边的 .pdb 文件是调试符号,运行时并不需要它们。
在一台有 810 个服务的计算机上测得。你的数字会有所不同:服务数量、磁盘和处理器都会影响结果。
+bws list 读取整台计算机所需的时间。
从启动窗口到列表显示在屏幕上。
窗口占用的内存:其中一半是 Windows 用户界面框架,那还是在这个工具自己的代码运行之前。
同一台计算机上命令行占用的内存。
版本 {{version}}。壓縮檔不需要安裝程式,也不向登錄寫入任何內容,檢視時不需要系統管理員權限。使用已簽章的安裝程式,則會把這兩個程式裝到整台電腦上。免費開放原始碼,採用 GPL-3.0。
+| 檔案 | 說明 |
|---|---|
{{archive_window}} | 視窗:BetterWindowsServices.exe,一個獨立式的可執行檔,內建自己的 .NET 執行階段 |
{{archive_cli}} | 命令列:bws.exe,一個獨立式的可執行檔,用於指令碼、排程工作和 CI |
{{archive_installer}} | 安裝程式:為電腦上的每個帳戶把這兩個程式安裝到 Program Files,視窗出現在開始功能表中,bws 加入電腦的 PATH |
可以取其一或兩者都要,它們是同一引擎的兩個用戶端,彼此互不相依。在伺服器上,命令列是兩者中較小的一個,視窗能做的它都能做。
+安裝程式包含的內容與兩個壓縮檔完全相同。它可以用 msiexec /i {{archive_installer}} /qn 靜默安裝,較新的版本會覆蓋安裝在較舊的版本之上,並且它不會關閉任何正在執行的程式,所以升級前請先關閉視窗和任何正在執行的 bws,因為遺留在執行中的副本可能會報錯停止。在「設定」的「應用程式」中解除安裝,會刪除程式、開始功能表項目和 PATH 項目,而不會動你自己的檔案。
可執行檔帶有 Authenticode 簽章,因此 Windows 會顯示發行者名稱,而不是警告來自未知發行者。
+視窗只保留一個自己的檔案:你離開時清單的版面配置,位於 %APPDATA%\BetterWindowsServices 下。快照會儲存到你在 bws snapshot create 中指定的位置,未指定時則儲存到目前目錄。
程式使用英文介面。視窗會讀取放在它旁邊的語言檔案 languages\gui.<code>.json,並依 Windows 的語言選擇,沒有切換開關。因此翻譯是一項無需重新建置就能加入的貢獻:CONTRIBUTING.md 說明了方法。
這個工具做的是系統管理員對服務做的事,其中一部分正是資訊安全軟體所監視的行為。
+它會停止和啟動服務,可以結束服務背後的處理程序,並讀取每個服務的安全性描述元和所需特殊權限。如果某個 EDR 把結束 svchost.exe 的處理程序標記出來,那它是在履行職責,而這裡的強制停止看起來可能與之完全一樣。
它不會做的事,便於你核對這一說法:它不會向任何處理程序注入任何內容,不會封裝或混淆任何內容,不會安裝服務或驅動程式,也不會留下任何執行中的內容,更不會建立任何網路連線。它以 GPL-3.0 開放原始碼,你可以自己建置這兩個可執行檔。
+如果你的原則需要排除項目,請依檔案而不是依資料夾排除這兩個可執行檔。唯一值得與工具本身同樣小心對待的是快照檔案:它描述了整台電腦。
+.NET 10 SDK,在 Windows 上。
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ 有些測試會讀取它所執行的電腦上的真實服務控制管理員,並把這個工具的輸出與 sc.exe 的輸出進行比較。這些測試是唯讀的。發行版本所帶的單一檔案可執行檔來自下面這兩次發佈,每次都產生一個內含執行階段的檔案:
dotnet publish src/Bws.Cli/Bws.Cli.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+dotnet publish src/Bws.Gui/Bws.Gui.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true
+ 它們會以 bws.exe 和 BetterWindowsServices.exe 的名稱出現在各專案的 bin/Release/.../win-x64/publish/ 下。旁邊的 .pdb 檔案是偵錯符號,執行時並不需要它們。
在一台有 810 個服務的電腦上測得。你的數字會有所不同:服務數量、磁碟和處理器都會影響結果。
+bws list 讀取整台電腦所需的時間。
從啟動視窗到清單顯示在螢幕上。
視窗佔用的記憶體:其中一半是 Windows 使用者介面架構,那還是在這個工具自己的程式碼執行之前。
同一台電腦上命令列佔用的記憶體。
Nástroj, který tiše něco nepokrývá, je horší než ten, který říká, co neumí. Hranice jsou také na této stránce, ve dvou skupinách: co z návrhu odmítá, a co dělá Windows a tento nástroj to hlásí tak, jak to je.
+sc.exe, Get-Service nebo services.msc?sc query a Get-Service vám řeknou, co běží. services.msc vám to dovolí měnit, po jednom řádku, bez možnosti položit otázku a bez záznamu potom. Tento nástroj položí otázku (start:auto !status:running), ukáže vám plán, než jedná, a uchovává snímek, který můžete o týden později porovnat. Kde se se sc.exe o nějaké službě rozchází, je to chyba - část sady testů spouští obojí a porovnává to položku po položce. Delší srovnání je zde.
Nikdy. Žádná telemetrie, žádná kontrola aktualizací, žádné hlášení pádů, žádný účet, žádný klient čehokoli. Jediný okamžik, kdy se vůbec může dotknout sítě, je když zadáte --follow-network: pak se smí podívat na cestu ke spuštění na sdílené složce jiného stroje a nechat Windows stáhnout certifikát, který tento stroj ještě nemá - ve výchozím stavu vypnuto a nápověda říká proč. Tlačítka GitHub a Donate v okně a stránka v nabídce Help předají vašemu prohlížeči vždy jednu pevnou adresu, když na ně kliknete, a připojuje se váš prohlížeč.
Na prohlížení ne. Na změny ano. Bez nich správce ukazuje méně položek a víc jich odmítá a obě poloviny to říkají nahoře místo předstírání, že seznam je celý stroj. Okno nabízí Restart as admin. Samo si práva nikdy nezvyšuje.
+Ano na obojí. GPL-3.0, bez háčků. Snímek, který pořídíte, je váš soubor.
+Samo od sebe ne. Nic se nemění bez plánu, který jste viděli, ovladače se odmítají a plán, který by shodil něco, co stroj potřebuje, to říká. Před čím vás ochránit nemůže, je provedení plánu, který jste nečetli. Seznam služeb, které stroj potřebuje, je výchozí seznam sedmi - obě poloviny RPC a spouštěč DCOM, správce účtů, izolace klíčů, správce relací a Plug and Play - a Vzdálená plocha na něm není, takže při vzdálené relaci plán čtěte.
+Ne. {{product}} je nezávislý open source projekt a není přidružen k Microsoftu, schválen jím ani jím sponzorován. Windows je ochranná známka skupiny společností Microsoft.
+Ne - program mluví anglicky, a proto je tento web přeložen. Okno čte jazykový soubor languages\gui.<kód>.json, uložený vedle spustitelného souboru, a vybírá ho podle jazyka Windows, bez přepínače, takže překlad je příspěvek, který lze přidat bez nového sestavení programu. Názvy služeb v seznamu jsou takové, jaké je říká váš Windows - v jazyce, ve kterém je váš Windows nastaven.
Je tmavé a zůstává tmavé, ať je Windows nastaven jakkoli, včetně motivu s vysokým kontrastem. To je ověřeno, ne předpokládáno - drží si vlastní barvy a zůstává čitelné a toto nastavení nesleduje.
+3. Okno nabídne, že se samo restartuje jako správce, a nic dalšího s tím nedělá..net v dočasné složce účtu a načte odtamtud. S právy správce místo toho použije ProgramData\BetterWindowsServices na disku s Windows - složku, kterou vytvoří tak, aby ji mohli měnit jen správci, a kterou při každém spuštění kontroluje. Pokud složku nelze vytvořit nebo ji mohou měnit jiní, okno se nespustí a řekne, o kterou složku jde a co dělat. Přesun tam znamená, že okno se zvýšenými oprávněními spustí samo sebe podruhé, což trvá zlomek sekundy, a každá verze tam zanechá své knihovny (asi 8 MB), dokud někdo složku nesmaže. Příkazový řádek žádné takové knihovny nenese a nic nerozbaluje.svchost má cestu ke spuštění, která pojmenovává hostitele, takže soubor tam je i kdo ho podepsal říkají méně než u služby s vlastním procesem.Našli jste problém, nebo službu, kterou tento nástroj hlásí jinak než sc.exe? Sledování problémů je otevřené a rozdíl mezi nimi je to nejužitečnější, co do něj můžete vložit.
Alat yang diam-diam tidak mencakup sesuatu lebih buruk daripada alat yang menyatakan apa yang tidak bisa dilakukannya. Batasannya ada juga di halaman ini, dalam dua kelompok: apa yang sengaja ditolaknya, dan apa yang dilakukan Windows dan dilaporkan alat ini apa adanya.
+sc.exe, Get-Service, atau services.msc?sc query dan Get-Service memberi tahu Anda apa yang berjalan. services.msc memungkinkan Anda mengubahnya, satu baris sekali waktu, tanpa cara untuk mengajukan pertanyaan dan tanpa catatan sesudahnya. Alat ini mengajukan pertanyaannya (start:auto !status:running), menunjukkan rencana sebelum bertindak, dan menyimpan snapshot yang bisa Anda bandingkan seminggu kemudian. Jika hasilnya berbeda dari sc.exe tentang sebuah layanan, itu adalah bug - sebagian suite pengujian menjalankan keduanya dan membandingkannya entri demi entri. Perbandingan yang lebih panjang ada di sini.
Tidak pernah. Tanpa telemetri, tanpa pemeriksaan pembaruan, tanpa pelaporan kerusakan, tanpa akun, tanpa klien apa pun. Satu-satunya saat ia dapat menyentuh jaringan adalah ketika Anda memberikan --follow-network: saat itu ia boleh melihat jalur peluncuran pada berbagi mesin lain dan membiarkan Windows mengambil sertifikat yang belum dimiliki mesin ini - nonaktif secara bawaan, dan bantuannya menjelaskan alasannya. Tombol GitHub dan Donate di jendela serta halaman di menu Help masing-masing menyerahkan satu alamat tetap ke browser Anda saat ditekan, dan browser Andalah yang terhubung.
Untuk melihat, tidak. Untuk mengubah, ya. Tanpanya manajer menampilkan lebih sedikit entri dan menolak lebih banyak, dan kedua bagian menyatakannya di bagian atas alih-alih berpura-pura bahwa daftar itu adalah seluruh mesin. Jendela menawarkan Restart as admin. Ia tidak pernah menaikkan haknya sendiri.
+Ya untuk keduanya. GPL-3.0, tanpa syarat tambahan. Snapshot yang Anda ambil adalah berkas Anda.
+Tidak dengan sendirinya. Tidak ada yang diubah tanpa rencana yang telah Anda lihat, driver ditolak, dan rencana yang akan menjatuhkan sesuatu yang dibutuhkan mesin menyatakannya. Yang tidak bisa dilindunginya adalah menjalankan rencana yang tidak Anda baca. Daftar layanan yang dibutuhkan mesin adalah daftar awal berisi tujuh - dua bagian RPC dan peluncur DCOM, manajer akun, isolasi kunci, manajer sesi, dan plug and play - dan Remote Desktop tidak ada di dalamnya, jadi pada sesi jarak jauh, bacalah rencananya.
+Bukan. {{product}} adalah proyek sumber terbuka yang independen dan tidak berafiliasi dengan, didukung oleh, atau disponsori oleh Microsoft. Windows adalah merek dagang dari grup perusahaan Microsoft.
+Tidak - program ini berbahasa Inggris, itulah sebabnya situs ini diterjemahkan. Jendela membaca berkas bahasa, languages\gui.<kode>.json, yang ditaruh di sebelah berkas eksekusi dan memilihnya menurut bahasa Windows, tanpa sakelar, sehingga terjemahan adalah kontribusi yang dapat ditambahkan tanpa membangun ulang program. Nama layanan dalam daftar adalah apa pun yang dikatakan Windows Anda - dalam bahasa yang diatur pada Windows Anda.
Ia gelap dan tetap gelap apa pun pengaturan Windows, termasuk tema kontras tinggi. Itu diperiksa, bukan diasumsikan - ia mempertahankan warnanya sendiri dan tetap terbaca, dan tidak mengikuti pengaturan itu.
+3. Jendela menawarkan untuk me-restart dirinya sebagai administrator, dan tidak melakukan hal lain tentangnya..net di bawah folder sementara akun dan memuatnya dari sana. Dengan hak administrator, ia memakai ProgramData\BetterWindowsServices pada drive Windows sebagai gantinya - folder yang dibuatnya agar hanya administrator yang dapat mengubahnya, dan diperiksanya pada setiap permulaan. Jika folder itu tidak dapat dibuat, atau orang lain dapat mengubahnya, jendela tidak dimulai dan menyebut folder mana dan apa yang harus dilakukan. Pindah ke sana berarti jendela dengan hak tinggi memulai dirinya sendiri untuk kedua kalinya, yang memakan sepersekian detik, dan setiap versi meninggalkan pustakanya di sana (sekitar 8 MB) sampai seseorang menghapus folder itu. Baris perintah tidak membawa pustaka seperti itu dan tidak mengekstrak apa pun.svchost memiliki jalur peluncuran yang menyebut host, sehingga berkas ada di sana dan siapa yang menandatanganinya keduanya mengatakan lebih sedikit dibandingkan layanan dengan prosesnya sendiri.Menemukan masalah, atau layanan yang dilaporkan alat ini berbeda dari sc.exe? Pelacak masalah terbuka, dan selisih antara keduanya adalah hal paling berguna yang bisa Anda tempelkan di sana.
何かを黙ってカバーしないツールは、できないことを伝えるツールより悪いものです。制限もこのページに載せていて、2 つに分けています。設計上あえて拒否していることと、Windows が行うことでこのツールがそのまま報告しているものです。
+sc.exe、Get-Service、services.msc とどう違いますか。sc query と Get-Service は、何が実行されているかを教えてくれます。services.msc は、それを 1 行ずつ変更できますが、質問することはできず、あとに記録も残りません。このツールは質問(start:auto !status:running)をし、行動の前にプランを見せ、1 週間後に差分を取れるスナップショットを保持します。サービスについて sc.exe と食い違う場合は、バグです。テストスイートの一部が両方を実行し、エントリごとに比較しています。詳しい比較はこちらです。
一切必要ありません。テレメトリ、更新チェック、クラッシュレポート、アカウント、何かのクライアントも、ありません。ネットワークに触れる可能性があるのは、--follow-network を指定したときだけです。その場合、他のマシンの共有上にある起動パスを調べたり、このマシンにまだない証明書を Windows に取得させたりすることがあります。既定ではオフで、ヘルプがその理由を説明しています。ウィンドウの GitHub ボタンと Donate ボタン、および Help メニューのページは、押したときにそれぞれ決まったアドレスを 1 つブラウザーに渡すだけで、接続するのはブラウザーです。
見るだけなら不要です。変更するには必要です。権限がないと、マネージャーが表示するエントリは少なくなり、拒否されるものが増えます。どちらの側も、一覧がマシン全体であるかのように装わず、画面上部でそのことを伝えます。ウィンドウには Restart as admin があります。自分自身を昇格させることはありません。
+どちらも「はい」です。GPL-3.0 で、条件はありません。取得したスナップショットは、あなたのファイルです。
+このツール自体が壊すことはありません。ご覧になったプランなしでは何も変更されず、ドライバーは拒否され、マシンに必要なものを停止してしまうプランはそう伝えます。防げないのは、読まなかったプランを実行してしまうことです。マシンに必要なサービスの一覧は 7 つの初期リストです。RPC の 2 つの半分と DCOM ランチャー、アカウント マネージャー、キー分離、セッション マネージャー、プラグ アンド プレイで、リモート デスクトップは含まれていません。そのため、リモートセッションではプランを読んでください。
+いいえ。{{product}} は独立したオープンソースプロジェクトで、Microsoft と提携しておらず、Microsoft の承認も後援も受けていません。Windows は Microsoft 企業グループの商標です。
+いいえ。プログラムは英語で表示されます。このサイトが翻訳されているのはそのためです。ウィンドウは、実行ファイルの隣に置かれた言語ファイル languages\gui.<code>.json を読み込み、Windows の言語で選択します。切り替えスイッチはありません。したがって翻訳は、プログラムを再ビルドせずに追加できる貢献です。一覧のサービス名は、お使いの Windows が付けている名前、つまり Windows が設定されている言語のものになります。
Windows の設定にかかわらず、ハイコントラストテーマも含めて、暗いままです。これは想定ではなく確認済みです。独自の色を保持して読みやすさを保ち、その設定には従いません。
+3 で終了します。ウィンドウは管理者として自分自身を再起動することを提案しますが、それ以外のことは何もしません。.net フォルダーにそれらを書き込み、そこから読み込みます。管理者権限がある場合は、代わりに Windows ドライブの ProgramData\BetterWindowsServices を使います。これは管理者だけが変更できるように作成し、起動のたびに確認するフォルダーです。このフォルダーを作成できない場合、または他のユーザーが変更できる場合、ウィンドウは起動せず、どのフォルダーで何をすべきかを伝えます。そこへ移るということは、昇格したウィンドウが自分自身をもう一度起動するということで、これには 1 秒の何分の 1 かかかります。また、各バージョンは、誰かがフォルダーを削除するまで、そこにライブラリ(約 8 MB)を残します。コマンドラインにはそのようなライブラリはなく、何も展開しません。svchost の中でホストされるサービスは、起動パスがホストの名前になっています。そのため、ファイルがあることと誰が署名したかは、独自のプロセスを持つサービスよりも情報が少なくなります。問題を見つけた場合、またはこのツールが sc.exe と異なる報告をするサービスを見つけた場合は?課題トラッカーが開いています。2 つの差分を貼り付けていただくのが、最も役に立ちます。
무언가를 조용히 다루지 못하는 도구는, 못 하는 일을 말해 주는 도구보다 나쁩니다. 한계도 이 페이지에 두 부류로 적었습니다. 설계상 거부하는 일과, Windows가 하는 일 중 이 도구가 있는 그대로 보고하는 것입니다.
+sc.exe, Get-Service, services.msc와 무엇이 다른가요?sc query와 Get-Service는 무엇이 실행 중인지 알려 줍니다. services.msc는 그것을 한 행씩 바꾸게 해 주지만, 질문을 할 방법도 없고 나중에 남는 기록도 없습니다. 이 도구는 질문(start:auto !status:running)을 하고, 실행하기 전에 계획을 보여 주며, 일주일 뒤에 차이를 볼 수 있는 스냅샷을 보관합니다. 서비스에 대해 sc.exe와 다르게 나온다면 그것은 버그입니다. 테스트 모음의 일부가 둘을 모두 실행해 항목별로 비교합니다. 더 자세한 비교는 여기에 있습니다.
전혀 필요하지 않습니다. 원격 측정도, 업데이트 확인도, 충돌 보고도, 계정도, 어떤 것의 클라이언트도 없습니다. 네트워크에 닿을 수 있는 유일한 경우는 --follow-network를 전달할 때입니다. 그러면 다른 컴퓨터의 공유에 있는 시작 경로를 살펴보거나, 이 컴퓨터에 아직 없는 인증서를 Windows가 가져오게 할 수 있습니다. 기본값은 꺼짐이며, 도움말이 그 이유를 설명합니다. 창의 GitHub 버튼과 Donate 버튼, 그리고 Help 메뉴의 페이지는 누를 때 각각 고정된 주소 하나를 브라우저에 넘길 뿐이며, 연결하는 것은 브라우저입니다.
보기만 할 때는 필요 없습니다. 변경할 때는 필요합니다. 관리자 권한이 없으면 서비스 관리자가 보여 주는 항목이 적고 더 많이 거부하며, 두 쪽 모두 목록이 컴퓨터 전체인 것처럼 가장하지 않고 맨 위에서 그 사실을 알려 줍니다. 창은 Restart as admin을 제공합니다. 스스로 권한을 올리는 일은 절대 없습니다.
+둘 다 그렇습니다. GPL-3.0이며 아무 조건도 없습니다. 만든 스냅샷은 사용자의 파일입니다.
+도구 자체가 망가뜨리지는 않습니다. 본 적 없는 계획 없이는 아무것도 바뀌지 않고, 드라이버는 거부되며, 컴퓨터에 필요한 것을 내릴 계획은 그 사실을 알려 줍니다. 막아 줄 수 없는 것은 읽지 않은 계획을 실행하는 것입니다. 컴퓨터에 필요한 서비스 목록은 일곱 개로 이루어진 시작용 목록입니다. RPC의 두 부분과 DCOM 실행기, 계정 관리자, 키 격리, 세션 관리자, 플러그 앤 플레이이며, 원격 데스크톱은 들어 있지 않으므로 원격 세션에서는 계획을 읽으세요.
+아니요. {{product}}는 독립적인 오픈 소스 프로젝트이며 Microsoft와 제휴하거나 Microsoft의 승인 또는 후원을 받지 않았습니다. Windows는 Microsoft 그룹 회사의 상표입니다.
+아니요. 프로그램은 영어로 표시되며, 이 사이트를 번역한 이유도 그것입니다. 창은 실행 파일 옆에 놓인 언어 파일 languages\gui.<code>.json을 읽고, Windows의 언어에 따라 선택하며 스위치는 없으므로, 번역은 프로그램을 다시 빌드하지 않고 추가할 수 있는 기여입니다. 목록에 있는 서비스 이름은 사용 중인 Windows가 말하는 그대로이며, 곧 Windows가 설정된 언어입니다.
창은 어둡고, Windows 설정이 무엇이든 고대비 테마를 포함해 계속 어둡습니다. 가정이 아니라 확인한 사실입니다. 자체 색을 유지하며 읽기 쉬운 상태를 유지하고, 그 설정을 따르지 않습니다.
+3으로 끝납니다. 창은 관리자 권한으로 스스로를 다시 시작하자고 제안할 뿐 그 밖에는 아무것도 하지 않습니다..net 폴더에 쓰고 거기서 불러옵니다. 관리자 권한이 있으면 대신 Windows 드라이브의 ProgramData\BetterWindowsServices를 씁니다. 관리자만 바꿀 수 있도록 만들고 시작할 때마다 확인하는 폴더입니다. 이 폴더를 만들 수 없거나 다른 사람이 바꿀 수 있으면 창은 시작하지 않고 어떤 폴더인지, 무엇을 해야 하는지 알려 줍니다. 그곳으로 옮기면 상승된 창이 스스로를 두 번째로 시작하게 되며 이는 1초도 걸리지 않지만, 각 버전은 누군가 폴더를 지울 때까지 그곳에 라이브러리(약 8MB)를 남깁니다. 명령줄에는 그런 라이브러리가 없으며 아무것도 풀지 않습니다.svchost 안에서 호스팅되는 서비스는 시작 경로가 호스트를 가리키므로, 파일이 있다와 누가 서명했는가는 자체 프로세스를 가진 서비스보다 알려 주는 것이 적습니다.문제를 찾았거나, 이 도구가 sc.exe와 다르게 보고하는 서비스를 찾았나요? 이슈 트래커가 열려 있으며, 둘의 차이를 붙여 넣는 것이 가장 도움이 됩니다.
Een hulpmiddel dat stilletjes iets niet dekt is erger dan een hulpmiddel dat zegt wat het niet kan. De grenzen staan ook op deze pagina, in twee groepen: wat het bewust weigert, en wat Windows doet en dit hulpmiddel meldt zoals het is.
+sc.exe, Get-Service of services.msc?sc query en Get-Service vertellen u wat er draait. services.msc laat u het wijzigen, één rij tegelijk, zonder een manier om een vraag te stellen en zonder administratie achteraf. Dit hulpmiddel stelt de vraag (start:auto !status:running), toont u het plan voordat het handelt en bewaart een momentopname die u een week later kunt vergelijken. Waar het het oneens is met sc.exe over een service, is dat een bug - een deel van de testsuite draait beide en vergelijkt ze item voor item. De langere vergelijking staat hier.
Nooit. Geen telemetrie, geen controle op updates, geen crashrapportage, geen account, geen client van wat dan ook. De enige keer dat het überhaupt een netwerk kan raken is wanneer u --follow-network meegeeft: dan mag het een opstartpad op de share van een andere machine bekijken en Windows een certificaat laten ophalen dat deze machine nog niet heeft - standaard uit, en de help zegt waarom. De knoppen GitHub en Donate in het venster en de pagina in het menu Help geven elk één vast adres aan uw browser door wanneer u erop drukt, en uw browser is wat verbinding maakt.
Om te kijken niet. Om te wijzigen wel. Zonder die rechten toont de beheerder minder items en weigert hij er meer, en beide helften zeggen dat bovenaan in plaats van te doen alsof de lijst de hele machine is. Het venster biedt Restart as admin aan. Het verhoogt zichzelf nooit.
+Ja op beide. GPL-3.0, zonder voorwaarden. Een momentopname die u maakt is uw bestand.
+Niet uit zichzelf. Er wordt niets gewijzigd zonder een plan dat u hebt gezien, stuurprogramma's worden geweigerd, en een plan dat iets zou neerhalen wat de machine nodig heeft, zegt dat. Waartegen het u niet kan beschermen is een plan uitvoeren dat u niet hebt gelezen. De lijst met services die de machine nodig heeft is een startlijst van zeven - de twee helften van RPC en de DCOM-starter, de accountbeheerder, sleutelisolatie, de sessiebeheerder en plug-and-play - en Extern bureaublad staat er niet op, dus lees het plan bij een sessie op afstand.
+Nee. {{product}} is een onafhankelijk open source project en is niet gelieerd aan, goedgekeurd door of gesponsord door Microsoft. Windows is een handelsmerk van de Microsoft-groep van bedrijven.
+Nee - het programma spreekt Engels, en daarom is deze site vertaald. Het venster leest een taalbestand, languages\gui.<code>.json, dat naast het uitvoerbare bestand ligt, en kiest het op basis van de taal van Windows, zonder schakelaar. Een vertaling is dus een bijdrage die kan worden toegevoegd zonder het programma opnieuw te bouwen. De namen van de services in de lijst zijn wat uw Windows zegt dat ze zijn - in de taal waarin uw Windows is ingesteld.
Het is donker en blijft donker, wat Windows ook is ingesteld, inclusief een thema met hoog contrast. Dat is gecontroleerd en niet aangenomen - het houdt zijn eigen kleuren en blijft leesbaar, en volgt die instelling niet.
+3. Het venster biedt aan zichzelf als beheerder opnieuw te starten, en doet verder niets..net onder de tijdelijke map van het account en laadt ze vandaar. Met beheerdersrechten gebruikt het in plaats daarvan ProgramData\BetterWindowsServices op de schijf met Windows - een map die het zo aanmaakt dat alleen beheerders hem kunnen wijzigen, en bij elke start controleert. Als die map niet kan worden aangemaakt, of anderen hem kunnen wijzigen, start het venster niet en zegt het welke map en wat u moet doen. Verhuizen daarheen betekent dat een venster met verhoogde rechten zichzelf een tweede keer start, wat een fractie van een seconde duurt, en elke versie laat er zijn bibliotheken achter (ongeveer 8 MB) tot iemand de map verwijdert. De opdrachtregel draagt zulke bibliotheken niet en pakt niets uit.svchost draait heeft een opstartpad dat de host noemt, dus het bestand is er en wie het heeft ondertekend zeggen allebei minder dan bij een service met een eigen proces.Een probleem gevonden, of een service die dit hulpmiddel anders meldt dan sc.exe? De issuetracker staat open, en een diff tussen de twee is het nuttigste wat u erin kunt plakken.
Un instrument care nu acoperă ceva în tăcere este mai rău decât unul care spune ce nu poate face. Limitele sunt și ele pe această pagină, în două grupuri: ce refuză prin construcție și ce face Windows și acest instrument raportează așa cum este.
+sc.exe, Get-Service sau services.msc?sc query și Get-Service vă spun ce rulează. services.msc vă lasă să schimbați, un rând pe rând, fără o cale de a pune o întrebare și fără nicio evidență după aceea. Acest instrument pune întrebarea (start:auto !status:running), vă arată planul înainte să acționeze și păstrează un instantaneu pe care îl puteți compara peste o săptămână. Acolo unde nu este de acord cu sc.exe despre un serviciu, este o eroare - o parte din suita de teste le rulează pe amândouă și le compară intrare cu intrare. Comparația mai lungă este aici.
Niciodată. Fără telemetrie, fără verificare de actualizări, fără raportare de erori, fără cont, fără client de orice fel. Singura dată când poate atinge o rețea este când dați --follow-network: atunci poate privi o cale de lansare pe un share al altei mașini și poate lăsa Windows să preia un certificat pe care această mașină nu îl are deja - dezactivat implicit, iar ajutorul spune de ce. Butoanele GitHub și Donate din fereastră și pagina din meniul Help predau fiecare browserului dumneavoastră o singură adresă fixă când le apăsați, iar browserul este cel care se conectează.
Pentru a privi, nu. Pentru a schimba, da. Fără ele managerul arată mai puține intrări și refuză mai multe, iar ambele jumătăți spun asta sus, în loc să se prefacă că lista este toată mașina. Fereastra oferă Restart as admin. Nu își ridică niciodată singură drepturile.
+Da la amândouă. GPL-3.0, fără condiții ascunse. Un instantaneu pe care îl faceți este fișierul dumneavoastră.
+Nu de la sine. Nimic nu se schimbă fără un plan pe care l-ați văzut, driverele sunt refuzate, iar un plan care ar doborî ceva de care mașina are nevoie spune asta. Ceea ce nu vă poate proteja este executarea unui plan pe care nu l-ați citit. Lista serviciilor de care mașina are nevoie este o listă de pornire de șapte - cele două jumătăți ale RPC și lansatorul DCOM, managerul de conturi, izolarea cheilor, managerul de sesiuni și plug and play - iar Remote Desktop nu este pe ea, deci într-o sesiune la distanță citiți planul.
+Nu. {{product}} este un proiect open source independent și nu este afiliat cu Microsoft, nici aprobat sau sponsorizat de Microsoft. Windows este o marcă comercială a grupului de companii Microsoft.
+Nu - programul vorbește engleza, motiv pentru care acest site este tradus. Fereastra citește un fișier de limbă, languages\gui.<cod>.json, așezat lângă executabil și îl alege după limba Windows, fără comutator, deci o traducere este o contribuție care se poate adăuga fără recompilarea programului. Numele serviciilor din listă sunt ceea ce spune Windows-ul dumneavoastră că sunt - în limba în care este configurat Windows-ul dumneavoastră.
Este întunecată și rămâne întunecată indiferent cum este setat Windows, inclusiv o temă cu contrast ridicat. Asta este verificat, nu presupus - își păstrează culorile proprii și rămâne lizibilă și nu urmează acea setare.
+3. Fereastra se oferă să repornească singură ca administrator și nu face nimic altceva în privința asta..net sub folderul temporar al contului și le încarcă de acolo. Cu drepturi de administrator folosește în schimb ProgramData\BetterWindowsServices de pe unitatea Windows - un folder pe care îl creează astfel încât doar administratorii să îl poată modifica și pe care îl verifică la fiecare pornire. Dacă folderul nu poate fi creat sau alții îl pot modifica, fereastra nu pornește și spune ce folder și ce trebuie făcut. Mutarea acolo înseamnă că o fereastră cu drepturi ridicate se pornește singură a doua oară, ceea ce durează o fracțiune de secundă, iar fiecare versiune își lasă acolo bibliotecile (cam 8 MB) până când cineva șterge folderul. Linia de comandă nu poartă astfel de biblioteci și nu despachetează nimic.svchost are o cale de lansare care numește gazda, deci fișierul este acolo și cine l-a semnat spun amândouă mai puțin decât pentru un serviciu cu propriul proces.Ați găsit o problemă sau un serviciu pe care acest instrument îl raportează altfel decât sc.exe? Urmăritorul de probleme este deschis, iar o comparație între cele două este cel mai util lucru pe care îl puteți lipi acolo.
Инструмент, который молча чего-то не охватывает, хуже того, который говорит, чего он не умеет. Ограничения тоже есть на этой странице, в двух группах: от чего он отказывается по замыслу и что делает Windows, а этот инструмент сообщает как есть.
+sc.exe, Get-Service или services.msc?sc query и Get-Service говорят, что работает. services.msc позволяет это менять, по одной строке, без возможности задать вопрос и без записи после. Этот инструмент задаёт вопрос (start:auto !status:running), показывает план до действия и хранит снимок, который можно сравнить неделю спустя. Где он расходится с sc.exe в отношении службы, это ошибка: часть набора тестов запускает оба и сравнивает их запись за записью. Более подробное сравнение - здесь.
Никогда. Ни телеметрии, ни проверки обновлений, ни отчётов о сбоях, ни учётной записи, ни клиента чего бы то ни было. Единственный случай, когда он вообще может коснуться сети, - когда вы передаёте --follow-network: тогда он может заглянуть в путь запуска на общем ресурсе другой машины и позволить Windows получить сертификат, которого на этой машине ещё нет - по умолчанию выключено, и справка объясняет почему. Кнопки GitHub и Donate в окне и страница в меню Help при нажатии передают вашему браузеру один фиксированный адрес, а соединяется ваш браузер.
Чтобы смотреть - нет. Чтобы менять - да. Без них диспетчер показывает меньше записей и больше отказывает, и обе половины говорят об этом вверху, а не делают вид, что список - это вся машина. Окно предлагает Restart as admin. Само права оно никогда не повышает.
+Да на оба вопроса. GPL-3.0, без условий. Снимок, который вы делаете, - ваш файл.
+Сам по себе нет. Ничего не меняется без плана, который вы видели, драйверы отклоняются, а план, который обрушил бы то, что нужно машине, говорит об этом. От чего он защитить не может - это от выполнения плана, который вы не прочитали. Список служб, нужных машине, - это стартовый список из семи: две половины RPC и средство запуска DCOM, диспетчер учётных записей, изоляция ключей, диспетчер сеансов и Plug and Play - и Удалённого рабочего стола в нём нет, поэтому в удалённом сеансе читайте план.
+Нет. {{product}} - независимый проект с открытым кодом, не связанный с Microsoft, не одобренный и не спонсируемый Microsoft. Windows - товарный знак группы компаний Microsoft.
+Нет: программа говорит по-английски, поэтому этот сайт переведён. Окно читает файл языка, languages\gui.<код>.json, лежащий рядом с исполняемым файлом, и выбирает его по языку Windows, без переключателя, так что перевод - это вклад, который можно добавить без пересборки программы. Имена служб в списке - такие, какими их называет ваша Windows, на языке, на котором она настроена.
Оно тёмное и остаётся тёмным, как бы ни была настроена Windows, включая тему с высокой контрастностью. Это проверено, а не предположено: оно хранит свои цвета и остаётся читаемым и не следует этой настройке.
+3. Окно предлагает перезапуститься от имени администратора и больше ничего с этим не делает..net во временной папке учётной записи и загружает оттуда. С правами администратора оно вместо этого использует ProgramData\BetterWindowsServices на диске с Windows - папку, которую создаёт так, чтобы изменять её могли только администраторы, и проверяет при каждом запуске. Если папку не удаётся создать или её могут изменять другие, окно не запускается и говорит, какая это папка и что делать. Переход туда означает, что окно с повышенными правами запускает само себя второй раз, на что уходит доля секунды, и каждая версия оставляет там свои библиотеки (около 8 МБ), пока кто-нибудь не удалит папку. Командная строка таких библиотек не несёт и ничего не распаковывает.svchost, путь запуска называет хост, поэтому и файл на месте, и кто подписал говорят меньше, чем для службы со своим процессом.Нашли проблему или службу, которую этот инструмент сообщает не так, как sc.exe? Трекер задач открыт, а разница между ними - самое полезное, что можно туда вставить.
Sessizce bir şeyi kapsamayan bir araç, neyi yapamadığını söyleyen bir araçtan daha kötüdür. Sınırlar da bu sayfadadır, iki grupta: tasarım gereği neyi reddettiği ve Windows'un yaptığı, bu aracın olduğu gibi bildirdiği şeyler.
+sc.exe, Get-Service veya services.msc'den nasıl farklı?sc query ve Get-Service neyin çalıştığını söyler. services.msc onu, soru sorma yolu olmadan ve sonrasında bir kayıt tutmadan, her seferinde tek satır değiştirmenize izin verir. Bu araç soruyu sorar (start:auto !status:running), harekete geçmeden önce planı gösterir ve bir hafta sonra karşılaştırabileceğiniz bir anlık görüntü tutar. Bir hizmet konusunda sc.exe ile anlaşmazlığa düştüğü yerde bu bir hatadır - test paketinin bir bölümü ikisini de çalıştırır ve öğe öğe karşılaştırır. Daha uzun karşılaştırma burada.
Asla. Telemetri yok, güncelleme denetimi yok, çökme raporlama yok, hesap yok, hiçbir şeyin istemcisi yok. Bir ağa dokunabildiği tek an --follow-network verdiğiniz andır: o zaman başka bir makinenin paylaşımındaki bir başlatma yoluna bakabilir ve bu makinede henüz olmayan bir sertifikayı Windows'un getirmesine izin verebilir - varsayılan olarak kapalıdır ve yardım nedenini söyler. Penceredeki GitHub ve Donate düğmeleri ile Help menüsündeki sayfa, basıldığında tarayıcınıza sabit birer adres verir ve bağlanan sizin tarayıcınızdır.
Bakmak için hayır. Değiştirmek için evet. Bunlar olmadan yönetici daha az öğe gösterir ve daha fazlasını reddeder; iki yarı da listenin tüm makine olduğunu iddia etmek yerine bunu en üstte söyler. Pencere Restart as admin sunar. Kendi haklarını asla kendisi yükseltmez.
+İkisine de evet. GPL-3.0, ek koşul yok. Aldığınız bir anlık görüntü sizin dosyanızdır.
+Kendi kendine hayır. Gördüğünüz bir plan olmadan hiçbir şey değiştirilmez, sürücüler reddedilir ve makinenin ihtiyaç duyduğu bir şeyi indirecek bir plan bunu söyler. Sizi koruyamayacağı şey, okumadığınız bir planı yürütmenizdir. Makinenin ihtiyaç duyduğu hizmetlerin listesi yedilik bir başlangıç listesidir - RPC'nin iki yarısı ve DCOM başlatıcısı, hesap yöneticisi, anahtar yalıtımı, oturum yöneticisi ve tak-çalıştır - ve Uzak Masaüstü listede yok, dolayısıyla uzak bir oturumda planı okuyun.
+Hayır. {{product}} bağımsız bir açık kaynak projesidir; Microsoft ile bağlantılı değildir, Microsoft tarafından onaylanmamış ya da desteklenmemiştir. Windows, Microsoft şirketler grubunun bir ticari markasıdır.
+Hayır - program İngilizce konuşur ve bu site bu yüzden çevrilmiştir. Pencere, yürütülebilir dosyanın yanına konan bir dil dosyasını, languages\gui.<kod>.json, okur ve onu Windows'un diline göre, anahtarsız seçer; yani çeviri, programı yeniden derlemeden eklenebilecek bir katkıdır. Listedeki hizmetlerin adları, Windows'unuzun söylediği gibidir - Windows'unuzun kurulu olduğu dilde.
Koyudur ve Windows nasıl ayarlanmış olursa olsun, yüksek karşıtlık teması dahil, koyu kalır. Bu varsayılmadı, denetlendi - kendi renklerini korur ve okunaklı kalır, bu ayarı izlemez.
+3 çıkış koduyla biter. Pencere kendini yönetici olarak yeniden başlatmayı önerir ve bu konuda başka bir şey yapmaz..net klasörüne yazar ve oradan yükler. Yönetici haklarıyla bunun yerine Windows sürücüsündeki ProgramData\BetterWindowsServices klasörünü kullanır - yalnızca yöneticilerin değiştirebileceği şekilde oluşturduğu ve her başlatmada denetlediği bir klasör. Klasör oluşturulamıyorsa ya da başkaları onu değiştirebiliyorsa pencere başlamaz ve hangi klasör olduğunu ve ne yapılacağını söyler. Oraya geçmek, yükseltilmiş bir pencerenin kendini ikinci kez başlatması demektir; bu bir saniyenin kesri sürer ve her sürüm, biri klasörü silene kadar kitaplıklarını orada bırakır (yaklaşık 8 MB). Komut satırı böyle kitaplıklar taşımaz ve hiçbir şey açmaz.svchost içinde barındırılan bir hizmetin başlatma yolu ana bilgisayarı adlandırır; bu yüzden dosya orada ve kimin imzaladığı kendi işlemi olan bir hizmete göre daha az şey söyler.Bir sorun mu buldunuz, ya da bu aracın sc.exe'den farklı bildirdiği bir hizmet mi var? Sorun izleyici açıktır ve ikisi arasındaki bir fark, oraya yapıştırabileceğiniz en yararlı şeydir.
Інструмент, який мовчки щось не охоплює, гірший за той, що каже, чого не вміє. Обмеження теж на цій сторінці, у двох групах: від чого він відмовляється за задумом і що робить Windows, про що цей інструмент повідомляє як є.
+sc.exe, Get-Service чи services.msc?sc query і Get-Service кажуть, що працює. services.msc дає це змінити, по одному рядку, без можливості поставити запитання і без жодного запису потім. Цей інструмент ставить запитання (start:auto !status:running), показує план, перш ніж діяти, і зберігає знімок, який можна порівняти через тиждень. Де він розходиться з sc.exe щодо служби, це помилка - частина набору тестів запускає обидва й порівнює їх запис за записом. Довше порівняння - тут.
Ніколи. Ні телеметрії, ні перевірки оновлень, ні звітів про збої, ні облікового запису, ні клієнта чогось. Єдиний випадок, коли він узагалі може торкнутися мережі, - коли ви передаєте --follow-network: тоді він може подивитися шлях запуску на спільному ресурсі іншої машини й дозволити Windows отримати сертифікат, якого ця машина ще не має, - за замовчуванням вимкнено, і довідка каже чому. Кнопки GitHub і Donate у вікні та сторінка в його меню Help кожна передає браузеру одну фіксовану адресу, коли ви їх натискаєте, і з'єднується саме ваш браузер.
Щоб дивитися - ні. Щоб змінювати - так. Без них диспетчер показує менше записів і відмовляє частіше, і обидві половини кажуть про це нагорі, а не вдають, що список - це вся машина. Вікно пропонує Restart as admin. Само себе воно ніколи не підвищує.
+Так на обидва. GPL-3.0, без жодних умов. Знімок, який ви робите, - це ваш файл.
+Сам по собі ні. Нічого не змінюється без плану, який ви бачили, драйвери відхиляються, а план, що обвалив би потрібне машині, говорить про це. Від чого він захистити не може - від виконання плану, якого ви не прочитали. Список служб, потрібних машині, - стартовий, із семи: дві половини RPC і засіб запуску DCOM, диспетчер облікових записів, ізоляція ключів, диспетчер сеансів і Plug and Play - а Віддаленого робочого стола в ньому немає, тож у віддаленому сеансі читайте план.
+Ні. {{product}} - незалежний проєкт із відкритим кодом, не афілійований із Microsoft, не схвалений і не спонсорований Microsoft. Windows - товарний знак групи компаній Microsoft.
+Ні - програма говорить англійською, тому цей сайт перекладено. Вікно читає файл мови, languages\gui.<code>.json, що лежить поруч із виконуваним файлом, і вибирає його за мовою Windows, без перемикача, тож переклад - це внесок, який можна додати без перебудови програми. Назви служб у списку - такі, якими їх називає ваша Windows, тобто мовою, у якій налаштовано вашу Windows.
Воно темне й лишається темним, що б не було встановлено у Windows, зокрема й тема високої контрастності. Це перевірено, а не припущено: воно зберігає власні кольори й залишається читабельним, і цього налаштування не наслідує.
+3. Вікно пропонує перезапустити себе від імені адміністратора й більше нічого з цього приводу не робить..net у тимчасовій теці облікового запису й завантажує звідти. З правами адміністратора воно натомість використовує ProgramData\BetterWindowsServices на диску Windows - теку, яку створює так, щоб змінювати її могли лише адміністратори, і перевіряє під час кожного запуску. Якщо цю теку не вдається створити або її можуть змінювати інші, вікно не запускається й каже, яка це тека і що робити. Перехід туди означає, що вікно з підвищеними правами запускає себе вдруге, на що йде частка секунди, а кожна версія залишає там свої бібліотеки (близько 8 МБ), доки хтось не видалить теку. Командний рядок таких бібліотек не несе й нічого не розпаковує.svchost, має шлях запуску, що називає хост, тому файл на місці і хто його підписав кажуть менше, ніж для служби з власним процесом.Знайшли проблему або службу, яку цей інструмент описує інакше, ніж sc.exe? Трекер задач відкритий, а різниця між ними - найкорисніше, що можна туди вставити.
Một công cụ lặng lẽ không bao quát điều gì đó còn tệ hơn công cụ nói rõ nó không làm được gì. Các giới hạn cũng nằm trên trang này, trong hai nhóm: những gì nó từ chối theo thiết kế, và những gì Windows làm mà công cụ này báo cáo đúng như vậy.
+sc.exe, Get-Service hay services.msc?sc query và Get-Service cho bạn biết điều gì đang chạy. services.msc cho phép bạn thay đổi nó, từng dòng một, không có cách đặt câu hỏi và không có bản ghi nào sau đó. Công cụ này đặt câu hỏi (start:auto !status:running), cho bạn xem kế hoạch trước khi hành động, và giữ một bản chụp mà bạn có thể so sánh một tuần sau. Chỗ nào nó bất đồng với sc.exe về một dịch vụ, đó là một lỗi - một phần bộ kiểm thử chạy cả hai và so sánh từng mục. Bản so sánh dài hơn ở đây.
Không bao giờ. Không có đo từ xa, không kiểm tra cập nhật, không báo cáo sự cố, không tài khoản, không máy khách của bất cứ thứ gì. Lần duy nhất nó có thể chạm vào mạng là khi bạn truyền --follow-network: khi đó nó có thể nhìn vào đường dẫn khởi chạy trên thư mục chia sẻ của máy khác và để Windows lấy một chứng chỉ mà máy này chưa có - mặc định tắt, và phần trợ giúp nói lý do. Các nút GitHub và Donate trong cửa sổ và trang trong menu Help mỗi cái chuyển một địa chỉ cố định cho trình duyệt của bạn khi bạn nhấn, và trình duyệt của bạn mới là thứ kết nối.
Để xem thì không. Để thay đổi thì có. Nếu không có, trình quản lý hiển thị ít mục hơn và từ chối nhiều hơn, và cả hai nửa đều nói điều đó ở trên cùng thay vì giả vờ rằng danh sách là cả máy. Cửa sổ đề nghị Restart as admin. Nó không bao giờ tự nâng quyền.
+Có cho cả hai. GPL-3.0, không điều kiện kèm theo. Một bản chụp bạn tạo ra là tệp của bạn.
+Không tự nó. Không có gì bị thay đổi mà không có kế hoạch bạn đã xem, trình điều khiển bị từ chối, và một kế hoạch sẽ hạ gục thứ mà máy cần sẽ nói điều đó. Điều nó không thể bảo vệ bạn là việc thực thi một kế hoạch mà bạn không đọc. Danh sách các dịch vụ mà máy cần là một danh sách khởi đầu gồm bảy - hai nửa của RPC và trình khởi chạy DCOM, trình quản lý tài khoản, cô lập khóa, trình quản lý phiên và plug and play - và Remote Desktop không có trong đó, nên khi qua một phiên từ xa, hãy đọc kế hoạch.
+Không. {{product}} là một dự án mã nguồn mở độc lập và không liên kết với, không được chứng thực hay tài trợ bởi Microsoft. Windows là nhãn hiệu của nhóm công ty Microsoft.
+Không - chương trình nói tiếng Anh, đó là lý do trang web này được dịch. Cửa sổ đọc một tệp ngôn ngữ, languages\gui.<mã>.json, đặt bên cạnh tệp thực thi và chọn nó theo ngôn ngữ của Windows, không cần công tắc, nên một bản dịch là một đóng góp có thể thêm vào mà không cần biên dịch lại chương trình. Tên các dịch vụ trong danh sách là bất cứ thứ gì Windows của bạn nói - bằng ngôn ngữ mà Windows của bạn được thiết lập.
Nó tối và vẫn tối dù Windows được đặt thế nào, kể cả giao diện tương phản cao. Điều đó đã được kiểm chứng chứ không phải giả định - nó giữ màu riêng và vẫn đọc được, và không theo thiết lập đó.
+3. Cửa sổ đề nghị tự khởi động lại với quyền quản trị, và không làm gì khác về việc đó..net dưới thư mục tạm của tài khoản và tải chúng từ đó. Khi có quyền quản trị, nó dùng ProgramData\BetterWindowsServices trên ổ Windows thay thế - một thư mục mà nó tạo sao cho chỉ quản trị viên mới thay đổi được, và kiểm tra ở mỗi lần khởi động. Nếu không tạo được thư mục đó, hoặc người khác có thể thay đổi nó, cửa sổ không khởi động và nói thư mục nào và cần làm gì. Chuyển sang đó nghĩa là một cửa sổ nâng quyền tự khởi động lần thứ hai, mất một phần nhỏ của giây, và mỗi phiên bản để lại các thư viện của nó ở đó (khoảng 8 MB) cho đến khi ai đó xóa thư mục. Dòng lệnh không mang thư viện nào như vậy và không giải nén gì.svchost có đường dẫn khởi chạy nêu tên máy chủ lưu trữ, nên cả tệp có ở đó lẫn ai đã ký nó đều nói ít hơn so với một dịch vụ có tiến trình riêng.Tìm thấy sự cố, hoặc một dịch vụ mà công cụ này báo khác với sc.exe? Trình theo dõi sự cố đang mở, và sự khác biệt giữa hai bên là thứ hữu ích nhất bạn có thể dán vào đó.
悄悄漏掉某些内容的工具,比明说自己做不到什么的工具更糟。局限也写在这个页面上,分为两类:它在设计上拒绝做的事,以及 Windows 的行为里这个工具如实报告的部分。
+sc.exe、Get-Service 或 services.msc 有什么不同?sc query 和 Get-Service 告诉你什么在运行。services.msc 让你一行一行地更改它,既无法提问,事后也没有记录。这个工具会提问(start:auto !status:running),在执行前向你展示计划,并保留一个可以在一周后做差异对比的快照。在某个服务上它与 sc.exe 不一致,那就是一个缺陷:测试套件的一部分会同时运行两者,并逐条目地比较。更详细的对比在这里。
从不需要。没有遥测,没有更新检查,没有崩溃报告,没有账户,也没有任何客户端。它唯一可能接触网络的情况,是你传入 --follow-network 时:这时它可能会查看位于其他计算机共享上的启动路径,并让 Windows 获取这台计算机尚未持有的证书。默认关闭,帮助中说明了原因。窗口里的 GitHub 和 Donate 按钮,以及 Help 菜单里的页面,在你按下时各自只会把一个固定的地址交给你的浏览器,而真正建立连接的是你的浏览器。
查看不需要,更改需要。没有管理员权限时,服务管理器显示的条目更少,拒绝的操作更多,两部分都会在顶部说明这一点,而不是假装列表就是整台计算机。窗口会提供 Restart as admin。它从不自行提升权限。
+两者都是。GPL-3.0,没有任何附加条件。你生成的快照是你自己的文件。
+它自己不会。没有你看过的计划,就不会更改任何内容,驱动程序会被拒绝,而会关掉计算机必需之物的计划会在警告中说明。它无法保护你的,是执行一份你没有读过的计划。计算机必需的服务清单是一份七项的入门清单:RPC 的两个部分和 DCOM 启动器、账户管理器、密钥隔离、会话管理器以及即插即用,其中没有远程桌面,所以通过远程会话操作时,请阅读计划。
+不是。{{product}} 是一个独立的开源项目,与 Microsoft 没有关联,也未获得 Microsoft 的认可或赞助。Windows 是 Microsoft 公司集团的商标。
+没有,程序使用英文界面,这也是这个网站被翻译的原因。窗口会读取放在可执行文件旁边的语言文件 languages\gui.<code>.json,并根据 Windows 的语言选择,没有切换开关,所以翻译是一项无需重新生成程序就能加入的贡献。列表中的服务名称是你的 Windows 所写的样子,也就是你的 Windows 所设置的语言。
它是深色的,不论 Windows 如何设置,包括高对比度主题,它都保持深色。这是经过检查而不是想当然:它保留自己的颜色并保持可读,而不会跟随该设置。
+3 结束。窗口会提示以管理员身份重新启动自己,除此之外不做别的。.net 文件夹,并从那里加载。有管理员权限时,它改用 Windows 驱动器上的 ProgramData\BetterWindowsServices:这个文件夹由它创建,使得只有管理员能够更改,并且每次启动都会检查。如果无法创建该文件夹,或者其他人可以更改它,窗口就不会启动,并会说明是哪个文件夹以及该怎么做。迁移到那里意味着提升权限的窗口会再次启动自己,这需要不到一秒,而每个版本都会在那里留下它的库(约 8 MB),直到有人删除该文件夹。命令行不带这样的库,也不解压任何内容。svchost 内的服务,其启动路径指向的是宿主,所以文件在那里和谁签的名这两项能说明的内容,比对有独立进程的服务要少。发现了问题,或者发现了这个工具与 sc.exe 报告不同的服务?问题跟踪器是开放的,把两者的差异贴进去是最有用的信息。
悄悄漏掉某些內容的工具,比明說自己做不到什麼的工具更糟。限制也寫在這個頁面上,分為兩類:它在設計上拒絕做的事,以及 Windows 的行為裡這個工具如實回報的部分。
+sc.exe、Get-Service 或 services.msc 有什麼不同?sc query 和 Get-Service 告訴你什麼在執行。services.msc 讓你一列一列地變更它,既無法提問,事後也沒有記錄。這個工具會提問(start:auto !status:running),在執行前向你展示計畫,並保留一個可以在一週後做差異比較的快照。在某個服務上它與 sc.exe 不一致,那就是一個缺陷:測試套件的一部分會同時執行兩者,並逐項目地比較。更詳細的比較在這裡。
從不需要。沒有遙測,沒有更新檢查,沒有當機回報,沒有帳戶,也沒有任何用戶端。它唯一可能接觸網路的情況,是你傳入 --follow-network 時:這時它可能會查看位於其他電腦共用資料夾上的啟動路徑,並讓 Windows 取得這台電腦尚未持有的憑證。預設關閉,說明中解釋了原因。視窗裡的 GitHub 和 Donate 按鈕,以及 Help 功能表裡的頁面,在你按下時各自只會把一個固定的位址交給你的瀏覽器,而真正建立連線的是你的瀏覽器。
檢視不需要,變更需要。沒有系統管理員權限時,服務管理員顯示的項目更少,拒絕的動作更多,兩者都會在頂部說明這一點,而不是假裝清單就是整台電腦。視窗會提供 Restart as admin。它從不自行提升權限。
+兩者都是。GPL-3.0,沒有任何附加條件。你產生的快照是你自己的檔案。
+它自己不會。沒有你看過的計畫,就不會變更任何內容,驅動程式會被拒絕,而會關掉電腦必需之物的計畫會在警告中說明。它無法保護你的,是執行一份你沒有讀過的計畫。電腦必需的服務清單是一份七項的入門清單:RPC 的兩個部分和 DCOM 啟動器、帳戶管理員、金鑰隔離、工作階段管理員以及隨插即用,其中沒有遠端桌面,所以透過遠端工作階段操作時,請閱讀計畫。
+不是。{{product}} 是一個獨立的開放原始碼專案,與 Microsoft 沒有關聯,也未獲得 Microsoft 的認可或贊助。Windows 是 Microsoft 公司集團的商標。
+沒有,程式使用英文介面,這也是這個網站被翻譯的原因。視窗會讀取放在可執行檔旁邊的語言檔案 languages\gui.<code>.json,並依 Windows 的語言選擇,沒有切換開關,所以翻譯是一項無需重新建置程式就能加入的貢獻。清單中的服務名稱是你的 Windows 所寫的樣子,也就是你的 Windows 所設定的語言。
它是深色的,不論 Windows 如何設定,包括高對比佈景主題,它都保持深色。這是經過檢查而不是想當然:它保留自己的顏色並保持可讀,而不會跟隨該設定。
+3 結束。視窗會提示以系統管理員身分重新啟動自己,除此之外不做別的。.net 資料夾,並從那裡載入。有系統管理員權限時,它改用 Windows 磁碟機上的 ProgramData\BetterWindowsServices:這個資料夾由它建立,使得只有系統管理員能夠變更,並且每次啟動都會檢查。如果無法建立該資料夾,或者其他人可以變更它,視窗就不會啟動,並會說明是哪個資料夾以及該怎麼做。遷移到那裡意味著提升權限的視窗會再次啟動自己,這需要不到一秒,而每個版本都會在那裡留下它的程式庫(約 8 MB),直到有人刪除該資料夾。命令列不帶這樣的程式庫,也不解壓縮任何內容。svchost 內的服務,其啟動路徑指向的是裝載它的處理程序,所以檔案在那裡和誰簽的章這兩項能說明的內容,比對有獨立處理程序的服務要少。發現了問題,或者發現了這個工具與 sc.exe 回報不同的服務?問題追蹤器是開放的,把兩者的差異貼進去是最有用的資訊。
{{product}} je services.msc postavený znovu pro lidi, kteří spravují stroje s Windows - okno a příkazový řádek nad jedním jádrem. Položte stroji otázku místo listování osmi sty řádky. Zjistěte, co změna provede, dřív, než na cokoli kliknete. A to, co services.msc nikdy neměl: zmrazte každou službu do souboru a o týden později se zeptejte, co se změnilo.
+ bws, který žádá přesně totéž. Program mluví anglicky - okno čte jazykový soubor uložený vedle sebe, takže překlad je možný bez nového sestavení.Skutečná relace na Windows nainstalovaných v polštině - zobrazované názvy pocházejí z Windows, takže jsou v jeho jazyce. Samotné okno mluví anglicky.
+
+ services.msc se od Windows 2000 téměř nezměnilSprávci v něm tráví hodiny týdně a narážejí na stejné zdi.
+sc.exe zpaměti, nebo registr.sc.exe má syntaxi z devadesátých let a Get-Service, který je součástí Windows, ve Windows PowerShellu 5.1, neukazuje, pod jakým účtem služba běží, natož její popis. PowerShell 7 ukazuje obojí a instaluje se zvlášť.Process Hacker a System Informer ukazují bohatý seznam a umějí vynutit ukončení, ale nemají audit ani příkazový řádek. sc.exe a PsService umějí všechno a nic vám neřeknou. Rutiny *-Service v PowerShellu se dají skriptovat a jsou povrchní.
Nikdo nespojuje prohledávatelný seznam, náhled před každou změnou a záznam toho, co se v čase změnilo - a ten záznam je důvod, proč si tento nástroj nechat na stroji i po prvním odpoledni.
+ Úplné srovnání +start:auto !status:running znamená co by mělo běžet a neběží. Jeden jazyk, ve vyhledávacím poli i v bws list --query, s poli nabízenými při psaní.
Každé zastavení, spuštění, restart i změna typu spouštění se předem zobrazí se službami, které stáhne s sebou, a náhled je to, co se spustí.
bws snapshot create zmrazí stroj do souboru a bws snapshot diff řekne, co se od té doby změnilo, konfiguraci odděleně od toho, co se jen spustilo nebo zastavilo. bws history řekne ze systémového protokolu, kdo změnil typ spouštění a kdo nainstaloval službu. Okno dělá všechny tři věci v části Audit....
Karta Tools a bws tool fix restartují službu za tiskárnou, která netiskne, za zmizelým zvukem nebo za zaseklým vyhledáváním, spolu s tím, co na ní závisí, stejným plánem jako všechno ostatní.
Nejdřív se zeptá zdvořile a proces ukončí, jen když to selže, a pojmenuje každou další službu, která v něm žije.
services.msc skrýváKdo podepsal spustitelný soubor a jestli mu Windows důvěřuje, triggery, privilegia, popisovač zabezpečení, proces a jeho paměť. Jako sloupce i jako věci, podle kterých se dá hledat.
Pole, které nešlo přečíst, se ohlásí jako nepřečtené, nikdy se neukáže jako prázdné. Snímek pořízený bez práv správce to říká uvnitř souboru.
--json u každého příkazu, návratový kód pro každý konec a 5, když porovnání najde drift.
Rozbalit a spustit, nebo nainstalovat pro celý stroj. Žádné .NET k instalaci a nikdy nekomunikuje s internetem. Čtení nepotřebuje práva správce. GPL-3.0.
Snímek je celý stroj v jednom okamžiku - každá služba a ovladač s typem spouštění, účtem, cestou ke spuštění, hashem a podepisovatelem souboru, závislostmi, triggery, privilegii a popisovačem zabezpečení. Je to JSON s jedním polem na řádek, takže patří do repozitáře a git diff ho čte.
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ --exit-code skončí kódem 5, když se konfigurace liší, takže naplánovaná úloha může při nasazení pořídit snímek a první noc, kdy se stroj odchýlí, někoho upozornit.Každá operace, která zapisuje, nejdřív sestaví plán a týž plán je náhled, kaskáda závislých služeb, odmítnutí dřív, než na cokoli kliknete, příkazový řádek, který žádá totéž, a cesta zpět po provedení.
+$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt (2 steps)
+ 1. stop vmms (would break otherwise)
+ 2. stop Winmgmt (asked for)
+
+Warnings:
+ - Stopping Winmgmt also stops one other entry: vmms
+ - Winmgmt starts automatically, so it will be back after the next restart.
+ --dry-run a tohle jsou kroky, v tomto pořadí, se stejnými důvody vedle nich. Pro skutečné provedení neexistuje druhá cesta v kódu.bws kill požádá službu o zastavení a její proces ukončí, jen když to nezabere, a pojmenuje každou další službu, která v něm žije.Stejné jádro jako okno, pro skripty, naplánované úlohy a CI. Data jdou na standardní výstup a všechno ostatní na standardní chybový výstup, takže bws list --json | jq funguje a varování nikdy nepřistane ve vašem JSONu.
bws list --query "start:auto !status:running" co by mělo běžet a neběží
+bws list --query "file:missing" služby, jejichž spustitelný soubor je pryč
+bws list --query "signed:no peruser:no" nepodepsané, bez kopií pro jednotlivé relace
+bws show Spooler všechno, co je o jedné položce známo
+bws stop Winmgmt --dry-run --dependents co by zastavení strhlo s sebou
+bws kill Spooler --dry-run co by ukončení jeho procesu vzalo s sebou
+bws start-type Spooler manual --dry-run co by udělalo jeho sundání z automatického spouštění
+bws snapshot create before.json zmrazit stroj před změnou
+bws snapshot diff before.json --live --exit-code co se od té doby změnilo, 5 pokud se změnila konfigurace
+bws history Spooler kdo změnil jeho typ spouštění a kdy
+bws tool fix printer --dry-run co by udělala rychlá oprava zaseklé tiskárny
+ Každý příkaz, přepínač a návratový kód
+ Windows 10 1809 nebo Windows Server 2019 a novější, 64bitové. Archivy nepotřebují instalační program a nic nezapisují do registru a k prohlížení nejsou potřeba práva správce. Cokoli měnit vyžaduje relaci se zvýšenými oprávněními a obě poloviny to říkají místo tichého selhání - okno nabízí Restart as admin.
+| Soubor | Co to je |
|---|---|
{{archive_window}} | Okno, jeden samostatný spustitelný soubor - žádné .NET k instalaci |
{{archive_cli}} | Příkazový řádek, jeden samostatný spustitelný soubor, pro skripty a CI |
{{archive_installer}} | Instalační program: oba programy pro každý účet na stroji, okno v nabídce Start a bws v PATH |
Spustitelné soubory nesou podpis Authenticode, takže Windows uvádí vydavatele místo varování před neznámým.
+ +{{product}} adalah services.msc yang dibangun ulang untuk orang yang mengelola mesin Windows - sebuah jendela dan sebuah baris perintah di atas satu mesin yang sama. Ajukan pertanyaan kepada mesin alih-alih menggulir delapan ratus baris. Lihat apa yang akan dilakukan sebuah perubahan sebelum Anda menekan apa pun. Dan bagian yang tidak pernah dimiliki services.msc: bekukan setiap layanan ke dalam satu berkas, lalu seminggu kemudian tanyakan apa yang berubah.
+ bws yang meminta hal yang persis sama. Program ini berbahasa Inggris - jendela membaca berkas bahasa yang ditaruh di sebelahnya, sehingga terjemahan dimungkinkan tanpa membangun ulang.Sebuah sesi nyata, pada Windows yang terpasang dalam bahasa Polandia - nama tampilan berasal dari Windows, jadi memakai bahasanya. Jendela itu sendiri berbahasa Inggris.
+
+ services.msc nyaris tidak berubah sejak Windows 2000Administrator menghabiskan berjam-jam seminggu di dalamnya sambil menabrak tembok yang sama.
+sc.exe dari ingatan, atau registri.sc.exe punya sintaks dari era sembilan puluhan, dan Get-Service bawaan Windows, di Windows PowerShell 5.1, tidak menampilkan akun tempat layanan berjalan, apalagi deskripsinya. PowerShell 7 menampilkan keduanya dan dipasang terpisah.Process Hacker dan System Informer menampilkan daftar yang kaya dan dapat mematikan proses secara paksa, tetapi tidak punya audit dan tidak punya baris perintah. sc.exe dan PsService bisa melakukan segalanya dan tidak memberi tahu Anda apa pun. Cmdlet *-Service milik PowerShell bisa diskrip dan dangkal.
Tidak ada yang menggabungkan daftar yang bisa dicari, pratinjau sebelum setiap perubahan, dan catatan tentang apa yang berubah dari waktu ke waktu - dan catatan itulah alasan mempertahankan alat ini di sebuah mesin setelah sore pertama.
+ Perbandingan lengkap +start:auto !status:running berarti apa yang seharusnya hidup dan tidak hidup. Satu bahasa, di kotak pencarian dan di bws list --query, dengan bidang yang ditawarkan saat Anda mengetik.
Setiap penghentian, permulaan, restart, dan perubahan tipe startup dipratinjau bersama layanan yang ikut jatuh, dan pratinjau itulah yang dijalankan.
bws snapshot create membekukan mesin ke dalam berkas, dan bws snapshot diff menyebutkan apa yang berubah sejak itu, konfigurasi terpisah dari apa yang sekadar mulai atau berhenti. bws history menyebutkan, dari log System, siapa yang mengubah tipe startup dan siapa yang memasang layanan. Jendela melakukan ketiganya di bawah Audit....
Tab Tools dan bws tool fix me-restart layanan di balik printer yang tidak mencetak, suara yang hilang, atau pencarian yang macet, bersama apa yang bergantung padanya, melalui rencana yang sama dengan yang lain.
Ia meminta dengan sopan terlebih dahulu dan mengakhiri proses hanya jika itu gagal, sambil menyebut setiap layanan lain yang hidup di dalamnya.
services.mscSiapa yang menandatangani berkas eksekusi dan apakah Windows memercayainya, pemicu, hak istimewa, deskriptor keamanan, proses dan memorinya. Sebagai kolom, dan sebagai hal yang bisa dicari.
Bidang yang tidak bisa dibacanya dilaporkan sebagai tidak terbaca, tidak pernah ditampilkan kosong. Snapshot yang diambil tanpa hak administrator menyatakannya di dalam berkas itu sendiri.
--json di setiap perintah, kode keluar untuk setiap akhiran, dan 5 ketika sebuah perbandingan menemukan penyimpangan.
Ekstrak dan jalankan, atau pasang untuk seluruh mesin. Tidak ada .NET yang perlu dipasang, dan tidak pernah terhubung ke internet. Membaca tidak membutuhkan hak administrator. GPL-3.0.
Snapshot adalah seluruh mesin pada satu saat - setiap layanan dan driver, dengan tipe startup, akun, jalur peluncuran, hash dan penandatangan berkasnya, dependensi, pemicu, hak istimewa, dan deskriptor keamanan. Berupa JSON dengan satu bidang per baris, sehingga bisa masuk ke repositori dan git diff membacanya.
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ --exit-code berakhir dengan 5 ketika konfigurasi berbeda, sehingga tugas terjadwal dapat mengambil snapshot saat penerapan dan memanggil seseorang pada malam pertama mesin menyimpang.Setiap operasi yang menulis membangun rencana terlebih dahulu, dan rencana yang sama itu adalah pratinjau, kaskade layanan dependen, penolakan sebelum Anda menekan apa pun, baris perintah yang meminta hal yang sama, dan jalan kembali sesudahnya.
+$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt (2 steps)
+ 1. stop vmms (would break otherwise)
+ 2. stop Winmgmt (asked for)
+
+Warnings:
+ - Stopping Winmgmt also stops one other entry: vmms
+ - Winmgmt starts automatically, so it will be back after the next restart.
+ --dry-run dan inilah langkah-langkahnya, dalam urutan itu, dengan alasan yang sama di sampingnya. Tidak ada jalur kode kedua untuk eksekusi yang sebenarnya.bws kill meminta layanan berhenti dan mengakhiri prosesnya hanya jika itu tidak berhasil, sambil menyebut setiap layanan lain yang hidup di dalamnya.Mesin yang sama dengan jendela, untuk skrip, tugas terjadwal, dan CI. 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.
bws list --query "start:auto !status:running" apa yang seharusnya hidup dan tidak hidup
+bws list --query "file:missing" layanan yang berkas eksekusinya hilang
+bws list --query "signed:no peruser:no" tidak bertanda tangan, tanpa salinan per sesi
+bws show Spooler semua yang diketahui tentang satu entri
+bws stop Winmgmt --dry-run --dependents apa yang akan ikut jatuh bila dihentikan
+bws kill Spooler --dry-run apa yang akan ikut terbawa bila prosesnya diakhiri
+bws start-type Spooler manual --dry-run apa yang terjadi bila dikeluarkan dari otomatis
+bws snapshot create before.json bekukan mesin sebelum perubahan
+bws snapshot diff before.json --live --exit-code apa yang berubah sejak itu, 5 bila konfigurasinya berubah
+bws history Spooler siapa yang mengubah tipe startup-nya, dan kapan
+bws tool fix printer --dry-run apa yang akan dilakukan perbaikan cepat untuk printer yang macet
+ Setiap perintah, opsi, dan kode keluar
+ Windows 10 1809 atau Windows Server 2019 dan yang lebih baru, 64-bit. Arsip tidak membutuhkan installer dan tidak menulis apa pun ke registri, dan melihat tidak membutuhkan hak administrator. Mengubah apa pun membutuhkan sesi dengan hak tinggi, dan kedua bagian menyatakannya alih-alih gagal diam-diam - jendela menawarkan Restart as admin.
+| Berkas | Apa itu |
|---|---|
{{archive_window}} | Jendela, satu berkas eksekusi mandiri - tidak ada .NET yang perlu dipasang |
{{archive_cli}} | Baris perintah, satu berkas eksekusi mandiri, untuk skrip dan CI |
{{archive_installer}} | Installer: kedua program untuk setiap akun di mesin, jendela di menu Start, dan bws di PATH |
Berkas eksekusi membawa tanda tangan Authenticode, sehingga Windows menyebut penerbitnya alih-alih memperingatkan tentang penerbit yang tidak dikenal.
+ +{{product}} は、Windows マシンを管理する人のために作り直した services.msc です。ウィンドウとコマンドラインが、同じエンジンの上で動きます。800 行をスクロールする代わりに、マシンに質問してください。何かを押す前に、変更で何が起きるかを確認できます。そして services.msc にはなかった機能があります。すべてのサービスをファイルに固定し、1 週間後に何が変わったかを尋ねられます。
+ bws の行。プログラムは英語で表示されます。ウィンドウは隣に置かれた言語ファイルを読み込むため、再ビルドなしで翻訳できます。services.msc は Windows 2000 からほとんど変わっていません管理者は毎週何時間もこれを使い、同じ壁にぶつかっています。
+sc.exe かレジストリが必要です。sc.exe の構文は 1990 年代のものです。Windows に付属する Windows PowerShell 5.1 の Get-Service は、サービスを実行しているアカウントを表示せず、説明も表示しません。PowerShell 7 はどちらも表示しますが、別途インストールが必要です。Process Hacker と System Informer は豊富な一覧を表示し、強制終了もできますが、監査機能もコマンドラインもありません。sc.exe と PsService は何でもできますが、何も教えてくれません。PowerShell の *-Service コマンドレットはスクリプトで使えますが、浅い情報しか得られません。
検索できる一覧、すべての変更の前のプレビュー、時間をかけた変更の記録を組み合わせたものはありません。そして最初の 1 日が過ぎてもこのツールをマシンに置いておく理由は、この記録です。
+ 詳しい比較 +start:auto !status:running は起動しているはずなのに起動していないものです。検索ボックスでも bws list --query でも同じ言語で、入力中にフィールドが候補として表示されます。
停止、開始、再起動、スタートアップの種類の変更はすべて、巻き込まれるサービスとともに事前にプレビューされ、プレビューがそのまま実行されます。
bws snapshot create はマシンをファイルに固定し、bws snapshot diff はその後に何が変わったかを、単に開始や停止をしただけのものとは分けて構成として示します。bws history は System ログから、誰がスタートアップの種類を変更し、誰がサービスをインストールしたかを示します。ウィンドウでは、この 3 つすべてを Audit... から実行できます。
Tools タブと bws tool fix は、印刷されないプリンター、出なくなった音、止まった検索の裏にあるサービスを、それに依存するものとともに、ほかの操作と同じプランで再起動します。
最初は丁寧に停止を要求し、それが失敗した場合にのみプロセスを終了します。同じプロセスに存在するほかのサービスはすべて名前が示されます。
services.msc が隠しているものを表示する実行ファイルを誰が署名したか、Windows がそれを信頼しているか、トリガー、特権、セキュリティ記述子、プロセスとそのメモリ。列として表示でき、検索条件にもできます。
読み取れなかったフィールドは、空ではなく読み取れなかったものとして報告されます。管理者権限なしで取得したスナップショットには、ファイルの中にそのことが記録されます。
すべてのコマンドで --json、終了のたびに終了コード、差分でドリフトが見つかったときは 5。
展開して実行するか、マシン全体にインストールします。.NET のインストールは不要で、インターネットには一切接続しません。読み取りに管理者権限は不要です。GPL-3.0。
スナップショットは、ある時点のマシン全体です。すべてのサービスとドライバーについて、スタートアップの種類、アカウント、起動パス、ファイルのハッシュと署名者、依存関係、トリガー、特権、セキュリティ記述子が含まれます。1 行に 1 フィールドの JSON なので、リポジトリに入れることができ、git diff で読めます。
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ --exit-code は、構成が異なる場合に 5 で終了します。そのため、スケジュールされたタスクがデプロイ時にスナップショットを取り、マシンがドリフトした最初の夜に誰かを呼び出せます。書き込みを行う操作はすべて、最初にプランを作ります。同じプランが、プレビュー、依存サービスへの連鎖、何かを押す前の拒否、同じことを要求するコマンドライン、そして実行後に元へ戻す方法になります。
+$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt (2 steps)
+ 1. stop vmms (would break otherwise)
+ 2. stop Winmgmt (asked for)
+
+Warnings:
+ - Stopping Winmgmt also stops one other entry: vmms
+ - Winmgmt starts automatically, so it will be back after the next restart.
+ --dry-run を外して実行すると、それがそのままのステップです。同じ順序で、同じ理由が横に表示されます。実際の実行のための別のコード経路はありません。bws kill はサービスに停止を要求し、それがうまくいかない場合にのみプロセスを終了します。そのプロセスに存在するほかのサービスはすべて名前が示されます。スクリプト、スケジュールされたタスク、CI のための、ウィンドウと同じエンジンです。データは標準出力に、それ以外はすべて標準エラーに出力されるので、bws list --json | jq が動作し、警告が JSON に混ざることはありません。
bws list --query "start:auto !status:running" 起動しているはずなのに起動していないもの
+bws list --query "file:missing" 実行ファイルがなくなったサービス
+bws list --query "signed:no peruser:no" 署名なし。セッションごとのコピーを除く
+bws show Spooler 1 つのエントリについてわかっているすべて
+bws stop Winmgmt --dry-run --dependents 停止すると何が巻き込まれるか
+bws kill Spooler --dry-run プロセスを終了すると何が巻き込まれるか
+bws start-type Spooler manual --dry-run 自動からはずすと何が起きるか
+bws snapshot create before.json 変更の前にマシンを固定する
+bws snapshot diff before.json --live --exit-code それ以降の変更点。構成が変わっていれば 5
+bws history Spooler 誰がいつスタートアップの種類を変更したか
+bws tool fix printer --dry-run 止まったプリンターのクイック修正が行うこと
+ すべてのコマンド、オプション、終了コード
+ Windows 10 1809 または Windows Server 2019 以降、64 ビット。アーカイブにインストーラーは不要で、レジストリには何も書き込みません。見るだけなら管理者権限は不要です。何かを変更するには昇格したセッションが必要で、どちらの側もそのことを黙って失敗せずに伝えます。ウィンドウには Restart as admin があります。
+| ファイル | 内容 |
|---|---|
{{archive_window}} | ウィンドウです。1 つの自己完結型の実行ファイルで、.NET のインストールは不要です |
{{archive_cli}} | コマンドラインです。スクリプトと CI のための、1 つの自己完結型の実行ファイルです |
{{archive_installer}} | インストーラーです。マシン上のすべてのアカウント向けに両方のプログラムをインストールし、ウィンドウをスタート メニューに、bws を PATH に追加します |
実行ファイルには Authenticode 署名があるため、Windows は不明な発行元として警告せず、発行元の名前を表示します。
+{{product}}는 Windows 컴퓨터를 관리하는 사람을 위해 다시 만든 services.msc입니다. 창과 명령줄이 하나의 엔진 위에서 동작합니다. 800개 행을 스크롤하는 대신 컴퓨터에 질문하세요. 아무것도 누르기 전에 변경이 무엇을 하는지 확인하세요. 그리고 services.msc에 없던 기능이 있습니다. 모든 서비스를 파일로 고정해 두고, 일주일 뒤 무엇이 바뀌었는지 물을 수 있습니다.
+ bws 줄입니다. 프로그램은 영어로 표시됩니다. 창은 옆에 놓인 언어 파일을 읽으므로 다시 빌드하지 않고도 번역할 수 있습니다.services.msc는 Windows 2000 이후 거의 바뀌지 않았습니다관리자는 매주 몇 시간씩 이것을 사용하며 같은 벽에 부딪힙니다.
+sc.exe나 레지스트리가 필요합니다.sc.exe는 1990년대 구문을 쓰고, Windows에 포함된 Windows PowerShell 5.1의 Get-Service는 서비스가 실행되는 계정은 물론 설명도 보여 주지 않습니다. PowerShell 7은 둘 다 보여 주며, 별도로 설치합니다.Process Hacker와 System Informer는 풍부한 목록을 보여 주고 강제 종료를 할 수 있지만 감사 기능과 명령줄이 없습니다. sc.exe와 PsService는 모든 것을 할 수 있지만 아무것도 알려 주지 않습니다. PowerShell의 *-Service cmdlet은 스크립트에 쓸 수 있지만 얕습니다.
검색 가능한 목록, 모든 변경 전의 미리 보기, 시간에 따른 변경 기록을 함께 갖춘 도구는 없습니다. 그리고 첫 오후가 지난 뒤에도 이 도구를 컴퓨터에 두는 이유가 바로 그 기록입니다.
+ 전체 비교 +start:auto !status:running은 떠 있어야 하는데 떠 있지 않은 것입니다. 검색 상자와 bws list --query에서 같은 하나의 언어를 쓰며, 입력하는 동안 필드가 제안됩니다.
모든 중지, 시작, 재시작, 시작 유형 변경은 함께 내려가는 서비스와 함께 미리 보이며, 미리 보기가 곧 실행되는 내용입니다.
bws snapshot create는 컴퓨터를 파일로 고정하고, bws snapshot diff는 그 이후 무엇이 바뀌었는지를, 단순히 시작되거나 중지된 것과 구분해 구성 기준으로 알려 줍니다. bws history는 System 로그에서 누가 시작 유형을 바꿨고 누가 서비스를 설치했는지 알려 줍니다. 창은 Audit... 아래에서 세 가지를 모두 합니다.
Tools 탭과 bws tool fix는 인쇄되지 않는 프린터, 사라진 소리, 멈춘 검색 뒤에 있는 서비스를, 그것에 종속된 것과 함께, 다른 모든 작업과 같은 계획을 통해 재시작합니다.
먼저 정중하게 요청하고, 그것이 실패할 때만 프로세스를 종료하며, 그 안에서 실행 중인 다른 서비스를 모두 이름으로 알려 줍니다.
services.msc가 숨기는 것을 보여 줍니다실행 파일에 서명한 주체와 Windows가 그것을 신뢰하는지, 트리거, 권한, 보안 설명자, 프로세스와 그 메모리를 보여 줍니다. 열로 보여 주고 검색 조건으로도 쓸 수 있습니다.
읽지 못한 필드는 비어 있는 것으로 표시되지 않고 읽지 못한 것으로 보고됩니다. 관리자 권한 없이 만든 스냅샷은 파일 안에 그 사실을 기록합니다.
모든 명령에 --json, 모든 종료 방식에 종료 코드, 차이에서 드리프트가 발견되면 5.
압축을 풀어 실행하거나 컴퓨터 전체에 설치합니다. 설치할 .NET이 없고, 인터넷에 접속하지 않습니다. 읽기에는 관리자 권한이 필요 없습니다. GPL-3.0.
스냅샷은 한 시점의 컴퓨터 전체입니다. 모든 서비스와 드라이버의 시작 유형, 계정, 시작 경로, 파일의 해시와 서명자, 종속성, 트리거, 권한, 보안 설명자가 들어 있습니다. 한 줄에 필드 하나인 JSON이라서 저장소에 넣을 수 있고 git diff로 읽을 수 있습니다.
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ --exit-code는 구성이 다르면 5로 종료합니다. 따라서 예약 작업이 배포 때 스냅샷을 만들고, 컴퓨터가 드리프트한 첫날 밤에 누군가를 호출할 수 있습니다.쓰기를 하는 모든 작업은 먼저 계획을 만들고, 같은 계획이 미리 보기, 종속 서비스로의 연쇄, 아무것도 누르기 전의 거부, 같은 일을 요청하는 명령줄, 그리고 나중의 되돌리기가 됩니다.
+$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt (2 steps)
+ 1. stop vmms (would break otherwise)
+ 2. stop Winmgmt (asked for)
+
+Warnings:
+ - Stopping Winmgmt also stops one other entry: vmms
+ - Winmgmt starts automatically, so it will be back after the next restart.
+ --dry-run 없이 실행하면 그 단계들이 그대로 실행됩니다. 같은 순서로, 같은 이유가 옆에 표시됩니다. 실제 작업을 위한 두 번째 코드 경로는 없습니다.bws kill은 서비스에 중지를 요청하고, 그것이 통하지 않을 때만 프로세스를 종료하며, 그 안에 있는 다른 서비스를 모두 이름으로 알려 줍니다.스크립트, 예약 작업, CI를 위한, 창과 같은 엔진입니다. 데이터는 표준 출력으로, 나머지는 모두 표준 오류로 나가므로 bws list --json | jq가 동작하고 경고가 JSON에 섞이지 않습니다.
bws list --query "start:auto !status:running" 떠 있어야 하는데 떠 있지 않은 것
+bws list --query "file:missing" 실행 파일이 사라진 서비스
+bws list --query "signed:no peruser:no" 서명 없음, 세션별 복사본 제외
+bws show Spooler 한 항목에 대해 알려진 모든 것
+bws stop Winmgmt --dry-run --dependents 중지하면 무엇이 함께 내려가는지
+bws kill Spooler --dry-run 프로세스를 종료하면 무엇이 함께 사라지는지
+bws start-type Spooler manual --dry-run 자동에서 빼면 무슨 일이 일어나는지
+bws snapshot create before.json 변경 전에 컴퓨터를 고정
+bws snapshot diff before.json --live --exit-code 그 이후 바뀐 것, 구성이 바뀌었으면 5
+bws history Spooler 누가 언제 시작 유형을 바꿨는지
+bws tool fix printer --dry-run 멈춘 프린터의 빠른 해결이 하는 일
+ 모든 명령, 옵션, 종료 코드
+ Windows 10 1809 또는 Windows Server 2019 이상, 64비트. 압축 파일에는 설치 프로그램이 필요 없고 레지스트리에 아무것도 쓰지 않으며, 보기만 할 때는 관리자 권한이 필요 없습니다. 무엇이든 변경하려면 상승된 세션이 필요하며, 두 쪽 모두 조용히 실패하지 않고 그 사실을 알려 줍니다. 창은 Restart as admin을 제공합니다.
+| 파일 | 설명 |
|---|---|
{{archive_window}} | 창입니다. 자체 포함 실행 파일 하나이며, 설치할 .NET이 없습니다 |
{{archive_cli}} | 명령줄입니다. 스크립트와 CI를 위한 자체 포함 실행 파일 하나입니다 |
{{archive_installer}} | 설치 프로그램입니다. 컴퓨터의 모든 계정을 위해 두 프로그램을 설치하고, 창은 시작 메뉴에, bws는 PATH에 추가합니다 |
실행 파일에는 Authenticode 서명이 있으므로, Windows는 알 수 없는 게시자를 경고하는 대신 게시자 이름을 표시합니다.
+ +{{product}} is services.msc, opnieuw gebouwd voor wie Windows-machines beheert - een venster en een opdrachtregel op één engine. Stel de machine een vraag in plaats van achthonderd rijen door te scrollen. Zie wat een wijziging gaat doen voordat u ergens op drukt. En wat services.msc nooit had: elke service in een bestand vastleggen en een week later vragen wat er is veranderd.
+ bws-regel die precies hetzelfde vraagt. Het programma spreekt Engels - het venster leest een taalbestand dat ernaast ligt, dus een vertaling is mogelijk zonder opnieuw te bouwen.Een echte sessie, op een in het Pools geïnstalleerd Windows - de weergavenamen komen van Windows, dus staan ze in de taal ervan. Het venster zelf spreekt Engels.
+
+ services.msc is sinds Windows 2000 nauwelijks veranderdBeheerders besteden er elke week uren aan en lopen steeds tegen dezelfde muren op.
+sc.exe uit het hoofd, of het register.sc.exe heeft een syntaxis uit de jaren negentig, en de Get-Service die met Windows meekomt, in Windows PowerShell 5.1, toont niet onder welk account een service draait, laat staan de beschrijving. PowerShell 7 toont beide en wordt apart geïnstalleerd.Process Hacker en System Informer tonen een rijke lijst en kunnen een proces geforceerd beëindigen, maar hebben geen audit en geen opdrachtregel. sc.exe en PsService kunnen alles en vertellen u niets. De *-Service-cmdlets van PowerShell zijn scriptbaar en oppervlakkig.
Niemand combineert een doorzoekbare lijst, een voorvertoning vóór elke wijziging en een logboek van wat er in de loop van de tijd is veranderd - en dat logboek is de reden om dit hulpmiddel na de eerste middag op een machine te houden.
+ De volledige vergelijking +start:auto !status:running is wat moet draaien en niet draait. Eén taal, in het zoekvak en in bws list --query, met de velden als suggestie terwijl u typt.
Elke stop, start, herstart en wijziging van het opstarttype wordt vooraf getoond, met de services die erdoor meevallen, en de voorvertoning is wat er draait.
bws snapshot create legt de machine vast in een bestand en bws snapshot diff zegt wat er sindsdien is veranderd, de configuratie los van wat alleen is gestart of gestopt. bws history zegt aan de hand van het systeemlogboek wie een opstarttype heeft gewijzigd en wie een service heeft geïnstalleerd. Het venster doet alle drie onder Audit....
Het tabblad Tools en bws tool fix herstarten de service achter een printer die niet print, geluid dat weg is of een vastgelopen zoekopdracht, samen met wat ervan afhangt, via hetzelfde plan als al het andere.
Het vraagt eerst beleefd en beëindigt het proces alleen als dat mislukt, waarbij elke andere service die erin leeft wordt genoemd.
services.msc verbergtWie het uitvoerbare bestand heeft ondertekend en of Windows het vertrouwt, triggers, bevoegdheden, de beveiligingsdescriptor, het proces en het geheugen ervan. Als kolommen en als zoekcriteria.
Een veld dat het niet kon lezen wordt gemeld als niet gelezen, nooit getoond als leeg. Een momentopname zonder beheerdersrechten zegt dat in het bestand zelf.
--json bij elke opdracht, een afsluitcode voor elk einde en 5 wanneer een vergelijking drift vindt.
Uitpakken en starten, of installeren voor de hele machine. Geen .NET om te installeren, en het maakt nooit verbinding met internet. Voor lezen zijn geen beheerdersrechten nodig. GPL-3.0.
Een momentopname is de hele machine op één moment - elke service en elk stuurprogramma, met opstarttype, account, opstartpad, de hash en de ondertekenaar van het bestand, afhankelijkheden, triggers, bevoegdheden en beveiligingsdescriptor. Het is JSON met één veld per regel, dus het past in een repository en git diff leest het.
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ --exit-code eindigt met 5 wanneer de configuratie verschilt, zodat een geplande taak bij de uitrol een momentopname kan maken en de eerste nacht dat de machine afdrijft iemand kan waarschuwen.Elke bewerking die schrijft bouwt eerst een plan, en datzelfde plan is de voorvertoning, de waterval van afhankelijke services, de weigering voordat u ergens op drukt, de opdrachtregel die hetzelfde vraagt en de weg terug achteraf.
+$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt (2 steps)
+ 1. stop vmms (would break otherwise)
+ 2. stop Winmgmt (asked for)
+
+Warnings:
+ - Stopping Winmgmt also stops one other entry: vmms
+ - Winmgmt starts automatically, so it will be back after the next restart.
+ --dry-run en dit zijn de stappen, in die volgorde, met dezelfde redenen ernaast. Er is geen tweede codepad voor de echte uitvoering.bws kill vraagt de service te stoppen en beëindigt het proces alleen als dat niet werkt, waarbij elke andere service die erin leeft wordt genoemd.Dezelfde engine als het venster, voor scripts, geplande taken en CI. Gegevens gaan naar de standaarduitvoer en al het andere naar de standaardfout, zodat bws list --json | jq werkt en een waarschuwing nooit in uw JSON belandt.
bws list --query "start:auto !status:running" wat moet draaien en niet draait
+bws list --query "file:missing" services waarvan het uitvoerbare bestand weg is
+bws list --query "signed:no peruser:no" niet ondertekend, zonder de kopieën per sessie
+bws show Spooler alles wat bekend is over een item
+bws stop Winmgmt --dry-run --dependents wat stoppen ervan zou meenemen
+bws kill Spooler --dry-run wat het beëindigen van het proces zou meenemen
+bws start-type Spooler manual --dry-run wat het van automatisch halen zou doen
+bws snapshot create before.json de machine vastleggen voor een wijziging
+bws snapshot diff before.json --live --exit-code wat er sindsdien is veranderd, 5 als de configuratie dat is
+bws history Spooler wie het opstarttype heeft gewijzigd, en wanneer
+bws tool fix printer --dry-run wat de snelle oplossing voor een vastgelopen printer zou doen
+ Elke opdracht, optie en afsluitcode
+ Windows 10 1809 of Windows Server 2019 en later, 64-bits. De archieven hebben geen installatieprogramma nodig en schrijven niets naar het register, en kijken vraagt geen beheerdersrechten. Iets wijzigen vraagt een sessie met verhoogde rechten, en beide helften zeggen dat in plaats van stil te mislukken - het venster biedt Restart as admin aan.
+| Bestand | Wat het is |
|---|---|
{{archive_window}} | Het venster, één zelfstandig uitvoerbaar bestand - geen .NET om te installeren |
{{archive_cli}} | De opdrachtregel, één zelfstandig uitvoerbaar bestand, voor scripts en CI |
{{archive_installer}} | Het installatieprogramma: beide programma's voor elk account op de machine, het venster in het startmenu en bws in het PATH |
De uitvoerbare bestanden dragen een Authenticode-handtekening, zodat Windows de uitgever noemt in plaats van te waarschuwen voor een onbekende.
+ +{{product}} este services.msc reconstruit pentru cei care administrează mașini Windows - o fereastră și o linie de comandă peste același motor. Puneți mașinii o întrebare în loc să derulați opt sute de rânduri. Vedeți ce va face o modificare înainte să apăsați orice. Și ceea ce services.msc nu a avut niciodată: înghețați fiecare serviciu într-un fișier și, peste o săptămână, întrebați ce s-a schimbat.
+ bws care cere exact același lucru. Programul vorbește engleza - fereastra citește un fișier de limbă așezat lângă ea, deci o traducere este posibilă fără recompilare.O sesiune reală, pe un Windows instalat în poloneză - numele afișate vin de la Windows, deci sunt în limba lui. Fereastra însăși vorbește engleza.
+
+ services.msc aproape că nu s-a schimbat din Windows 2000Administratorii petrec ore pe săptămână în el, lovindu-se de aceleași ziduri.
+sc.exe din memorie sau registrul.sc.exe are o sintaxă din anii nouăzeci, iar Get-Service care vine cu Windows, în Windows PowerShell 5.1, nu arată contul sub care rulează un serviciu, darămite descrierea lui. PowerShell 7 le arată pe amândouă și se instalează separat.Process Hacker și System Informer arată o listă bogată și pot forța încheierea unui proces, dar nu au audit și nici linie de comandă. sc.exe și PsService pot face orice și nu vă spun nimic. Cmdleturile *-Service din PowerShell se pot automatiza și sunt superficiale.
Nimeni nu combină o listă în care se poate căuta, o previzualizare înainte de fiecare modificare și o evidență a ceea ce s-a schimbat în timp - iar evidența este motivul pentru care merită păstrat acest instrument pe o mașină după prima după-amiază.
+ Comparația completă +start:auto !status:running înseamnă ce ar trebui să fie pornit și nu este. Un singur limbaj, în caseta de căutare și în bws list --query, cu câmpurile oferite pe măsură ce tastați.
Fiecare oprire, pornire, repornire și schimbare a tipului de pornire este previzualizată împreună cu serviciile pe care le trage după ea, iar previzualizarea este ceea ce se execută.
bws snapshot create îngheață mașina într-un fișier, iar bws snapshot diff spune ce s-a schimbat de atunci, configurația separat de ceea ce doar a pornit sau s-a oprit. bws history spune, din jurnalul System, cine a schimbat un tip de pornire și cine a instalat un serviciu. Fereastra le face pe toate trei la Audit....
Fila Tools și bws tool fix repornesc serviciul din spatele unei imprimante care nu tipărește, al sunetului dispărut sau al unei căutări blocate, împreună cu ce depinde de el, prin același plan ca orice altceva.
Cere mai întâi politicos și încheie procesul doar dacă asta eșuează, numind fiecare alt serviciu care trăiește în el.
services.mscCine a semnat fișierul executabil și dacă Windows are încredere în el, declanșatoare, privilegii, descriptorul de securitate, procesul și memoria lui. Ca coloane și ca lucruri după care se poate căuta.
Un câmp pe care nu l-a putut citi este raportat ca necitit, niciodată afișat ca gol. Un instantaneu făcut fără drepturi de administrator spune asta în interiorul fișierului.
--json la fiecare comandă, un cod de ieșire pentru fiecare final și 5 când o comparație găsește derivă.
Dezarhivați și rulați sau instalați pentru toată mașina. Fără .NET de instalat și nu comunică niciodată cu internetul. Citirea nu cere drepturi de administrator. GPL-3.0.
Un instantaneu este întreaga mașină la un moment dat - fiecare serviciu și driver, cu tipul de pornire, contul, calea de lansare, hash-ul și semnatarul fișierului, dependențele, declanșatoarele, privilegiile și descriptorul de securitate. Este JSON cu un câmp pe rând, deci poate intra într-un depozit și git diff îl citește.
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ --exit-code se încheie cu 5 când configurația diferă, astfel încât o sarcină programată poate face un instantaneu la implementare și poate alerta pe cineva în prima noapte în care mașina derivă.Fiecare operație care scrie construiește mai întâi un plan, iar același plan este previzualizarea, cascada serviciilor dependente, refuzul înainte să apăsați orice, linia de comandă care cere același lucru și drumul înapoi după aceea.
+$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt (2 steps)
+ 1. stop vmms (would break otherwise)
+ 2. stop Winmgmt (asked for)
+
+Warnings:
+ - Stopping Winmgmt also stops one other entry: vmms
+ - Winmgmt starts automatically, so it will be back after the next restart.
+ --dry-run și acestea sunt pașii, în această ordine, cu aceleași motive alături. Nu există o a doua cale de cod pentru execuția reală.bws kill cere serviciului să se oprească și îi încheie procesul doar dacă asta nu funcționează, numind fiecare alt serviciu care trăiește în el.Același motor ca fereastra, pentru scripturi, sarcini programate și CI. Datele merg la ieșirea standard și tot restul la eroarea standard, deci bws list --json | jq funcționează, iar un avertisment nu ajunge niciodată în JSON-ul dumneavoastră.
bws list --query "start:auto !status:running" ce ar trebui să fie pornit și nu este
+bws list --query "file:missing" servicii al căror fișier executabil a dispărut
+bws list --query "signed:no peruser:no" nesemnate, fără copiile pe sesiune
+bws show Spooler tot ce se știe despre o intrare
+bws stop Winmgmt --dry-run --dependents ce ar doborî oprirea lui
+bws kill Spooler --dry-run ce ar lua cu sine încheierea procesului lui
+bws start-type Spooler manual --dry-run ce ar face scoaterea lui din pornirea automată
+bws snapshot create before.json îngheață mașina înainte de o schimbare
+bws snapshot diff before.json --live --exit-code ce s-a schimbat de atunci, 5 dacă s-a schimbat configurația
+bws history Spooler cine i-a schimbat tipul de pornire și când
+bws tool fix printer --dry-run ce ar face remedierea rapidă pentru o imprimantă blocată
+ Fiecare comandă, opțiune și cod de ieșire
+ Windows 10 1809 sau Windows Server 2019 și mai noi, pe 64 de biți. Arhivele nu au nevoie de program de instalare și nu scriu nimic în registru, iar privitul nu cere drepturi de administrator. Orice modificare cere o sesiune cu drepturi ridicate, iar ambele jumătăți spun asta în loc să eșueze în tăcere - fereastra oferă Restart as admin.
+| Fișier | Ce este |
|---|---|
{{archive_window}} | Fereastra, un singur executabil independent - fără .NET de instalat |
{{archive_cli}} | Linia de comandă, un singur executabil independent, pentru scripturi și CI |
{{archive_installer}} | Programul de instalare: ambele programe pentru fiecare cont de pe mașină, fereastra în meniul Start și bws în PATH |
Executabilele poartă o semnătură Authenticode, așa că Windows numește editorul în loc să avertizeze despre unul necunoscut.
+ +{{product}} - это services.msc, перестроенный для тех, кто администрирует машины с Windows: окно и командная строка на одном движке. Задавайте машине вопрос вместо того, чтобы прокручивать восемьсот строк. Смотрите, что сделает изменение, прежде чем что-либо нажмёте. И то, чего в services.msc никогда не было: заморозьте каждую службу в файл и через неделю спросите, что изменилось.
+ bws, которая просит ровно то же самое. Программа говорит по-английски: окно читает лежащий рядом файл языка, так что перевод возможен без пересборки.Настоящий сеанс на Windows, установленной на польском: отображаемые имена приходят из Windows, поэтому они на её языке. Само окно говорит по-английски.
+
+ services.msc почти не менялся со времён Windows 2000Администраторы проводят в нём часы каждую неделю и упираются в одни и те же стены.
+sc.exe по памяти или реестр.sc.exe синтаксис из девяностых, а Get-Service, поставляемый с Windows, в Windows PowerShell 5.1 не показывает, от какой учётной записи работает служба, не говоря уже об описании. PowerShell 7 показывает и то и другое, и ставится отдельно.Process Hacker и System Informer показывают богатый список и умеют принудительно завершать процессы, но в них нет аудита и командной строки. sc.exe и PsService умеют всё и ничего вам не говорят. Командлеты *-Service в PowerShell пригодны для скриптов и поверхностны.
Никто не соединяет список с поиском, предпросмотр перед каждым изменением и запись того, что менялось со временем, - а эта запись и есть причина оставить этот инструмент на машине после первого же дня.
+ Полное сравнение +start:auto !status:running - это что должно работать и не работает. Один язык, в поле поиска и в bws list --query, с подсказкой полей по мере ввода.
Каждая остановка, запуск, перезапуск и смена типа запуска просматривается заранее вместе со службами, которые она тянет за собой, и предпросмотр - это то, что выполняется.
bws snapshot create замораживает машину в файл, а bws snapshot diff говорит, что изменилось с тех пор, отделяя конфигурацию от того, что просто запустилось или остановилось. bws history по журналу System говорит, кто изменил тип запуска и кто установил службу. Окно делает всё три в разделе Audit....
Вкладка Tools и bws tool fix перезапускают службу, стоящую за не печатающим принтером, пропавшим звуком или зависшим поиском, вместе с тем, что от неё зависит, по тому же плану, что и всё остальное.
Сначала просит вежливо и завершает процесс, только если это не удалось, называя каждую другую службу, которая в нём живёт.
services.mscКто подписал исполняемый файл и доверяет ли ему Windows, триггеры, привилегии, дескриптор безопасности, процесс и его память. В виде столбцов и в виде того, по чему можно искать.
Поле, которое не удалось прочитать, сообщается как непрочитанное и никогда не показывается пустым. Снимок, сделанный без прав администратора, сообщает об этом внутри файла.
--json у каждой команды, код завершения для каждого исхода и 5, когда сравнение находит дрейф.
Распакуйте и запустите или установите на всю машину. Ставить .NET не нужно, и он никогда не обращается к интернету. Для чтения права администратора не нужны. GPL-3.0.
Снимок - это вся машина в один момент: каждая служба и драйвер с типом запуска, учётной записью, путём запуска, хешем и подписантом файла, зависимостями, триггерами, привилегиями и дескриптором безопасности. Это JSON с одним полем на строку, поэтому он помещается в репозиторий, и git diff его читает.
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ --exit-code завершается кодом 5, когда конфигурация отличается, так что запланированная задача может сделать снимок при развёртывании и позвать кого-нибудь в первую же ночь, когда машина ушла в дрейф.Каждая операция, которая записывает, сначала строит план, и этот же план - предпросмотр, каскад зависимых служб, отказ до того, как вы что-либо нажмёте, командная строка, которая просит то же самое, и дорога назад потом.
+$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt (2 steps)
+ 1. stop vmms (would break otherwise)
+ 2. stop Winmgmt (asked for)
+
+Warnings:
+ - Stopping Winmgmt also stops one other entry: vmms
+ - Winmgmt starts automatically, so it will be back after the next restart.
+ --dry-run, и это те самые шаги, в том же порядке, с теми же причинами рядом. Второго пути в коде для настоящего выполнения нет.bws kill просит службу остановиться и завершает её процесс, только если это не сработало, называя каждую другую службу, которая в нём живёт.Тот же движок, что и в окне, для скриптов, запланированных задач и CI. Данные идут в стандартный вывод, а всё остальное в стандартный поток ошибок, поэтому bws list --json | jq работает, а предупреждение никогда не попадёт в ваш JSON.
bws list --query "start:auto !status:running" что должно работать и не работает
+bws list --query "file:missing" службы, чей исполняемый файл пропал
+bws list --query "signed:no peruser:no" неподписанные, без копий для каждого сеанса
+bws show Spooler всё, что известно об одной записи
+bws stop Winmgmt --dry-run --dependents что потянет за собой остановка
+bws kill Spooler --dry-run что унесёт с собой завершение его процесса
+bws start-type Spooler manual --dry-run что даст снятие его с автозапуска
+bws snapshot create before.json заморозить машину перед изменением
+bws snapshot diff before.json --live --exit-code что изменилось с тех пор, 5, если изменилась конфигурация
+bws history Spooler кто изменил его тип запуска и когда
+bws tool fix printer --dry-run что сделало бы быстрое исправление зависшего принтера
+ Каждая команда, параметр и код завершения
+ Windows 10 1809 или Windows Server 2019 и новее, 64-разрядная. Архивам не нужен установщик, и они ничего не пишут в реестр, а для просмотра не нужны права администратора. Для любого изменения нужен сеанс с повышенными правами, и обе половины говорят об этом, а не молча отказывают - окно предлагает Restart as admin.
+| Файл | Что это |
|---|---|
{{archive_window}} | Окно, один автономный исполняемый файл - ставить .NET не нужно |
{{archive_cli}} | Командная строка, один автономный исполняемый файл, для скриптов и CI |
{{archive_installer}} | Установщик: обе программы для каждой учётной записи на машине, окно в меню «Пуск» и bws в PATH |
Исполняемые файлы несут подпись Authenticode, поэтому Windows называет издателя, а не предупреждает о неизвестном.
+ +{{product}}, Windows makinelerini yönetenler için yeniden kurulmuş services.msc'dir - tek bir motorun üzerinde bir pencere ve bir komut satırı. Sekiz yüz satırı kaydırmak yerine makineye bir soru sorun. Bir değişikliğin ne yapacağını hiçbir şeye basmadan önce görün. Bir de services.msc'nin hiç sahip olmadığı şey: her hizmeti bir dosyaya dondurun ve bir hafta sonra neyin değiştiğini sorun.
+ bws satırı. Program İngilizce konuşur - pencere yanında duran bir dil dosyasını okur, yani yeniden derlemeden çeviri mümkündür.Lehçe kurulu bir Windows'ta gerçek bir oturum - görünen adlar Windows'tan gelir, yani onun dilindedir. Pencerenin kendisi İngilizce konuşur.
+
+ services.msc Windows 2000'den beri neredeyse hiç değişmediYöneticiler haftada saatlerini onunla geçirip aynı duvarlara toslar.
+sc.exe ya da kayıt defteri gerekir.sc.exe'nin sözdizimi doksanlardan kalmadır; Windows'la gelen Get-Service ise Windows PowerShell 5.1'de bir hizmetin hangi hesapla çalıştığını, açıklamasını bir yana, göstermez. PowerShell 7 ikisini de gösterir ve ayrıca kurulur.Process Hacker ve System Informer zengin bir liste gösterir ve zorla sonlandırabilir, ama denetimleri ve komut satırları yoktur. sc.exe ve PsService her şeyi yapabilir ve size hiçbir şey söylemez. PowerShell'in *-Service cmdlet'leri betiklenebilir ve yüzeyseldir.
Hiç kimse aranabilir bir listeyi, her değişiklikten önce bir önizlemeyi ve zaman içinde neyin değiştiğinin kaydını birleştirmez - ve bu kayıt, bu aracı ilk öğleden sonradan sonra da bir makinede tutmanın nedenidir.
+ Tam karşılaştırma +start:auto !status:running, açık olması gereken ve olmayan demektir. Hem arama kutusunda hem bws list --query içinde tek bir dil; alanlar siz yazarken önerilir.
Her durdurma, başlatma, yeniden başlatma ve başlangıç türü değişikliği, beraberinde indirdiği hizmetlerle birlikte önizlenir ve çalışan şey önizlemenin ta kendisidir.
bws snapshot create makineyi bir dosyaya dondurur, bws snapshot diff ise o zamandan beri neyin değiştiğini söyler; yapılandırmayı yalnızca başlayan ya da duran şeyden ayrı tutar. bws history, System günlüğünden bir başlangıç türünü kimin değiştirdiğini ve bir hizmeti kimin kurduğunu söyler. Pencere üçünü de Audit... altında yapar.
Tools sekmesi ve bws tool fix, yazdırmayan bir yazıcının, kaybolmuş sesin ya da takılmış bir aramanın arkasındaki hizmeti, ona bağlı olanlarla birlikte, her şeyle aynı plan üzerinden yeniden başlatır.
Önce kibarca ister ve süreci yalnızca bu başarısız olursa sonlandırır; içinde yaşayan diğer her hizmetin adını söyler.
services.msc'nin gizlediklerini gösterinYürütülebilir dosyayı kimin imzaladığı ve Windows'un ona güvenip güvenmediği, tetikleyiciler, ayrıcalıklar, güvenlik tanımlayıcısı, işlem ve belleği. Sütun olarak ve üzerinde arama yapılacak şeyler olarak.
Okuyamadığı bir alan okunmadı olarak bildirilir, asla boş gösterilmez. Yönetici hakları olmadan alınan bir anlık görüntü bunu dosyanın içinde söyler.
Her komutta --json, her son için bir çıkış kodu ve bir karşılaştırma sapma bulduğunda 5.
Açıp çalıştırın ya da tüm makine için kurun. Kurulacak .NET yok ve internete asla bağlanmaz. Okumak yönetici hakları gerektirmez. GPL-3.0.
Anlık görüntü, tek bir andaki tüm makinedir - her hizmet ve sürücü; başlangıç türü, hesap, başlatma yolu, dosyasının karması ve imzalayanı, bağımlılıkları, tetikleyicileri, ayrıcalıkları ve güvenlik tanımlayıcısıyla birlikte. Satır başına bir alan içeren bir JSON'dur, yani bir depoya girer ve git diff onu okur.
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ --exit-code, yapılandırma farklı olduğunda 5 ile biter; böylece zamanlanmış bir görev dağıtım sırasında bir anlık görüntü alabilir ve makinenin saptığı ilk gece birini uyarabilir.Yazan her işlem önce bir plan kurar ve aynı plan; önizleme, bağımlı hizmetlerin zinciri, hiçbir şeye basmadan önceki ret, aynı şeyi isteyen komut satırı ve sonrasında geri dönüş yoludur.
+$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt (2 steps)
+ 1. stop vmms (would break otherwise)
+ 2. stop Winmgmt (asked for)
+
+Warnings:
+ - Stopping Winmgmt also stops one other entry: vmms
+ - Winmgmt starts automatically, so it will be back after the next restart.
+ --dry-run olmadan çalıştırın, adımlar bunlardır, bu sırayla ve yanlarındaki aynı gerekçelerle. Gerçek çalıştırma için ikinci bir kod yolu yoktur.bws kill hizmetten durmasını ister ve süreci yalnızca bu işe yaramazsa sonlandırır; içinde yaşayan diğer her hizmetin adını söyler.Pencereyle aynı motor; betikler, zamanlanmış görevler ve CI için. Veriler standart çıktıya, geri kalan her şey standart hataya gider; böylece bws list --json | jq çalışır ve bir uyarı asla JSON'unuzun içine düşmez.
bws list --query "start:auto !status:running" açık olması gereken ve olmayan
+bws list --query "file:missing" yürütülebilir dosyası kaybolan hizmetler
+bws list --query "signed:no peruser:no" imzasız, oturum başına kopyalar hariç
+bws show Spooler bir öğe hakkında bilinen her şey
+bws stop Winmgmt --dry-run --dependents durdurmanın nelere mal olacağı
+bws kill Spooler --dry-run sürecini sonlandırmanın beraberinde neleri götüreceği
+bws start-type Spooler manual --dry-run otomatikten çıkarmanın ne yapacağı
+bws snapshot create before.json bir değişiklikten önce makineyi dondur
+bws snapshot diff before.json --live --exit-code o zamandan beri ne değişti, yapılandırma değiştiyse 5
+bws history Spooler başlangıç türünü kimin ve ne zaman değiştirdiği
+bws tool fix printer --dry-run takılmış bir yazıcı için hızlı düzeltmenin ne yapacağı
+ Her komut, seçenek ve çıkış kodu
+ Windows 10 1809 veya Windows Server 2019 ve sonrası, 64 bit. Arşivler yükleyici gerektirmez ve kayıt defterine hiçbir şey yazmaz; bakmak yönetici hakları gerektirmez. Herhangi bir şeyi değiştirmek yükseltilmiş bir oturum gerektirir ve iki yarı da sessizce başarısız olmak yerine bunu söyler - pencere Restart as admin sunar.
+| Dosya | Nedir |
|---|---|
{{archive_window}} | Pencere, tek bir bağımsız yürütülebilir dosya - kurulacak .NET yok |
{{archive_cli}} | Komut satırı, tek bir bağımsız yürütülebilir dosya; betikler ve CI için |
{{archive_installer}} | Yükleyici: makinedeki her hesap için iki program, Başlat menüsünde pencere ve PATH'te bws |
Yürütülebilir dosyalar bir Authenticode imzası taşır; böylece Windows bilinmeyen bir yayımcı konusunda uyarmak yerine yayımcıyı adıyla anar.
+ +{{product}} - це services.msc, перебудований для тих, хто адмініструє машини з Windows: вікно й командний рядок на одному рушії. Ставте машині запитання замість прокручування восьмисот рядків. Дивіться, що зробить зміна, перш ніж щось натиснете. І те, чого в services.msc ніколи не було: заморозьте кожну службу у файл і за тиждень спитайте, що змінилося.
+ bws, що просить рівно те саме. Програма говорить англійською: вікно читає файл мови, що лежить поруч, тож переклад можливий без перебудови.Справжній сеанс на Windows, встановленій польською: відображувані імена приходять із Windows, тому вони її мовою. Саме вікно говорить англійською.
+
+ services.msc майже не змінювався від часів Windows 2000Адміністратори проводять у ньому години щотижня й упираються в одні й ті самі стіни.
+sc.exe з пам'яті або реєстр.sc.exe має синтаксис із дев'яностих, а Get-Service, що постачається з Windows, у Windows PowerShell 5.1 не показує, від якого облікового запису працює служба, не кажучи вже про опис. PowerShell 7 показує і те, й інше, і встановлюється окремо.Process Hacker і System Informer показують багатий список і вміють примусово завершувати процеси, але в них немає аудиту й командного рядка. sc.exe і PsService уміють усе й нічого вам не кажуть. Командлети *-Service у PowerShell придатні для скриптів і поверхневі.
Ніхто не поєднує список із пошуком, попередній перегляд перед кожною зміною та запис того, що змінювалося з часом - а цей запис і є причиною залишити цей інструмент на машині після першого ж дня.
+ Повне порівняння +start:auto !status:running - це що має працювати й не працює. Одна мова, у полі пошуку й у bws list --query, з підказкою полів під час уведення.
Кожна зупинка, запуск, перезапуск і зміна типу запуску переглядається заздалегідь разом зі службами, які вона тягне за собою, а попередній перегляд - це те, що виконується.
bws snapshot create заморожує машину у файл, а bws snapshot diff каже, що змінилося відтоді, відокремлюючи конфігурацію від того, що просто запустилося чи зупинилося. bws history за журналом System каже, хто змінив тип запуску й хто встановив службу. Вікно робить усе три в розділі Audit....
Вкладка Tools і bws tool fix перезапускають службу, що стоїть за принтером, який не друкує, зниклим звуком чи завислим пошуком, разом із тим, що від неї залежить, за тим самим планом, що й усе інше.
Спершу просить чемно й завершує процес, лише якщо це не вдалося, називаючи кожну іншу службу, що в ньому живе.
services.mscХто підписав виконуваний файл і чи довіряє йому Windows, тригери, привілеї, дескриптор безпеки, процес і його пам'ять. У вигляді стовпців і у вигляді того, за чим можна шукати.
Поле, яке не вдалося прочитати, повідомляється як непрочитане й ніколи не показується порожнім. Знімок, зроблений без прав адміністратора, повідомляє про це всередині файлу.
--json у кожної команди, код завершення для кожного закінчення й 5, коли порівняння знаходить дрейф.
Розпакуйте й запустіть або встановіть на всю машину. Ставити .NET не потрібно, і він ніколи не звертається до інтернету. Для читання права адміністратора не потрібні. GPL-3.0.
Знімок - це вся машина в один момент: кожна служба й драйвер із типом запуску, обліковим записом, шляхом запуску, хешем і підписантом файлу, залежностями, тригерами, привілеями й дескриптором безпеки. Це JSON з одним полем на рядок, тож він потрапляє в репозиторій, і git diff його читає.
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ --exit-code завершується кодом 5, коли конфігурація відрізняється, тож запланована задача може зробити знімок під час розгортання й покликати когось у першу ж ніч, коли машина пішла в дрейф.Кожна операція, що записує, спершу будує план, і цей самий план - це попередній перегляд, каскад залежних служб, відмова до того, як ви щось натиснете, командний рядок, що просить те саме, і дорога назад потім.
+$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt (2 steps)
+ 1. stop vmms (would break otherwise)
+ 2. stop Winmgmt (asked for)
+
+Warnings:
+ - Stopping Winmgmt also stops one other entry: vmms
+ - Winmgmt starts automatically, so it will be back after the next restart.
+ --dry-run, і це ті самі кроки, у тому самому порядку, з тими самими причинами поруч. Другого шляху в коді для справжнього виконання немає.bws kill просить службу зупинитися й завершує її процес, лише якщо це не спрацювало, називаючи кожну іншу службу, що в ньому живе.Той самий рушій, що й у вікні, для скриптів, запланованих задач і CI. Дані йдуть у стандартний вивід, а все інше в стандартний потік помилок, тому bws list --json | jq працює, а попередження ніколи не потрапить у ваш JSON.
bws list --query "start:auto !status:running" що має працювати й не працює
+bws list --query "file:missing" служби, чий виконуваний файл зник
+bws list --query "signed:no peruser:no" непідписані, без копій для кожного сеансу
+bws show Spooler усе, що відомо про один запис
+bws stop Winmgmt --dry-run --dependents що потягне за собою зупинка
+bws kill Spooler --dry-run що забере з собою завершення його процесу
+bws start-type Spooler manual --dry-run що дасть зняття його з автозапуску
+bws snapshot create before.json заморозити машину перед зміною
+bws snapshot diff before.json --live --exit-code що змінилося відтоді, 5, якщо змінилася конфігурація
+bws history Spooler хто змінив його тип запуску і коли
+bws tool fix printer --dry-run що зробило б швидке виправлення завислого принтера
+ Кожна команда, параметр і код завершення
+ Windows 10 1809 або Windows Server 2019 і новіші, 64-розрядні. Архівам не потрібен інсталятор, і вони нічого не пишуть у реєстр, а для перегляду права адміністратора не потрібні. Для будь-якої зміни потрібен сеанс із підвищеними правами, і обидві половини кажуть про це, а не мовчки відмовляють - вікно пропонує Restart as admin.
+| Файл | Що це |
|---|---|
{{archive_window}} | Вікно, один автономний виконуваний файл - ставити .NET не потрібно |
{{archive_cli}} | Командний рядок, один автономний виконуваний файл, для скриптів і CI |
{{archive_installer}} | Інсталятор: обидві програми для кожного облікового запису на машині, вікно в меню «Пуск» і bws у PATH |
Виконувані файли несуть підпис Authenticode, тому Windows називає видавця, а не попереджає про невідомого.
+ +{{product}} là services.msc được xây dựng lại cho những người quản trị máy Windows - một cửa sổ và một dòng lệnh trên cùng một lõi. Hãy đặt câu hỏi cho máy thay vì cuộn qua tám trăm dòng. Xem một thay đổi sẽ làm gì trước khi bạn nhấn bất cứ thứ gì. Và phần mà services.msc chưa bao giờ có: đóng băng mọi dịch vụ vào một tệp, rồi một tuần sau hỏi điều gì đã thay đổi.
+ bws yêu cầu chính xác điều tương tự. Chương trình nói tiếng Anh - cửa sổ đọc một tệp ngôn ngữ đặt bên cạnh nó, nên có thể dịch mà không cần biên dịch lại.Một phiên thật, trên Windows cài bằng tiếng Ba Lan - tên hiển thị đến từ Windows, nên bằng ngôn ngữ của nó. Bản thân cửa sổ nói tiếng Anh.
+
+ services.msc hầu như không thay đổi kể từ Windows 2000Quản trị viên mất hàng giờ mỗi tuần trong đó và va vào cùng những bức tường.
+sc.exe gõ theo trí nhớ, hoặc registry.sc.exe có cú pháp từ thập niên chín mươi, và Get-Service đi kèm Windows, trong Windows PowerShell 5.1, không hiển thị tài khoản mà dịch vụ chạy, nói gì đến mô tả. PowerShell 7 hiển thị cả hai và được cài riêng.Process Hacker và System Informer hiển thị một danh sách phong phú và có thể buộc kết thúc tiến trình, nhưng không có kiểm toán và không có dòng lệnh. sc.exe và PsService có thể làm mọi thứ và không cho bạn biết gì. Các cmdlet *-Service của PowerShell viết script được và nông cạn.
Không ai kết hợp một danh sách có thể tìm kiếm, một bản xem trước trước mỗi thay đổi, và một bản ghi về những gì đã thay đổi theo thời gian - và bản ghi đó là lý do để giữ công cụ này trên máy sau buổi chiều đầu tiên.
+ So sánh đầy đủ +start:auto !status:running nghĩa là những gì lẽ ra phải chạy mà không chạy. Một ngôn ngữ, trong ô tìm kiếm và trong bws list --query, với các trường được gợi ý khi bạn gõ.
Mỗi lần dừng, khởi động, khởi động lại và đổi kiểu khởi động đều được xem trước cùng với các dịch vụ bị kéo theo, và bản xem trước chính là thứ sẽ chạy.
bws snapshot create đóng băng máy vào một tệp, và bws snapshot diff cho biết điều gì đã thay đổi từ đó, cấu hình tách riêng khỏi những gì chỉ vừa khởi động hoặc dừng. bws history cho biết, từ nhật ký System, ai đã đổi kiểu khởi động và ai đã cài một dịch vụ. Cửa sổ làm cả ba dưới Audit....
Thẻ Tools và bws tool fix khởi động lại dịch vụ đằng sau máy in không in, âm thanh biến mất hoặc tìm kiếm bị treo, cùng với những gì phụ thuộc vào nó, qua cùng một kế hoạch như mọi thứ khác.
Nó hỏi lịch sự trước và chỉ kết thúc tiến trình nếu điều đó thất bại, nêu tên mọi dịch vụ khác sống trong đó.
services.msc giấuAi đã ký tệp thực thi và Windows có tin nó không, trình kích hoạt, đặc quyền, bộ mô tả bảo mật, tiến trình và bộ nhớ của nó. Dưới dạng cột, và dưới dạng thứ để tìm kiếm.
Một trường không đọc được sẽ được báo là chưa đọc, không bao giờ hiển thị là trống. Một bản chụp lấy khi không có quyền quản trị nói điều đó ngay trong tệp.
--json ở mọi lệnh, một mã thoát cho mọi kết cục, và 5 khi một lần so sánh phát hiện sai lệch.
Giải nén và chạy, hoặc cài cho cả máy. Không có .NET để cài, và nó không bao giờ kết nối với internet. Đọc không cần quyền quản trị. GPL-3.0.
Một bản chụp là cả máy tại một thời điểm - mọi dịch vụ và trình điều khiển, với kiểu khởi động, tài khoản, đường dẫn khởi chạy, mã băm và người ký của tệp, các phụ thuộc, trình kích hoạt, đặc quyền và bộ mô tả bảo mật. Nó là JSON với một trường mỗi dòng, nên có thể đưa vào kho mã và git diff đọc được nó.
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ --exit-code kết thúc bằng 5 khi cấu hình khác nhau, để một tác vụ theo lịch có thể chụp lúc triển khai và gọi ai đó vào đêm đầu tiên máy bị lệch.Mọi thao tác ghi đều dựng một kế hoạch trước, và chính kế hoạch ấy là bản xem trước, chuỗi các dịch vụ phụ thuộc, lời từ chối trước khi bạn nhấn bất cứ thứ gì, dòng lệnh yêu cầu điều tương tự, và đường quay lại sau đó.
+$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt (2 steps)
+ 1. stop vmms (would break otherwise)
+ 2. stop Winmgmt (asked for)
+
+Warnings:
+ - Stopping Winmgmt also stops one other entry: vmms
+ - Winmgmt starts automatically, so it will be back after the next restart.
+ --dry-run và đây là các bước, theo thứ tự đó, với cùng những lý do bên cạnh. Không có đường mã thứ hai cho việc thực thi thật.bws kill yêu cầu dịch vụ dừng và chỉ kết thúc tiến trình của nó nếu điều đó không có tác dụng, nêu tên mọi dịch vụ khác sống trong đó.Cùng lõi với cửa sổ, cho script, tác vụ theo lịch và CI. Dữ liệu đi tới đầu ra chuẩn và mọi thứ khác đi tới lỗi chuẩn, nên bws list --json | jq hoạt động và một cảnh báo không bao giờ rơi vào JSON của bạn.
bws list --query "start:auto !status:running" những gì lẽ ra phải chạy mà không chạy
+bws list --query "file:missing" các dịch vụ có tệp thực thi đã mất
+bws list --query "signed:no peruser:no" chưa ký, không kể các bản sao theo phiên
+bws show Spooler mọi thứ đã biết về một mục
+bws stop Winmgmt --dry-run --dependents việc dừng nó sẽ kéo theo những gì
+bws kill Spooler --dry-run việc kết thúc tiến trình của nó sẽ cuốn theo những gì
+bws start-type Spooler manual --dry-run việc bỏ nó khỏi chế độ tự động sẽ gây ra gì
+bws snapshot create before.json đóng băng máy trước một thay đổi
+bws snapshot diff before.json --live --exit-code điều gì đã thay đổi từ đó, 5 nếu cấu hình đã đổi
+bws history Spooler ai đã đổi kiểu khởi động của nó, và khi nào
+bws tool fix printer --dry-run cách sửa nhanh cho máy in bị treo sẽ làm gì
+ Mọi lệnh, tùy chọn và mã thoát
+ Windows 10 1809 hoặc Windows Server 2019 trở lên, 64-bit. Các bản nén không cần trình cài đặt và không ghi gì vào registry, và việc xem không cần quyền quản trị. Thay đổi bất cứ thứ gì cần một phiên nâng quyền, và cả hai nửa đều nói điều đó thay vì lặng lẽ thất bại - cửa sổ đề nghị Restart as admin.
+| Tệp | Đó là gì |
|---|---|
{{archive_window}} | Cửa sổ, một tệp thực thi độc lập - không có .NET để cài |
{{archive_cli}} | Dòng lệnh, một tệp thực thi độc lập, cho script và CI |
{{archive_installer}} | Trình cài đặt: cả hai chương trình cho mọi tài khoản trên máy, cửa sổ trong menu Start và bws trong PATH |
Các tệp thực thi mang chữ ký Authenticode, nên Windows nêu tên nhà phát hành thay vì cảnh báo về một nhà phát hành không rõ.
+ +{{product}} 是为管理 Windows 计算机的人重新打造的 services.msc:窗口和命令行共用同一个引擎。不必再滚动浏览八百行,直接向计算机提问。在按下任何按钮之前,就能看到某项更改会做什么。还有 services.msc 从未具备的功能:把每个服务冻结到一个文件里,一周后再询问发生了什么变化。
+ bws 命令行。程序使用英文界面:窗口会读取放在它旁边的语言文件,因此无需重新生成就能翻译。services.msc 自 Windows 2000 以来几乎没有变化管理员每周都要在其中花上几个小时,一次次撞上同样的墙。
+sc.exe,或去翻注册表。sc.exe 的语法还停留在九十年代,而 Windows 自带的 Windows PowerShell 5.1 中的 Get-Service 不显示服务运行所用的账户,更不用说描述了。PowerShell 7 两者都显示,但需要单独安装。Process Hacker 和 System Informer 展示信息丰富的列表,还能强制结束进程,但没有审计功能,也没有命令行。sc.exe 和 PsService 什么都能做,却什么也不告诉你。PowerShell 的 *-Service cmdlet 适合脚本,但比较浅。
没有任何一个工具同时提供可搜索的列表、每次更改前的预览,以及随时间推移的更改记录,而这份记录正是第一个下午过后仍把这个工具留在计算机上的理由。
+ 完整对比 +start:auto !status:running 的意思是应该在运行却没有运行的内容。同一种语言既用于搜索框,也用于 bws list --query,输入时还会提示字段。
每一次停止、启动、重启和启动类型更改,都会连同被一并关闭的服务一起预览,而预览就是实际执行的内容。
bws snapshot create 把计算机冻结到文件中,bws snapshot diff 告诉你之后发生了哪些变化,把配置与仅仅是启动或停止区分开。bws history 从 System 日志中告诉你是谁更改了启动类型、谁安装了服务。窗口在 Audit... 下完成这三件事。
Tools 选项卡和 bws tool fix 会重启无法打印的打印机、没了声音或卡住的搜索背后的服务,连同依赖它的内容,走的是与其他所有操作相同的计划。
先礼貌地请求,只有失败时才结束进程,并列出同在该进程中的每一个其他服务。
services.msc 隐藏的内容谁给可执行文件签了名、Windows 是否信任它、触发器、特权、安全描述符、进程及其内存。既以列的形式显示,也可以作为搜索条件。
无法读取的字段会报告为未读取,绝不会显示为空。没有管理员权限时生成的快照,会在文件内部注明这一点。
每个命令都支持 --json,每种结束方式都有退出代码,当差异发现漂移时返回 5。
解压即用,或为整台计算机安装。无需安装 .NET,也从不连接互联网。读取不需要管理员权限。GPL-3.0。
快照是某一时刻的整台计算机:每个服务和驱动程序,包括它的启动类型、账户、启动路径、其文件的哈希和签名者、依赖关系、触发器、特权和安全描述符。它是每行一个字段的 JSON,所以可以放进代码仓库,git diff 也能读懂它。
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ --exit-code 以 5 结束,因此计划任务可以在部署时生成快照,并在计算机发生漂移的第一个夜晚通知相关人员。每个会写入的操作都会先生成一份计划,这份计划既是预览,也是依赖服务的级联、在你按下任何按钮之前给出的拒绝、请求相同操作的命令行,以及事后的回退方法。
+$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt (2 steps)
+ 1. stop vmms (would break otherwise)
+ 2. stop Winmgmt (asked for)
+
+Warnings:
+ - Stopping Winmgmt also stops one other entry: vmms
+ - Winmgmt starts automatically, so it will be back after the next restart.
+ --dry-run 再运行,执行的就是这些步骤,顺序相同,旁边的原因也相同。真正执行时没有第二条代码路径。bws kill 先请求服务停止,只有无效时才结束它的进程,并列出同在该进程中的每一个其他服务。与窗口相同的引擎,用于脚本、计划任务和 CI。数据输出到标准输出,其余所有内容输出到标准错误,因此 bws list --json | jq 可以正常工作,警告也绝不会混进你的 JSON。
bws list --query "start:auto !status:running" 应该在运行却没有运行的内容
+bws list --query "file:missing" 可执行文件已丢失的服务
+bws list --query "signed:no peruser:no" 未签名,不含按会话生成的副本
+bws show Spooler 关于一个条目的所有已知信息
+bws stop Winmgmt --dry-run --dependents 停止它会连带关闭什么
+bws kill Spooler --dry-run 结束它的进程会连带带走什么
+bws start-type Spooler manual --dry-run 把它从自动启动中移除会怎样
+bws snapshot create before.json 在更改前冻结计算机
+bws snapshot diff before.json --live --exit-code 此后的变化,配置有变化则返回 5
+bws history Spooler 谁在何时更改了它的启动类型
+bws tool fix printer --dry-run 快速修复卡住的打印机会做什么
+ 每个命令、选项和退出代码
+ Windows 10 1809 或 Windows Server 2019 及更高版本,64 位。压缩包不需要安装程序,也不向注册表写入任何内容,查看时不需要管理员权限。更改任何内容都需要提升权限的会话,两部分都会明说,而不是悄悄失败:窗口会提供 Restart as admin。
+| 文件 | 说明 |
|---|---|
{{archive_window}} | 窗口,一个自包含的可执行文件,无需安装 .NET |
{{archive_cli}} | 命令行,一个自包含的可执行文件,用于脚本和 CI |
{{archive_installer}} | 安装程序:为计算机上的每个账户安装这两个程序,窗口出现在开始菜单中,bws 加入 PATH |
可执行文件带有 Authenticode 签名,因此 Windows 会显示发布者名称,而不是警告来自未知发布者。
+{{product}} 是為管理 Windows 電腦的人重新打造的 services.msc:視窗和命令列共用同一個引擎。不必再捲動瀏覽八百列,直接向電腦提問。在按下任何按鈕之前,就能看到某項變更會做什麼。還有 services.msc 從未具備的功能:把每個服務凍結到一個檔案裡,一週後再詢問發生了什麼變化。
+ bws 命令列。程式使用英文介面:視窗會讀取放在它旁邊的語言檔案,因此無需重新建置就能翻譯。services.msc 自 Windows 2000 以來幾乎沒有變化系統管理員每週都要在其中花上幾個小時,一次次撞上同樣的牆。
+sc.exe,或去翻登錄。sc.exe 的語法還停留在九〇年代,而 Windows 內建的 Windows PowerShell 5.1 中的 Get-Service 不顯示服務執行所用的帳戶,更不用說描述了。PowerShell 7 兩者都顯示,但需要另外安裝。Process Hacker 和 System Informer 展示資訊豐富的清單,還能強制結束處理程序,但沒有稽核功能,也沒有命令列。sc.exe 和 PsService 什麼都能做,卻什麼也不告訴你。PowerShell 的 *-Service cmdlet 適合指令碼,但比較淺。
沒有任何一個工具同時提供可搜尋的清單、每次變更前的預覽,以及隨時間推移的變更記錄,而這份記錄正是第一個下午過後仍把這個工具留在電腦上的理由。
+ 完整比較 +start:auto !status:running 的意思是應該在執行卻沒有執行的內容。同一種語言既用於搜尋框,也用於 bws list --query,輸入時還會提示欄位。
每一次停止、啟動、重新啟動和啟動類型變更,都會連同被一併關閉的服務一起預覽,而預覽就是實際執行的內容。
bws snapshot create 把電腦凍結到檔案中,bws snapshot diff 告訴你之後發生了哪些變化,把組態與僅僅是啟動或停止區分開。bws history 從 System 記錄檔中告訴你是誰變更了啟動類型、誰安裝了服務。視窗在 Audit... 下完成這三件事。
Tools 索引標籤和 bws tool fix 會重新啟動無法列印的印表機、沒了聲音或卡住的搜尋背後的服務,連同依賴它的內容,走的是與其他所有動作相同的計畫。
先禮貌地要求,只有失敗時才結束處理程序,並列出同在該處理程序中的每一個其他服務。
services.msc 隱藏的內容誰替可執行檔簽章、Windows 是否信任它、觸發程序、特殊權限、安全性描述元、處理程序及其記憶體。既以欄的形式顯示,也可以作為搜尋條件。
無法讀取的欄位會回報為未讀取,絕不會顯示為空白。沒有系統管理員權限時產生的快照,會在檔案內部註明這一點。
每個命令都支援 --json,每種結束方式都有結束代碼,當差異發現漂移時傳回 5。
解壓縮即用,或為整台電腦安裝。無需安裝 .NET,也從不連上網際網路。讀取不需要系統管理員權限。GPL-3.0。
快照是某一時刻的整台電腦:每個服務和驅動程式,包括它的啟動類型、帳戶、啟動路徑、其檔案的雜湊和簽署者、相依性、觸發程序、特殊權限和安全性描述元。它是每行一個欄位的 JSON,所以可以放進程式碼存放庫,git diff 也能看懂它。
$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ --exit-code 以 5 結束,因此排程工作可以在部署時產生快照,並在電腦發生漂移的第一個夜晚通知相關人員。每個會寫入的動作都會先產生一份計畫,這份計畫既是預覽,也是相依服務的連鎖、在你按下任何按鈕之前給出的拒絕、要求相同動作的命令列,以及事後的復原方法。
+$ bws stop Winmgmt --dry-run --dependents
+Plan: stop Winmgmt (2 steps)
+ 1. stop vmms (would break otherwise)
+ 2. stop Winmgmt (asked for)
+
+Warnings:
+ - Stopping Winmgmt also stops one other entry: vmms
+ - Winmgmt starts automatically, so it will be back after the next restart.
+ --dry-run 再執行,執行的就是這些步驟,順序相同,旁邊的原因也相同。真正執行時沒有第二條程式碼路徑。bws kill 先要求服務停止,只有無效時才結束它的處理程序,並列出同在該處理程序中的每一個其他服務。與視窗相同的引擎,用於指令碼、排程工作和 CI。資料輸出到標準輸出,其餘所有內容輸出到標準錯誤,因此 bws list --json | jq 可以正常運作,警告也絕不會混進你的 JSON。
bws list --query "start:auto !status:running" 應該在執行卻沒有執行的內容
+bws list --query "file:missing" 可執行檔已遺失的服務
+bws list --query "signed:no peruser:no" 未簽章,不含依工作階段產生的副本
+bws show Spooler 關於一個項目的所有已知資訊
+bws stop Winmgmt --dry-run --dependents 停止它會連帶關閉什麼
+bws kill Spooler --dry-run 結束它的處理程序會連帶帶走什麼
+bws start-type Spooler manual --dry-run 把它從自動啟動中移除會怎樣
+bws snapshot create before.json 在變更前凍結電腦
+bws snapshot diff before.json --live --exit-code 此後的變化,組態有變化則傳回 5
+bws history Spooler 誰在何時變更了它的啟動類型
+bws tool fix printer --dry-run 快速修復卡住的印表機會做什麼
+ 每個命令、選項和結束代碼
+ Windows 10 1809 或 Windows Server 2019 及更高版本,64 位元。壓縮檔不需要安裝程式,也不向登錄寫入任何內容,檢視時不需要系統管理員權限。變更任何內容都需要提升權限的工作階段,兩者都會明說,而不是悄悄失敗:視窗會提供 Restart as admin。
+| 檔案 | 說明 |
|---|---|
{{archive_window}} | 視窗,一個獨立式的可執行檔,無需安裝 .NET |
{{archive_cli}} | 命令列,一個獨立式的可執行檔,用於指令碼和 CI |
{{archive_installer}} | 安裝程式:為電腦上的每個帳戶安裝這兩個程式,視窗出現在開始功能表中,bws 加入 PATH |
可執行檔帶有 Authenticode 簽章,因此 Windows 會顯示發行者名稱,而不是警告來自未知發行者。
+Jeden jazyk, ve vyhledávacím poli okna i v bws list --query. Samotné slovo hledá v názvu, zobrazovaném názvu, účtu a cestě ke spuštění. Pole ho zúží. {{field_count}} polí a stejný text znamená v obou polovinách nástroje totéž.
start:auto !status:running
První dotaz, který většina lidí napíše, a ten, na který services.msc neumí odpovědět vůbec.
file:missing
Položka ukazující na spustitelný soubor, který na disku není. Obvykle odinstalace, která po sobě nechala registraci.
signed:no peruser:no
Rodiny pro jednotlivé uživatele vytvářejí kopii pro každou relaci a plní seznam téměř duplikáty. Tohle se ptá na zbytek.
mismatch:running
Konfigurace a stav, které si odporují - položka, kterou má správce nastavenou, aby se nikdy nespustila, a přesto běží.
privilege:SeDebugPrivilege
Privilegium, které procesu umožňuje otevřít jakýkoli jiný. Stojí za to vědět, které služby o něj žádají.
account:?
Položky, u kterých tato relace nemohla přečíst účet. Otázka, kterou services.msc neumí ani položit.
and neexistuje, protože by nemohlo znamenat nic jiného.status:running status:stopped znamená jedno nebo druhé, protože přesně to zapíše zaškrtnutí dvou filtrů. Dvě meze čísla stále zužují - pid:>1000 pid:<2000 je rozsah mezi nimi.! před termínem ho neguje: !status:running. V dávkovém souboru s setlocal EnableDelayedExpansion cmd tento ! beze slova sní a dotaz pak tiše znamená něco jiného - tam napište ^! uvnitř uvozovek.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe - se hledá, ne čte jako pole s názvem C.name:spool odpovídá všemu, co to obsahuje - výchozí chování, protože to lidé od vyhledávacího pole čekají.name:=spooler je přesná shoda.name:spool* bere zástupné znaky, * a ?.name:/^Sql.*/ je regulární výraz a mezi lomítky se píše tak, jak se regulární výrazy píší: \?, \\ a čárka tam znamenají to, co tam znamenají. Lomítko, které se nikdy nezavře, je chyba - chcete-li hledat samotné lomítko, napište \/ nebo použijte uvozovky.Špatně napsaná hodnota je chyba, nikdy prázdný výsledek. status:runing odpoví Did you mean running? a skončí kódem 2. Prázdný seznam by vypadal jako odpověď a rozdíl mezi "nic neodpovídá" a "napsali jste to špatně" je rozdíl mezi čistým strojem a auditem, který nic neprokázal. Dotaz, který by nic nezúžil, se odmítne i na příkazovém řádku, takže skript neoperuje s celým strojem kvůli překlepu.
Každý funguje stejně ve vyhledávacím poli okna i za bws list --query a každý byl před napsáním sem spuštěn na skutečném Windows. Co najde, závisí na stroji - a u otázky na potíže je prázdná odpověď ta, kterou chcete.
| Dotaz | Co najde |
|---|---|
status:stopPending, | Zaseklé při zastavování nebo spouštění - čekání, které snap-in ukazuje a které nikdy neskončí. |
start:auto status:stopped trigger:none | Nastaveno na automatické spuštění, zastaveno a nečeká na trigger - krátký seznam, který stojí za přečtení po restartu. |
start:delayed | Automatické, spuštěné o něco později než ostatní automatické položky. |
start:manual, | Běží, ačkoli ji při startu nic nespouští - něco o ni požádalo, spustil ji trigger, nebo někdo. |
| Dotaz | Co najde |
|---|---|
account:localsystem !publisher:microsoft | Běží jako LocalSystem, nejsilnější účet, ze souboru, který Microsoft nepodepsal. Dotaz na vydavatele čte podpisy sám, takže trvá pár sekund. |
!account:localsystem, | Služby běžící pod jakýmkoli jiným účtem - virtuálním, spravovaným nebo osobním. |
account:"NT SERVICE" | Virtuální účet služby samotné. Uvozovky drží slova pohromadě kvůli mezeře. |
| Dotaz | Co najde |
|---|---|
signed:notSigned, | Bez podpisu, řetězec, kterému Windows nedůvěřuje, nebo soubor změněný po podepsání. |
signed:trusted !publisher:microsoft | Podepsané, důvěryhodné a ne od Microsoftu - software, který na tento stroj nainstalovaly jiné firmy. |
type:driver start:boot, | Ovladače načítané při startu Windows, jejichž podpisu Windows nedůvěřuje. Na zdravém stroji žádné. |
!path:C:\Windows type:ownProcess | Služba s vlastním procesem, jejíž soubor leží mimo složku Windows. |
path:\AppData\ | Spouštěno zevnitř něčího profilu, což je poslední místo, kde se služba čeká. |
path:\System32\\ type:ownProcess | Zpětné lomítko před mezerou udělá z mezery součást slova, takže cesta končící zpětným lomítkem se píše se dvěma, pokud za ní následuje další termín. Na konci dotazu stačí jedno. |
| Dotaz | Co najde |
|---|---|
trigger:device status:stopped | Čeká na příchod zařízení, takže je zastavená z důvodu. |
trigger:network | Spouštěno, když požadavek dorazí na síťový koncový bod - port, pojmenovanou rouru nebo rozhraní RPC. |
trigger:stop | Položky, které trigger umí i zastavit, ne jen spustit. |
dependson:Winmgmt | Položky, které ke svému běhu potřebují WMI. |
requiredby:Spooler | Všechno, co Print Spooler potřebuje ke svému běhu, a co zase potřebují ty. |
| Dotaz | Co najde |
|---|---|
privilege:SeTcbPrivilege | Žádá o jednání jako součást operačního systému. |
privilege:SeImpersonatePrivilege !account:localsystem | Může jednat jménem klienta a přitom běžet pod jiným účtem než LocalSystem. |
sidtype:unrestricted | Nese vlastní SID služby ve svém procesu, takže jej oprávnění mohou pojmenovat samostatně. sidtype:restricted se ptá na ty, jejichž proces je navíc omezen pro zápis. |
type:sharedProcess status:running | Běží uvnitř sdíleného svchost spolu s dalšími. |
memory:>200MB | Proces využívající více než 200 MB. Paměť se čte sama, když se na ni dotaz ptá. |
pid:1000-2000 | V procesu, jehož id leží mezi 1000 a 2000. |
| Dotaz | Co najde |
|---|---|
spool | Samotné slovo, hledané v názvu, zobrazovaném názvu, účtu a cestě ke spuštění. |
name:=wuauserv | Přesně tento název a nic, co jej jen obsahuje. |
name:win* | Názvy začínající na win, zapsané se zástupným znakem. |
name:/svc$/ | Názvy končící na svc, zapsané jako regulární výraz. |
description:none | Žádný popis vůbec, což platí pro většinu ovladačů. |
description:? | Popis, který Windows nedokázal vydat, obvykle proto, že ukazuje na jazykový soubor, který neexistuje. |
peruser:template | Šablony pro jednotlivé uživatele, které Windows kopíruje pro každou přihlášenou relaci. |
Sestaveno ze samotného programu, takže tato tabulka se nemůže rozejít s tím, co nástroj přijímá. Pole bez seznamu hodnot bere text, číslo nebo velikost - třetí sloupec říká které.
+ {{table:query-fields}} +Podpisy trvají na celém stroji několik sekund a paměť je měření, ne nastavení, takže ani jedno se pro výpis nečte, pokud se o to nepožádá. Dotaz, který jedno z nich zmiňuje, zapne toto čtení sám - nemusíte si pamatovat --signatures navíc k signed:no. V okně dotaz na podpisy říká, že odpověď je neúplná, dokud nedorazí, místo aby ukázal kratší seznam, jako by byl odpovědí.
Pokud byly položky posuzovány podle pole, které tato relace nemohla přečíst, nese výsledek řádek s udáním kolika - protože takový výsledek může některé položky postrádat nebo obsahovat takové, které do něj nepatří. To je totéž pravidlo, které dodržuje celý nástroj: neúspěšné čtení je vidět v odpovědi, nikdy se nepohltí. Vydavatel dostane stejné zacházení, když ho tvrdí jen certifikát: vedle jakéhokoli verdiktu jiného než trusted se název ukáže jako not verified a publisher: počítá položku jako nejistou na vlastním řádku - takže !publisher:microsoft ponechá soubor Microsoftu, který někdo po podepsání změnil.
Satu bahasa, di kotak pencarian jendela dan di bws list --query. Satu kata polos mencari pada nama, nama tampilan, akun, dan jalur peluncuran. Sebuah bidang mempersempitnya. {{field_count}} bidang, dan teks yang sama berarti hal yang sama di kedua bagian alat ini.
start:auto !status:running
Kueri pertama yang ditulis kebanyakan orang, dan yang sama sekali tidak bisa dijawab services.msc.
file:missing
Entri yang menunjuk ke berkas eksekusi yang tidak ada di disk. Biasanya pencopotan yang meninggalkan registrasinya.
signed:no peruser:no
Keluarga per pengguna membuat satu salinan per sesi dan memenuhi daftar dengan hampir-duplikat. Ini menanyakan sisanya.
mismatch:running
Konfigurasi dan status yang tidak sesuai - entri yang diatur manajer agar tidak pernah dimulai, tetapi tetap berjalan.
privilege:SeDebugPrivilege
Hak istimewa yang memungkinkan sebuah proses membuka proses lain mana pun. Layak diketahui layanan mana yang memintanya.
account:?
Entri yang akunnya tidak bisa dibaca sesi ini. Pertanyaan yang bahkan tidak bisa diajukan services.msc.
and karena tidak ada arti lain yang mungkin.status:running status:stopped berarti salah satunya, karena itulah yang ditulis dengan mencentang dua filter. Dua batas pada sebuah angka tetap mempersempit - pid:>1000 pid:<2000 adalah rentang di antara keduanya.! di depan sebuah istilah menegasikannya: !status:running. Dalam berkas batch dengan setlocal EnableDelayedExpansion, cmd memakan ! itu tanpa sepatah kata pun dan kueri diam-diam berarti hal lain - tulis ^! di dalam tanda kutip di sana.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe - dicari, tidak dibaca sebagai bidang bernama C.name:spool cocok dengan apa pun yang mengandungnya - bawaannya, karena itulah yang diharapkan orang dari kotak pencarian.name:=spooler adalah kecocokan persis.name:spool* menerima wildcard, * dan ?.name:/^Sql.*/ adalah ekspresi reguler, dan di dalam garis miring ia ditulis seperti ekspresi reguler ditulis: \?, \\, dan koma berarti di sana apa yang berarti di sana. Garis miring yang tidak pernah ditutup adalah galat - untuk mencari garis miring itu sendiri, tulis \/ atau pakai tanda kutip.Nilai yang salah ketik adalah galat, tidak pernah hasil kosong. status:runing menjawab Did you mean running? dan berakhir dengan kode 2. Daftar kosong akan tampak seperti jawaban, dan perbedaan antara "tidak ada yang cocok" dan "Anda salah mengetik" adalah perbedaan antara mesin yang bersih dan audit yang tidak membuktikan apa pun. Kueri yang tidak akan mempersempit apa pun juga ditolak di baris perintah, sehingga skrip tidak bekerja pada seluruh mesin karena salah ketik.
Masing-masing bekerja sama di kotak pencarian jendela dan setelah bws list --query, dan masing-masing dijalankan di Windows sungguhan sebelum ditulis di sini. Apa yang ditemukannya bergantung pada mesin - dan untuk pertanyaan tentang masalah, jawaban kosong adalah yang Anda inginkan.
| Kueri | Apa yang ditemukan |
|---|---|
status:stopPending, | Macet saat berhenti atau memulai - penantian yang ditampilkan snap-in dan tidak pernah berakhir. |
start:auto status:stopped trigger:none | Diatur mulai otomatis, berhenti, dan tidak menunggu pemicu - daftar pendek yang layak dibaca setelah restart. |
start:delayed | Otomatis, dimulai sedikit setelah entri otomatis lainnya. |
start:manual, | Berjalan padahal tidak ada yang memulainya saat boot - ada yang memintanya, pemicu memulainya, atau seseorang. |
| Kueri | Apa yang ditemukan |
|---|---|
account:localsystem !publisher:microsoft | Berjalan sebagai LocalSystem, akun terkuat, dari berkas yang tidak ditandatangani Microsoft. Kueri tentang penerbit membaca tanda tangan sendiri, sehingga memakan beberapa detik. |
!account:localsystem, | Layanan yang berjalan di bawah akun lain mana pun - akun virtual, akun terkelola, atau milik seseorang. |
account:"NT SERVICE" | Akun virtual milik layanan itu sendiri. Tanda kutip menjaga kata-katanya tetap bersama, karena ada spasi. |
| Kueri | Apa yang ditemukan |
|---|---|
signed:notSigned, | Tanpa tanda tangan, rantai yang tidak dipercaya Windows, atau berkas yang diubah setelah ditandatangani. |
signed:trusted !publisher:microsoft | Bertanda tangan, tepercaya, dan bukan dari Microsoft - perangkat lunak yang dipasang perusahaan lain di mesin ini. |
type:driver start:boot, | Driver yang dimuat saat Windows dimulai yang tanda tangannya tidak dipercaya Windows. Pada mesin yang sehat, tidak ada. |
!path:C:\Windows type:ownProcess | Layanan dengan prosesnya sendiri yang berkasnya berada di luar folder Windows. |
path:\AppData\ | Diluncurkan dari dalam profil seseorang, tempat terakhir layanan diharapkan. |
path:\System32\\ type:ownProcess | Garis miring terbalik di depan spasi menjadikan spasi bagian dari kata, sehingga jalur yang berakhir dengan garis miring terbalik ditulis dengan dua ketika istilah lain mengikutinya. Di akhir kueri, satu sudah cukup. |
| Kueri | Apa yang ditemukan |
|---|---|
trigger:device status:stopped | Menunggu perangkat tiba, jadi berhenti karena suatu alasan. |
trigger:network | Dimulai ketika permintaan tiba di titik akhir jaringan - port, named pipe, atau antarmuka RPC. |
trigger:stop | Entri yang bisa dihentikan oleh pemicu, bukan hanya dimulai. |
dependson:Winmgmt | Entri yang membutuhkan WMI untuk berjalan. |
requiredby:Spooler | Segala yang dibutuhkan Print Spooler untuk berjalan, dan apa yang dibutuhkan semua itu pada gilirannya. |
| Kueri | Apa yang ditemukan |
|---|---|
privilege:SeTcbPrivilege | Meminta untuk bertindak sebagai bagian dari sistem operasi. |
privilege:SeImpersonatePrivilege !account:localsystem | Dapat bertindak atas nama klien sambil berjalan di bawah akun selain LocalSystem. |
sidtype:unrestricted | Membawa SID layanan sendiri di prosesnya, sehingga izin bisa menyebutnya saja. sidtype:restricted menanyakan yang prosesnya juga dibatasi penulisan. |
type:sharedProcess status:running | Berjalan di dalam svchost bersama, bersama yang lain. |
memory:>200MB | Proses yang memakai lebih dari 200 MB. Memori dibaca sendiri ketika kueri menanyakannya. |
pid:1000-2000 | Dalam proses yang id-nya antara 1000 dan 2000. |
| Kueri | Apa yang ditemukan |
|---|---|
spool | Satu kata polos, dicari pada nama, nama tampilan, akun, dan jalur peluncuran. |
name:=wuauserv | Persis nama ini, dan tidak ada yang sekadar mengandungnya. |
name:win* | Nama yang diawali win, ditulis dengan wildcard. |
name:/svc$/ | Nama yang diakhiri svc, ditulis sebagai ekspresi reguler. |
description:none | Tanpa deskripsi sama sekali, yang berlaku untuk kebanyakan driver. |
description:? | Deskripsi yang tidak bisa diserahkan Windows, biasanya karena menunjuk ke berkas bahasa yang tidak ada. |
peruser:template | Templat per pengguna yang disalin Windows untuk setiap sesi yang masuk. |
Dibangun dari program itu sendiri, sehingga tabel ini tidak bisa menyimpang dari apa yang diterima alat ini. Bidang tanpa daftar nilai menerima teks, angka, atau ukuran - kolom ketiga menyebutkan yang mana.
+ {{table:query-fields}} +Tanda tangan memakan beberapa detik pada seluruh mesin dan memori adalah pengukuran, bukan pengaturan, jadi tidak ada yang dibaca untuk sebuah daftar kecuali diminta. Kueri yang menyebut salah satunya mengaktifkan pembacaan itu sendiri - Anda tidak perlu mengingat --signatures selain signed:no. Di jendela, kueri tentang tanda tangan menyatakan bahwa jawabannya belum lengkap sampai tanda tangan tiba, alih-alih menampilkan daftar yang lebih pendek seolah-olah itulah jawabannya.
Jika entri dinilai berdasarkan bidang yang tidak bisa dibaca sesi ini, hasilnya membawa baris yang menyebutkan berapa banyak - karena hasil seperti itu bisa kekurangan entri, atau memuat yang bukan miliknya. Itu adalah aturan yang sama yang dijaga seluruh alat: pembacaan yang gagal terlihat dalam jawaban, tidak pernah ditelan. Penerbit mendapat perlakuan yang sama ketika hanya sertifikat yang mengklaimnya: di samping putusan apa pun selain trusted namanya ditampilkan sebagai not verified, dan publisher: menghitung entri itu sebagai tidak pasti pada barisnya sendiri - jadi !publisher:microsoft mempertahankan berkas Microsoft yang diubah seseorang setelah ditandatangani.
ウィンドウの検索ボックスでも bws list --query でも、同じ 1 つの言語を使います。単語だけを書くと、名前、表示名、アカウント、起動パスを検索します。フィールドを付けると絞り込めます。フィールドは {{field_count}} 個あり、同じテキストはツールのどちらの側でも同じ意味になります。
start:auto !status:running
ほとんどの人が最初に書くクエリで、services.msc では全く答えられないものです。
file:missing
ディスク上にない実行ファイルを指しているエントリです。たいていは、登録が残ったままアンインストールされたものです。
signed:no peruser:no
ユーザーごとのファミリーはセッションごとにコピーを作り、似たエントリで一覧が埋まります。このクエリは、それ以外について尋ねます。
mismatch:running
構成と状態が食い違っている場合です。マネージャーが決して開始しないように設定されたエントリが、それでも実行されています。
privilege:SeDebugPrivilege
プロセスがほかのあらゆるプロセスを開けるようになる特権です。どのサービスが要求しているかを知っておく価値があります。
account:?
このセッションがアカウントを読み取れなかったエントリです。services.msc には尋ねることすらできない質問です。
and というキーワードはありません。ほかの意味になりようがないからです。status:running status:stopped はどちらか一方を意味します。2 つのフィルターにチェックを入れたときに書かれるのが、これだからです。数値の 2 つの境界は、引き続き絞り込みになります。pid:>1000 pid:<2000 は、その間の範囲です。! は否定です。!status:running のように書きます。setlocal EnableDelayedExpansion を指定したバッチファイルでは、cmd がこの ! を何の断りもなく消してしまい、クエリは静かに別の意味になります。その場合は引用符の中で ^! と書いてください。start:manual,disabled のように使います。account:"NT SERVICE\McmSvc" のようにします。C:\Windows\System32\svchost.exe のようにそのまま貼り付けたパスは、C というフィールドとしては読まれず、検索されます。name:spool は、それを含むものすべてに一致します。検索ボックスに人が期待する動作なので、これが既定です。name:=spooler は完全一致です。name:spool* はワイルドカード * と ? を使えます。name:/^Sql.*/ は正規表現で、スラッシュの中は正規表現の書き方どおりに書きます。\?、\\、カンマは、そこでの意味になります。閉じられないスラッシュはエラーです。スラッシュ自体を検索するには、\/ と書くか、引用符を使います。入力ミスのある値は、空の結果ではなくエラーになります。status:runing には Did you mean running? と応答し、コード 2 で終了します。空の一覧は答えのように見えてしまいますが、「一致するものがない」と「入力が間違っている」の違いは、きれいなマシンと何も証明していない監査との違いです。何も絞り込まないクエリはコマンドラインでも拒否されるので、入力ミスのせいでスクリプトがマシン全体を操作することはありません。
どれも、ウィンドウの検索ボックスでも bws list --query の後でも同じように動作し、ここに書く前に実際の Windows で実行しています。何が見つかるかはマシンによって異なります。そして、問題についての質問では、空の答えが最も望ましい答えです。
| クエリ | 見つかるもの |
|---|---|
status:stopPending, | 停止中または開始中のまま止まっているもの。スナップインが表示し、終わることのない待機です。 |
start:auto status:stopped trigger:none | 自動開始に設定され、停止していて、トリガーを待っていないもの。再起動のあとに読む価値のある短い一覧です。 |
start:delayed | 自動ですが、ほかの自動のエントリより少しあとに開始されます。 |
start:manual, | 起動時に何も開始しないのに実行中のもの。何かが要求した、トリガーが開始した、または誰かが開始しました。 |
| クエリ | 見つかるもの |
|---|---|
account:localsystem !publisher:microsoft | LocalSystem、最も強力なアカウントで実行されていて、Microsoft が署名していないファイルのもの。発行元についてのクエリは署名を自動的に読み取るため、数秒かかります。 |
!account:localsystem, | それ以外のアカウントで実行されているサービス。仮想アカウント、管理されたアカウント、または個人のアカウントです。 |
account:"NT SERVICE" | サービス独自の仮想アカウントです。スペースがあるため、引用符で単語をまとめています。 |
| クエリ | 見つかるもの |
|---|---|
signed:notSigned, | 署名なし、Windows が信頼しないチェーン、または署名後に変更されたファイル。 |
signed:trusted !publisher:microsoft | 署名済みで、信頼されていて、Microsoft のものではない。他社がこのマシンに入れたソフトウェアです。 |
type:driver start:boot, | Windows の起動時に読み込まれるドライバーで、署名を Windows が信頼していないもの。健全なマシンでは 0 件です。 |
!path:C:\Windows type:ownProcess | 独自のプロセスを持つサービスで、ファイルが Windows フォルダーの外にあるもの。 |
path:\AppData\ | 誰かのプロファイルの中から起動されているもの。サービスがあるとは最も予想されない場所です。 |
path:\System32\\ type:ownProcess | スペースの前のバックスラッシュは、そのスペースを単語の一部にします。そのため、バックスラッシュで終わるパスの後に別の用語が続く場合は、バックスラッシュを 2 つ書きます。クエリの末尾では 1 つで足ります。 |
| クエリ | 見つかるもの |
|---|---|
trigger:device status:stopped | デバイスの接続を待っているため、理由があって停止しています。 |
trigger:network | ネットワークのエンドポイント(ポート、名前付きパイプ、RPC インターフェイス)に要求が届くと開始されます。 |
trigger:stop | トリガーが開始するだけでなく、停止もできるエントリです。 |
dependson:Winmgmt | 実行に WMI を必要とするエントリです。 |
requiredby:Spooler | Print Spooler の実行に必要なすべてのものと、それらが順に必要とするものです。 |
| クエリ | 見つかるもの |
|---|---|
privilege:SeTcbPrivilege | オペレーティング システムの一部として動作することを要求します。 |
privilege:SeImpersonatePrivilege !account:localsystem | LocalSystem 以外のアカウントで実行されながら、クライアントの代わりに動作できます。 |
sidtype:unrestricted | プロセスに独自のサービス SID を持つため、アクセス許可でそのサービスだけを名前で指定できます。sidtype:restricted は、さらにプロセスが書き込み制限されているものについて尋ねます。 |
type:sharedProcess status:running | 共有 svchost の中で、ほかのサービスとともに実行されています。 |
memory:>200MB | 200 MB を超えて使用しているプロセスです。クエリが尋ねると、メモリは自動的に読み取られます。 |
pid:1000-2000 | ID が 1000 から 2000 の間のプロセスで動いています。 |
| クエリ | 見つかるもの |
|---|---|
spool | 単語だけのクエリで、名前、表示名、アカウント、起動パスの中から検索されます。 |
name:=wuauserv | この名前だけで、単に含むだけのものは含みません。 |
name:win* | win で始まる名前で、ワイルドカードで書いています。 |
name:/svc$/ | svc で終わる名前で、正規表現で書いています。 |
description:none | 説明が全くないもの。ほとんどのドライバーがこれです。 |
description:? | Windows が渡せなかった説明。たいていは、存在しない言語ファイルを指しているためです。 |
peruser:template | Windows が、サインインしているセッションごとにコピーするユーザーごとのテンプレートです。 |
プログラム自体から生成しているため、この表がツールの受け付ける内容からずれることはありません。値の一覧がないフィールドは、テキスト、数値、またはサイズを受け付けます。どれかは 3 列目に書かれています。
+ {{table:query-fields}} +署名はマシン全体で数秒かかり、メモリは設定ではなく計測値であるため、頼まれない限り、一覧のためには読み取られません。そのどちらかに触れるクエリは、その読み取りを自動的に有効にします。signed:no に加えて --signatures を覚えておく必要はありません。ウィンドウでは、署名についてのクエリは、署名が届くまで答えが不完全であることを伝え、短い一覧をあたかも答えであるかのように見せることはしません。
読み取れなかったフィールドに基づいてエントリを判定した場合、結果にはその数を示す行が付きます。そのような結果では、エントリが足りない、または含まれるべきでないものが入っている可能性があるからです。これはツール全体が守っている規則と同じです。読み取りの失敗は答えの中で見え、黙って捨てられることは決してありません。証明書だけが主張している発行元にも、同じ扱いをします。trusted 以外の判定の横では、名前は not verified と表示され、publisher: はそのエントリを不確かなものとして別の行で数えます。そのため !publisher:microsoft は、署名後に誰かが変更した Microsoft のファイルを残します。
하나의 언어를 창의 검색 상자와 bws list --query에서 씁니다. 단어만 쓰면 이름, 표시 이름, 계정, 시작 경로에서 검색합니다. 필드를 붙이면 범위가 좁아집니다. 필드는 {{field_count}}개이며, 같은 텍스트는 도구의 두 쪽 모두에서 같은 뜻입니다.
start:auto !status:running
대부분의 사람이 가장 먼저 쓰는 쿼리이며, services.msc가 전혀 답할 수 없는 쿼리입니다.
file:missing
디스크에 없는 실행 파일을 가리키는 항목입니다. 보통은 등록 정보를 남기고 제거된 경우입니다.
signed:no peruser:no
사용자별 계열은 세션마다 복사본을 만들어 목록을 거의 같은 항목으로 채웁니다. 이 쿼리는 나머지에 대해 묻습니다.
mismatch:running
구성과 상태가 어긋난 경우입니다. 서비스 관리자가 절대 시작하지 않도록 설정된 항목이 그래도 실행되고 있습니다.
privilege:SeDebugPrivilege
프로세스가 다른 어떤 프로세스든 열 수 있게 해 주는 권한입니다. 어떤 서비스가 이것을 요청하는지 알아 둘 가치가 있습니다.
account:?
이 세션이 계정을 읽지 못한 항목입니다. services.msc는 물을 수조차 없는 질문입니다.
and 키워드가 없는 것은 달리 뜻할 수 있는 것이 없기 때문입니다.status:running status:stopped는 둘 중 하나를 뜻합니다. 필터 두 개를 선택하면 쓰이는 것이 바로 이것이기 때문입니다. 숫자에 대한 두 경계는 여전히 범위를 좁힙니다. pid:>1000 pid:<2000은 둘 사이의 범위입니다.!는 부정입니다. !status:running처럼 씁니다. setlocal EnableDelayedExpansion이 있는 배치 파일에서는 cmd가 이 !를 아무 말 없이 먹어 버려 쿼리가 조용히 다른 뜻이 되므로, 거기서는 따옴표 안에 ^!를 쓰세요.start:manual,disabled처럼 씁니다.account:"NT SERVICE\McmSvc"처럼 씁니다.C:\Windows\System32\svchost.exe처럼 그대로 붙여 넣은 경로는 C라는 필드로 읽히지 않고 검색됩니다.name:spool은 그것을 포함하는 모든 것과 일치합니다. 사람들이 검색 상자에서 기대하는 동작이므로 기본값입니다.name:=spooler는 정확히 일치합니다.name:spool*은 와일드카드 *와 ?를 받습니다.name:/^Sql.*/은 정규식이며, 슬래시 안에서는 정규식을 쓰는 방식 그대로 씁니다. \?, \\, 쉼표는 거기서의 뜻 그대로입니다. 닫히지 않는 슬래시는 오류입니다. 슬래시 자체를 검색하려면 \/를 쓰거나 따옴표를 사용하세요.잘못 입력한 값은 빈 결과가 아니라 오류입니다. status:runing은 Did you mean running?이라고 답하고 코드 2로 끝납니다. 빈 목록은 답처럼 보일 텐데, “아무것도 일치하지 않음”과 “잘못 입력함”의 차이는 깨끗한 컴퓨터와 아무것도 증명하지 못한 감사의 차이입니다. 아무것도 좁히지 못하는 쿼리는 명령줄에서도 거부되므로, 오타 때문에 스크립트가 컴퓨터 전체에 작업을 하는 일은 없습니다.
각 예는 창의 검색 상자와 bws list --query 뒤에서 똑같이 동작하며, 여기에 쓰기 전에 실제 Windows에서 실행했습니다. 무엇이 찾아지는지는 컴퓨터에 따라 다르며, 문제에 대한 질문에서는 빈 답이 바라는 답입니다.
| 쿼리 | 찾는 것 |
|---|---|
status:stopPending, | 중지 중이나 시작 중에서 멈춘 것입니다. 스냅인이 보여 주고 끝나지 않는 기다림입니다. |
start:auto status:stopped trigger:none | 자동으로 시작하도록 설정됐고, 중지되어 있으며, 트리거를 기다리지 않는 것입니다. 재시작 뒤에 읽어 볼 만한 짧은 목록입니다. |
start:delayed | 자동이지만 다른 자동 항목보다 조금 뒤에 시작됩니다. |
start:manual, | 부팅 때 아무것도 시작하지 않는데 실행 중인 것입니다. 무언가가 요청했거나, 트리거가 시작했거나, 누군가 시작했습니다. |
| 쿼리 | 찾는 것 |
|---|---|
account:localsystem !publisher:microsoft | 가장 강력한 계정인 LocalSystem으로, Microsoft가 서명하지 않은 파일에서 실행됩니다. 게시자에 대한 쿼리는 서명을 스스로 읽으므로 몇 초가 걸립니다. |
!account:localsystem, | 다른 계정으로 실행되는 서비스입니다. 가상 계정, 관리되는 계정, 또는 개인 계정입니다. |
account:"NT SERVICE" | 서비스 자체의 가상 계정입니다. 공백 때문에 따옴표로 단어를 묶습니다. |
| 쿼리 | 찾는 것 |
|---|---|
signed:notSigned, | 서명이 없거나, Windows가 신뢰하지 않는 체인이거나, 서명 후에 변경된 파일입니다. |
signed:trusted !publisher:microsoft | 서명되었고, 신뢰되며, Microsoft가 아닙니다. 다른 회사가 이 컴퓨터에 둔 소프트웨어입니다. |
type:driver start:boot, | Windows가 시작될 때 로드되는 드라이버 중 서명을 Windows가 신뢰하지 않는 것입니다. 건강한 컴퓨터에서는 없습니다. |
!path:C:\Windows type:ownProcess | 자체 프로세스를 가진 서비스 중 파일이 Windows 폴더 밖에 있는 것입니다. |
path:\AppData\ | 누군가의 프로필 안에서 시작된 것입니다. 서비스가 있으리라고 가장 기대하지 않는 곳입니다. |
path:\System32\\ type:ownProcess | 공백 앞의 백슬래시는 그 공백을 단어의 일부로 만들므로, 백슬래시로 끝나는 경로 뒤에 다른 검색어가 이어질 때는 백슬래시를 두 개 씁니다. 쿼리 끝에서는 하나로 충분합니다. |
| 쿼리 | 찾는 것 |
|---|---|
trigger:device status:stopped | 장치가 연결되기를 기다리므로 이유가 있어 중지된 것입니다. |
trigger:network | 네트워크 끝점(포트, 명명된 파이프, RPC 인터페이스)에 요청이 도착하면 시작됩니다. |
trigger:stop | 트리거가 시작만 하는 것이 아니라 중지도 할 수 있는 항목입니다. |
dependson:Winmgmt | 실행하려면 WMI가 필요한 항목입니다. |
requiredby:Spooler | Print Spooler가 실행되는 데 필요한 모든 것과, 그것들이 다시 필요로 하는 것입니다. |
| 쿼리 | 찾는 것 |
|---|---|
privilege:SeTcbPrivilege | 운영 체제의 일부로 동작하기를 요청합니다. |
privilege:SeImpersonatePrivilege !account:localsystem | LocalSystem이 아닌 계정으로 실행되면서 클라이언트를 대신해 동작할 수 있습니다. |
sidtype:unrestricted | 프로세스 안에 자체 서비스 SID를 가지므로, 권한에서 그것만 지목할 수 있습니다. sidtype:restricted는 프로세스가 쓰기 제한도 된 것을 묻습니다. |
type:sharedProcess status:running | 공유 svchost 안에서 다른 서비스와 함께 실행됩니다. |
memory:>200MB | 200MB보다 많이 사용하는 프로세스입니다. 쿼리가 묻는 경우 메모리는 스스로 읽힙니다. |
pid:1000-2000 | ID가 1000에서 2000 사이인 프로세스 안에 있습니다. |
| 쿼리 | 찾는 것 |
|---|---|
spool | 단어만 쓴 경우로, 이름, 표시 이름, 계정, 시작 경로에서 검색됩니다. |
name:=wuauserv | 정확히 이 이름이며, 단지 포함할 뿐인 것은 해당되지 않습니다. |
name:win* | win으로 시작하는 이름이며, 와일드카드로 썼습니다. |
name:/svc$/ | svc로 끝나는 이름이며, 정규식으로 썼습니다. |
description:none | 설명이 전혀 없는 것으로, 대부분의 드라이버가 해당됩니다. |
description:? | Windows가 넘겨주지 못한 설명으로, 대개 존재하지 않는 언어 파일을 가리키기 때문입니다. |
peruser:template | Windows가 로그인한 세션마다 복사하는 사용자별 템플릿입니다. |
프로그램 자체에서 만들어지므로, 이 표는 도구가 받아들이는 것과 어긋날 수 없습니다. 값 목록이 없는 필드는 텍스트, 숫자, 크기를 받으며, 세 번째 열이 어느 쪽인지 알려 줍니다.
+ {{table:query-fields}} +서명은 컴퓨터 전체에서 몇 초가 걸리고 메모리는 설정이 아니라 측정값이므로, 요청하지 않으면 목록을 위해 읽지 않습니다. 둘 중 하나를 언급하는 쿼리는 그 읽기를 스스로 켭니다. signed:no와 함께 --signatures도 기억할 필요가 없습니다. 창에서는 서명에 대한 쿼리가, 짧은 목록을 마치 답인 것처럼 보여 주는 대신 서명이 도착할 때까지 답이 불완전하다고 알려 줍니다.
이 세션이 읽지 못한 필드를 근거로 항목을 판단했다면, 결과에 그 수를 알려 주는 줄이 붙습니다. 그런 결과에는 항목이 빠져 있거나 속하지 않는 항목이 들어 있을 수 있기 때문입니다. 도구 전체가 지키는 규칙과 같습니다. 읽기 실패는 답 안에 보이며, 삼켜지지 않습니다. 인증서만 주장하는 게시자도 같은 대우를 받습니다. trusted 이외의 판정 옆에서는 이름이 not verified로 표시되고, publisher:는 그 항목을 불확실한 것으로 별도의 줄에 셉니다. 그래서 !publisher:microsoft는 서명 후 누군가 변경한 Microsoft 파일을 남겨 둡니다.
Eén taal, in het zoekvak van het venster en in bws list --query. Een kaal woord zoekt in de naam, de weergavenaam, het account en het opstartpad. Een veld beperkt het. {{field_count}} velden, en dezelfde tekst betekent hetzelfde in beide helften van het hulpmiddel.
start:auto !status:running
De eerste query die de meeste mensen schrijven, en die services.msc helemaal niet kan beantwoorden.
file:missing
Een item dat naar een uitvoerbaar bestand wijst dat niet op schijf staat. Meestal een verwijdering die de registratie heeft laten staan.
signed:no peruser:no
De families per gebruiker maken per sessie een kopie en vullen een lijst met bijna-duplicaten. Dit vraagt naar de rest.
mismatch:running
Configuratie en toestand die het oneens zijn - een item dat de beheerder nooit hoort te starten, en dat toch draait.
privilege:SeDebugPrivilege
Een bevoegdheid waarmee een proces elk ander proces kan openen. Het is de moeite waard te weten welke services erom vragen.
account:?
De items waarvan deze sessie het account niet kon lezen. Een vraag die services.msc niet eens kan stellen.
and omdat het niets anders zou kunnen betekenen.status:running status:stopped betekent een van beide, want dat is wat het aanvinken van twee filters schrijft. Twee grenzen op een getal beperken nog steeds - pid:>1000 pid:<2000 is het bereik ertussen.! voor een term ontkent hem: !status:running. In een batchbestand met setlocal EnableDelayedExpansion eet cmd die ! zonder een woord op en betekent de query stilletjes iets anders - schrijf daar ^! tussen de aanhalingstekens.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe - wordt gezocht, niet gelezen als een veld met de naam C.name:spool komt overeen met alles wat het bevat - de standaard, want dat verwachten mensen van een zoekvak.name:=spooler is exact.name:spool* neemt jokertekens, * en ?.name:/^Sql.*/ is een reguliere expressie, en tussen de schuine strepen wordt ze geschreven zoals reguliere expressies worden geschreven: \?, \\ en een komma betekenen daar wat ze daar betekenen. Een schuine streep die nooit sluit is een fout - om naar de schuine streep zelf te zoeken, schrijft u \/ of gebruikt u aanhalingstekens.Een verkeerd getypte waarde is een fout, nooit een leeg resultaat. status:runing antwoordt Did you mean running? en eindigt met code 2. Een lege lijst zou op een antwoord lijken, en het verschil tussen "niets komt overeen" en "u hebt het verkeerd getypt" is het verschil tussen een schone machine en een audit die niets bewees. Een query die niets zou beperken wordt ook op de opdrachtregel geweigerd, zodat een script niet op de hele machine werkt door een typefout.
Elk werkt hetzelfde in het zoekvak van het venster en na bws list --query, en elk is op een echte Windows uitgevoerd voordat het hier werd geschreven. Wat het vindt hangt af van de machine - en bij een vraag over problemen is een leeg antwoord degene die u wilt.
| Query | Wat het vindt |
|---|---|
status:stopPending, | Vast bij stoppen of starten - het wachten dat de snap-in toont en dat nooit eindigt. |
start:auto status:stopped trigger:none | Ingesteld om automatisch te starten, gestopt, en niet wachtend op een trigger - de korte lijst die na een herstart de moeite van het lezen waard is. |
start:delayed | Automatisch, een beetje na de andere automatische items gestart. |
start:manual, | Draait hoewel niets het bij het opstarten start - iets heeft erom gevraagd, een trigger heeft het gestart, of iemand. |
| Query | Wat het vindt |
|---|---|
account:localsystem !publisher:microsoft | Draait als LocalSystem, het sterkste account, vanuit een bestand dat Microsoft niet heeft ondertekend. Een query over de uitgever leest handtekeningen vanzelf, dus het duurt een paar seconden. |
!account:localsystem, | Services die onder een ander account draaien - een virtueel, een beheerd of dat van een persoon zelf. |
account:"NT SERVICE" | Een virtueel account van de service zelf. De aanhalingstekens houden de woorden bij elkaar, vanwege de spatie. |
| Query | Wat het vindt |
|---|---|
signed:notSigned, | Geen handtekening, een keten die Windows niet vertrouwt, of een bestand dat is gewijzigd nadat het werd ondertekend. |
signed:trusted !publisher:microsoft | Ondertekend, vertrouwd, en niet door Microsoft - de software die andere bedrijven op deze machine hebben gezet. |
type:driver start:boot, | Stuurprogramma's die worden geladen terwijl Windows start en waarvan Windows de handtekening niet vertrouwt. Op een gezonde machine geen enkel. |
!path:C:\Windows type:ownProcess | Een service met een eigen proces waarvan het bestand buiten de Windows-map staat. |
path:\AppData\ | Gestart vanuit iemands profiel, de laatste plek waar een service wordt verwacht. |
path:\System32\\ type:ownProcess | Een backslash voor een spatie maakt de spatie deel van het woord, dus een pad dat op een backslash eindigt wordt met twee geschreven als er nog een term op volgt. Aan het eind van de query is één genoeg. |
| Query | Wat het vindt |
|---|---|
trigger:device status:stopped | Wacht tot een apparaat verschijnt, dus om een reden gestopt. |
trigger:network | Gestart wanneer een verzoek bij een netwerkeindpunt aankomt - een poort, een named pipe of een RPC-interface. |
trigger:stop | Items die een trigger kan stoppen, niet alleen starten. |
dependson:Winmgmt | Items die WMI nodig hebben om te draaien. |
requiredby:Spooler | Alles wat de Print Spooler nodig heeft om te draaien, en wat die op hun beurt nodig hebben. |
| Query | Wat het vindt |
|---|---|
privilege:SeTcbPrivilege | Vraagt om op te treden als deel van het besturingssysteem. |
privilege:SeImpersonatePrivilege !account:localsystem | Kan namens een client handelen terwijl het onder een ander account dan LocalSystem draait. |
sidtype:unrestricted | Draagt een eigen service-SID in zijn proces, zodat machtigingen het alleen kunnen noemen. sidtype:restricted vraagt naar degene waarvan het proces ook schrijfbeperkt is. |
type:sharedProcess status:running | Draait binnen een gedeelde svchost, samen met andere. |
memory:>200MB | Een proces dat meer dan 200 MB gebruikt. Geheugen wordt vanzelf gelezen wanneer een query erom vraagt. |
pid:1000-2000 | In een proces waarvan de id tussen 1000 en 2000 ligt. |
| Query | Wat het vindt |
|---|---|
spool | Een kaal woord, gezocht in de naam, de weergavenaam, het account en het opstartpad. |
name:=wuauserv | Precies deze naam, en niets wat hem alleen maar bevat. |
name:win* | Namen die met win beginnen, geschreven met een jokerteken. |
name:/svc$/ | Namen die op svc eindigen, geschreven als reguliere expressie. |
description:none | Helemaal geen beschrijving, wat bij de meeste stuurprogramma's zo is. |
description:? | Een beschrijving die Windows niet kon aanleveren, meestal omdat ze naar een taalbestand wijst dat er niet is. |
peruser:template | De sjablonen per gebruiker die Windows kopieert voor elke aangemelde sessie. |
Gebouwd uit het programma zelf, dus deze tabel kan niet afwijken van wat het hulpmiddel accepteert. Een veld zonder lijst met waarden neemt tekst, een getal of een grootte - de derde kolom zegt welke.
+ {{table:query-fields}} +Handtekeningen kosten enkele seconden over een hele machine en geheugen is een meting en geen instelling, dus geen van beide wordt voor een lijst gelezen tenzij erom gevraagd wordt. Een query die er een noemt zet dat lezen vanzelf aan - u hoeft niet aan --signatures te denken naast signed:no. In het venster zegt een query over handtekeningen dat het antwoord onvolledig is totdat ze er zijn, in plaats van een kortere lijst te tonen alsof dat het antwoord was.
Als items zijn beoordeeld op een veld dat deze sessie niet kon lezen, draagt het resultaat een regel die zegt hoeveel - omdat zo'n resultaat items kan missen, of items kan bevatten die er niet in horen. Dat is dezelfde regel die het hele hulpmiddel aanhoudt: een mislukte lezing is zichtbaar in het antwoord, nooit ingeslikt. Een uitgever krijgt dezelfde behandeling wanneer alleen het certificaat hem beweert: naast elk ander oordeel dan trusted wordt de naam getoond als not verified, en publisher: telt het item als onzeker in een regel van zichzelf - dus !publisher:microsoft behoudt een Microsoft-bestand dat iemand na het ondertekenen heeft gewijzigd.
Un singur limbaj, în caseta de căutare a ferestrei și în bws list --query. Un cuvânt simplu caută în nume, numele afișat, cont și calea de lansare. Un câmp îl restrânge. {{field_count}} câmpuri, iar același text înseamnă același lucru în ambele jumătăți ale instrumentului.
start:auto !status:running
Prima interogare pe care o scriu majoritatea oamenilor, și cea la care services.msc nu poate răspunde deloc.
file:missing
O intrare care indică spre un executabil ce nu se află pe disc. De obicei, o dezinstalare care a lăsat înregistrarea în urmă.
signed:no peruser:no
Familiile pe utilizator fac câte o copie pe sesiune și umplu lista cu aproape-duplicate. Aceasta întreabă despre restul.
mismatch:running
Configurație și stare care nu concordă - o intrare pe care managerul este setat să n-o pornească niciodată, rulând totuși.
privilege:SeDebugPrivilege
Un privilegiu care permite unui proces să deschidă oricare altul. Merită să știți ce servicii îl cer.
account:?
Intrările la care această sesiune n-a putut citi contul. O întrebare pe care services.msc nici măcar nu o poate pune.
and pentru că n-ar putea însemna altceva.status:running status:stopped înseamnă oricare dintre ele, pentru că asta scrie bifarea a două filtre. Două limite pe un număr tot restrâng - pid:>1000 pid:<2000 este intervalul dintre ele.! în fața unui termen îl neagă: !status:running. Într-un fișier batch cu setlocal EnableDelayedExpansion, cmd înghite acel ! fără un cuvânt, iar interogarea înseamnă în tăcere altceva - scrieți acolo ^! între ghilimele.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe - este căutată, nu citită ca un câmp numit C.name:spool se potrivește cu orice îl conține - implicit, pentru că asta se așteaptă oamenii de la o casetă de căutare.name:=spooler este exact.name:spool* acceptă metacaractere, * și ?.name:/^Sql.*/ este o expresie regulată și, între bare oblice, se scrie așa cum se scriu expresiile regulate: \?, \\ și o virgulă înseamnă acolo ce înseamnă acolo. O bară oblică care nu se închide niciodată este o eroare - pentru a căuta bara însăși, scrieți \/ sau folosiți ghilimele.O valoare scrisă greșit este o eroare, niciodată un rezultat gol. status:runing răspunde Did you mean running? și se încheie cu codul 2. O listă goală ar arăta ca un răspuns, iar diferența dintre "nimic nu se potrivește" și "ați scris greșit" este diferența dintre o mașină curată și un audit care n-a dovedit nimic. O interogare care n-ar restrânge nimic este refuzată și în linia de comandă, ca un script să nu opereze pe toată mașina din cauza unei greșeli de tastare.
Fiecare funcționează la fel în caseta de căutare a ferestrei și după bws list --query, iar fiecare a fost rulat pe un Windows real înainte de a fi scris aici. Ce găsește depinde de mașină - iar pentru o întrebare despre probleme, un răspuns gol este cel pe care îl doriți.
| Interogare | Ce găsește |
|---|---|
status:stopPending, | Blocat la oprire sau la pornire - așteptarea pe care snap-in-ul o arată și care nu se termină niciodată. |
start:auto status:stopped trigger:none | Setat să pornească automat, oprit și care nu așteaptă un declanșator - lista scurtă care merită citită după o repornire. |
start:delayed | Automat, pornit puțin după celelalte intrări automate. |
start:manual, | Rulează deși nimic nu îl pornește la boot - ceva l-a cerut, l-a pornit un declanșator sau cineva. |
| Interogare | Ce găsește |
|---|---|
account:localsystem !publisher:microsoft | Rulează ca LocalSystem, cel mai puternic cont, dintr-un fișier pe care Microsoft nu l-a semnat. O interogare despre editor citește singură semnăturile, deci durează câteva secunde. |
!account:localsystem, | Servicii care rulează sub orice alt cont - unul virtual, unul gestionat sau al unei persoane. |
account:"NT SERVICE" | Un cont virtual al serviciului însuși. Ghilimelele țin cuvintele laolaltă, din cauza spațiului. |
| Interogare | Ce găsește |
|---|---|
signed:notSigned, | Fără semnătură, un lanț în care Windows nu are încredere sau un fișier modificat după ce a fost semnat. |
signed:trusted !publisher:microsoft | Semnat, de încredere și nu de Microsoft - software-ul pe care alte companii l-au pus pe această mașină. |
type:driver start:boot, | Drivere încărcate la pornirea Windows a căror semnătură nu inspiră încredere Windows-ului. Pe o mașină sănătoasă, niciunul. |
!path:C:\Windows type:ownProcess | Un serviciu cu propriul proces al cărui fișier se află în afara folderului Windows. |
path:\AppData\ | Lansat din interiorul profilului cuiva, ultimul loc în care se așteaptă un serviciu. |
path:\System32\\ type:ownProcess | O bară oblică inversă înaintea unui spațiu face spațiul parte din cuvânt, așa că o cale care se termină cu bară oblică inversă se scrie cu două atunci când după ea urmează alt termen. La sfârșitul interogării una este de ajuns. |
| Interogare | Ce găsește |
|---|---|
trigger:device status:stopped | Așteaptă sosirea unui dispozitiv, deci oprit dintr-un motiv. |
trigger:network | Pornit când o cerere ajunge la un punct final de rețea - un port, o conductă numită sau o interfață RPC. |
trigger:stop | Intrări pe care un declanșator le poate opri, nu doar porni. |
dependson:Winmgmt | Intrări care au nevoie de WMI pentru a rula. |
requiredby:Spooler | Tot ce are nevoie Print Spooler ca să ruleze și ce au nevoie la rândul lor acelea. |
| Interogare | Ce găsește |
|---|---|
privilege:SeTcbPrivilege | Cere să acționeze ca parte a sistemului de operare. |
privilege:SeImpersonatePrivilege !account:localsystem | Poate acționa în numele unui client rulând sub alt cont decât LocalSystem. |
sidtype:unrestricted | Poartă propriul SID de serviciu în procesul său, deci permisiunile îl pot numi doar pe el. sidtype:restricted întreabă despre cele al căror proces este și restricționat la scriere. |
type:sharedProcess status:running | Rulează în interiorul unui svchost partajat, împreună cu altele. |
memory:>200MB | Un proces care folosește mai mult de 200 MB. Memoria este citită singură când o interogare întreabă despre ea. |
pid:1000-2000 | Într-un proces al cărui id se află între 1000 și 2000. |
| Interogare | Ce găsește |
|---|---|
spool | Un cuvânt simplu, căutat în nume, numele afișat, cont și calea de lansare. |
name:=wuauserv | Exact acest nume și nimic care îl conține doar. |
name:win* | Nume care încep cu win, scrise cu metacaracter. |
name:/svc$/ | Nume care se termină în svc, scrise ca expresie regulată. |
description:none | Nicio descriere deloc, ceea ce este cazul majorității driverelor. |
description:? | O descriere pe care Windows n-a putut-o preda, de obicei pentru că indică un fișier de limbă care lipsește. |
peruser:template | Șabloanele pe utilizator pe care Windows le copiază pentru fiecare sesiune autentificată. |
Construit din programul însuși, deci acest tabel nu se poate abate de la ce acceptă instrumentul. Un câmp fără listă de valori acceptă text, un număr sau o dimensiune - a treia coloană spune care.
+ {{table:query-fields}} +Semnăturile durează câteva secunde pe o mașină întreagă, iar memoria este o măsurătoare și nu o setare, așa că niciuna nu este citită pentru o listă decât dacă se cere. O interogare care menționează una pornește singură acea citire - nu trebuie să vă amintiți --signatures pe lângă signed:no. În fereastră, o interogare despre semnături spune că răspunsul este incomplet până sosesc, în loc să arate o listă mai scurtă ca și cum ar fi răspunsul.
Dacă intrările au fost judecate după un câmp pe care această sesiune nu l-a putut citi, rezultatul poartă o linie care spune câte - pentru că un astfel de rezultat poate lipsi intrări sau poate conține unele care nu îi aparțin. Este aceeași regulă pe care o respectă tot instrumentul: o citire eșuată este vizibilă în răspuns, niciodată înghițită. Un editor primește același tratament când doar certificatul îl afirmă: lângă orice verdict altul decât trusted numele este afișat ca not verified, iar publisher: socotește intrarea nesigură pe o linie proprie - deci !publisher:microsoft păstrează un fișier Microsoft pe care cineva l-a modificat după semnare.
Один язык, в поле поиска окна и в bws list --query. Простое слово ищет в имени, отображаемом имени, учётной записи и пути запуска. Поле сужает поиск. {{field_count}} полей, и один и тот же текст значит одно и то же в обеих половинах инструмента.
start:auto !status:running
Первый запрос, который пишут большинство людей, и тот, на который services.msc не может ответить вовсе.
file:missing
Запись, указывающая на исполняемый файл, которого нет на диске. Обычно это удаление, оставившее регистрацию.
signed:no peruser:no
Семейства для каждого пользователя делают копию на каждый сеанс и заполняют список почти одинаковыми записями. Этот запрос спрашивает об остальных.
mismatch:running
Конфигурация и состояние расходятся: запись, которую диспетчер настроен никогда не запускать, всё равно работает.
privilege:SeDebugPrivilege
Привилегия, позволяющая процессу открыть любой другой. Стоит знать, какие службы её просят.
account:?
Записи, у которых этот сеанс не смог прочитать учётную запись. Вопрос, который services.msc даже не может задать.
and нет, потому что оно не могло бы значить ничего другого.status:running status:stopped значит одно или другое, потому что именно это пишет отметка двух фильтров. Две границы числа всё же сужают: pid:>1000 pid:<2000 - это диапазон между ними.! перед термом отрицает его: !status:running. В пакетном файле с setlocal EnableDelayedExpansion cmd молча съедает этот !, и запрос тихо начинает значить другое - напишите там ^! внутри кавычек.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe - ищется, а не читается как поле с именем C.name:spool совпадает со всем, что его содержит - это по умолчанию, потому что этого люди ждут от поля поиска.name:=spooler - точное совпадение.name:spool* принимает подстановочные знаки, * и ?.name:/^Sql.*/ - регулярное выражение, и внутри косых черт оно пишется так, как пишутся регулярные выражения: \?, \\ и запятая значат там то, что значат там. Косая черта, которая никогда не закрывается, - ошибка: чтобы искать саму косую черту, напишите \/ или используйте кавычки.Неверно набранное значение - это ошибка, а не пустой результат. status:runing отвечает Did you mean running? и завершается кодом 2. Пустой список выглядел бы как ответ, а разница между «ничего не совпадает» и «вы опечатались» - это разница между чистой машиной и аудитом, который ничего не доказал. Запрос, который ничего бы не сузил, отклоняется и в командной строке, чтобы скрипт не работал со всей машиной из-за опечатки.
Каждый работает одинаково в поле поиска окна и после bws list --query, и каждый был выполнен на настоящей Windows, прежде чем был записан здесь. Что он находит, зависит от машины - а для вопроса о неполадках пустой ответ - тот, который вам нужен.
| Запрос | Что находит |
|---|---|
status:stopPending, | Застрявшие при остановке или запуске - ожидание, которое показывает оснастка и которое никогда не заканчивается. |
start:auto status:stopped trigger:none | Настроены на автозапуск, остановлены и не ждут триггера - короткий список, который стоит прочитать после перезагрузки. |
start:delayed | Автоматические, запускаемые чуть позже остальных автоматических записей. |
start:manual, | Работают, хотя при загрузке их ничто не запускает: их запросили, их запустил триггер или кто-то. |
| Запрос | Что находит |
|---|---|
account:localsystem !publisher:microsoft | Работает как LocalSystem, самая сильная учётная запись, из файла, который Microsoft не подписывала. Запрос об издателе сам читает подписи, поэтому занимает несколько секунд. |
!account:localsystem, | Службы, работающие под любой другой учётной записью: виртуальной, управляемой или чьей-то личной. |
account:"NT SERVICE" | Собственная виртуальная учётная запись службы. Кавычки удерживают слова вместе из-за пробела. |
| Запрос | Что находит |
|---|---|
signed:notSigned, | Нет подписи, цепочка, которой Windows не доверяет, или файл, изменённый после подписания. |
signed:trusted !publisher:microsoft | Подписаны, доверенные и не от Microsoft - программы, которые другие компании поставили на эту машину. |
type:driver start:boot, | Драйверы, загружаемые при старте Windows, подписи которых Windows не доверяет. На здоровой машине - ни одного. |
!path:C:\Windows type:ownProcess | Служба со своим процессом, чей файл лежит вне папки Windows. |
path:\AppData\ | Запущены из чьего-то профиля - последнего места, где ждёшь службу. |
path:\System32\\ type:ownProcess | Обратная косая черта перед пробелом делает пробел частью слова, поэтому путь, оканчивающийся обратной косой чертой, пишется с двумя, если за ним идёт другой терм. В конце запроса достаточно одной. |
| Запрос | Что находит |
|---|---|
trigger:device status:stopped | Ждёт появления устройства, поэтому остановлена не без причины. |
trigger:network | Запускается, когда запрос приходит на сетевую конечную точку: порт, именованный канал или интерфейс RPC. |
trigger:stop | Записи, которые триггер может не только запускать, но и останавливать. |
dependson:Winmgmt | Записи, которым для работы нужен WMI. |
requiredby:Spooler | Всё, что нужно Print Spooler для работы, и то, что нужно им в свою очередь. |
| Запрос | Что находит |
|---|---|
privilege:SeTcbPrivilege | Просит права действовать как часть операционной системы. |
privilege:SeImpersonatePrivilege !account:localsystem | Может действовать от имени клиента, работая под учётной записью, отличной от LocalSystem. |
sidtype:unrestricted | Несёт в своём процессе собственный SID службы, поэтому разрешения могут называть только её. sidtype:restricted спрашивает о тех, чей процесс к тому же ограничен на запись. |
type:sharedProcess status:running | Работает внутри общего svchost вместе с другими. |
memory:>200MB | Процесс, использующий больше 200 МБ. Память читается сама, когда запрос о ней спрашивает. |
pid:1000-2000 | В процессе с идентификатором от 1000 до 2000. |
| Запрос | Что находит |
|---|---|
spool | Простое слово, ищется в имени, отображаемом имени, учётной записи и пути запуска. |
name:=wuauserv | Именно это имя и ничего, что лишь содержит его. |
name:win* | Имена, начинающиеся с win, записанные с подстановочным знаком. |
name:/svc$/ | Имена, оканчивающиеся на svc, записанные как регулярное выражение. |
description:none | Вообще без описания, как у большинства драйверов. |
description:? | Описание, которое Windows не смогла выдать, обычно потому что оно указывает на файл языка, которого нет. |
peruser:template | Шаблоны для каждого пользователя, которые Windows копирует на каждый вошедший сеанс. |
Строится из самой программы, поэтому эта таблица не может разойтись с тем, что принимает инструмент. Поле без списка значений принимает текст, число или размер - третий столбец говорит какое.
+ {{table:query-fields}} +Подписи занимают несколько секунд на всей машине, а память - это измерение, а не настройка, поэтому ни то ни другое не читается для списка, пока не попросят. Запрос, упоминающий одно из них, сам включает это чтение: не нужно помнить --signatures в дополнение к signed:no. В окне запрос о подписях сообщает, что ответ неполон, пока они не придут, вместо того чтобы показывать более короткий список так, будто это и есть ответ.
Если записи оценивались по полю, которое этот сеанс не смог прочитать, результат несёт строку, сообщающую сколько их, - потому что в таком результате могут не хватать записей или быть лишние. Это то же правило, которого держится весь инструмент: неудачное чтение видно в ответе и никогда не проглатывается. Издатель получает то же обращение, когда его заявляет только сертификат: рядом с любым вердиктом, кроме trusted, имя показывается как not verified, а publisher: считает запись неуверенной в отдельной строке, - поэтому !publisher:microsoft сохраняет файл Microsoft, который кто-то изменил после подписания.
Tek bir dil; hem pencerenin arama kutusunda hem bws list --query içinde. Çıplak bir sözcük adı, görünen adı, hesabı ve başlatma yolunu arar. Bir alan onu daraltır. {{field_count}} alan ve aynı metin aracın iki yarısında da aynı anlama gelir.
start:auto !status:running
Çoğu insanın yazdığı ilk sorgu ve services.msc'nin hiç yanıtlayamadığı.
file:missing
Diskte olmayan bir yürütülebilir dosyaya işaret eden bir öğe. Genellikle kaydı geride bırakan bir kaldırma.
signed:no peruser:no
Kullanıcı başına aileler oturum başına bir kopya yapar ve listeyi neredeyse aynı öğelerle doldurur. Bu, geri kalanı sorar.
mismatch:running
Birbiriyle uyuşmayan yapılandırma ve durum - yöneticinin hiç başlatmamaya ayarladığı bir öğe, yine de çalışıyor.
privilege:SeDebugPrivilege
Bir işlemin diğer herhangi birini açmasına izin veren bir ayrıcalık. Hangi hizmetlerin onu istediğini bilmeye değer.
account:?
Bu oturumun hesabı okuyamadığı öğeler. services.msc'nin soramayacağı bir soru.
and anahtar sözcüğü yoktur, çünkü başka bir anlama gelemezdi.status:running status:stopped ikisinden biri demektir, çünkü iki filtreyi işaretlemek bunu yazar. Bir sayı üzerindeki iki sınır yine de daraltır - pid:>1000 pid:<2000 ikisi arasındaki aralıktır.! onu olumsuzlar: !status:running. setlocal EnableDelayedExpansion içeren bir toplu iş dosyasında cmd bu ! işaretini tek kelime etmeden yer ve sorgu sessizce başka bir anlama gelir - orada tırnakların içine ^! yazın.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe - aranır, C adlı bir alan olarak okunmaz.name:spool onu içeren her şeyle eşleşir - varsayılan budur, çünkü insanlar bir arama kutusundan bunu bekler.name:=spooler tam eşleşmedir.name:spool* joker karakterleri, * ve ?, kabul eder.name:/^Sql.*/ bir düzenli ifadedir ve eğik çizgilerin içinde düzenli ifadelerin yazıldığı gibi yazılır: \?, \\ ve virgül orada ne anlama geliyorsa onu ifade eder. Hiç kapanmayan bir eğik çizgi hatadır - eğik çizginin kendisini aramak için \/ yazın ya da tırnak kullanın.Yanlış yazılmış bir değer hatadır, asla boş bir sonuç değildir. status:runing, Did you mean running? yanıtını verir ve 2 koduyla biter. Boş bir liste yanıt gibi görünürdü ve "hiçbir şey eşleşmiyor" ile "yanlış yazdınız" arasındaki fark, temiz bir makine ile hiçbir şeyi kanıtlamayan bir denetim arasındaki farktır. Hiçbir şeyi daraltmayacak bir sorgu komut satırında da reddedilir; böylece bir betik bir yazım hatası yüzünden tüm makine üzerinde işlem yapmaz.
Her biri pencerenin arama kutusunda ve bws list --query sonrasında aynı çalışır ve her biri buraya yazılmadan önce gerçek bir Windows'ta çalıştırıldı. Ne bulduğu makineye bağlıdır - ve sorunla ilgili bir soruda, boş bir yanıt istediğiniz yanıttır.
| Sorgu | Ne bulur |
|---|---|
status:stopPending, | Durdurulurken ya da başlatılırken takılmış - ek bileşenin gösterdiği ve asla bitmeyen bekleme. |
start:auto status:stopped trigger:none | Otomatik başlayacak şekilde ayarlı, durmuş ve bir tetikleyici beklemeyen - yeniden başlatmadan sonra okumaya değen kısa liste. |
start:delayed | Otomatik, diğer otomatik öğelerden biraz sonra başlatılan. |
start:manual, | Açılışta hiçbir şey onu başlatmadığı halde çalışan - biri istedi, bir tetikleyici başlattı ya da birisi başlattı. |
| Sorgu | Ne bulur |
|---|---|
account:localsystem !publisher:microsoft | En güçlü hesap olan LocalSystem olarak, Microsoft'un imzalamadığı bir dosyadan çalışan. Yayımcı sorgusu imzaları kendiliğinden okur, bu yüzden birkaç saniye sürer. |
!account:localsystem, | Başka herhangi bir hesap altında çalışan hizmetler - sanal bir hesap, yönetilen bir hesap ya da bir kişinin kendi hesabı. |
account:"NT SERVICE" | Hizmetin kendi sanal hesabı. Boşluk yüzünden tırnaklar sözcükleri bir arada tutar. |
| Sorgu | Ne bulur |
|---|---|
signed:notSigned, | İmza yok, Windows'un güvenmediği bir zincir ya da imzalandıktan sonra değiştirilmiş bir dosya. |
signed:trusted !publisher:microsoft | İmzalı, güvenilir ve Microsoft tarafından olmayan - diğer şirketlerin bu makineye koyduğu yazılım. |
type:driver start:boot, | Windows başlarken yüklenen ve imzasına Windows'un güvenmediği sürücüler. Sağlıklı bir makinede hiç yok. |
!path:C:\Windows type:ownProcess | Dosyası Windows klasörünün dışında duran, kendi işlemi olan bir hizmet. |
path:\AppData\ | Birinin profilinin içinden başlatılan; bir hizmetin beklendiği son yer. |
path:\System32\\ type:ownProcess | Boşluğun önündeki bir ters eğik çizgi boşluğu sözcüğün parçası yapar; bu yüzden ters eğik çizgiyle biten bir yol, ardından başka bir terim geldiğinde iki tane ile yazılır. Sorgunun sonunda bir tane yeter. |
| Sorgu | Ne bulur |
|---|---|
trigger:device status:stopped | Bir aygıtın gelmesini bekleyen, yani bir nedenle durmuş. |
trigger:network | Bir ağ uç noktasına - bir bağlantı noktasına, adlandırılmış bir kanala ya da bir RPC arayüzüne - bir istek geldiğinde başlatılan. |
trigger:stop | Bir tetikleyicinin yalnızca başlatmakla kalmayıp durdurabildiği öğeler. |
dependson:Winmgmt | Çalışmak için WMI'ye ihtiyaç duyan öğeler. |
requiredby:Spooler | Print Spooler'ın çalışmak için ihtiyaç duyduğu her şey ve onların da sırayla ihtiyaç duyduğu şeyler. |
| Sorgu | Ne bulur |
|---|---|
privilege:SeTcbPrivilege | İşletim sisteminin parçası olarak davranmayı ister. |
privilege:SeImpersonatePrivilege !account:localsystem | LocalSystem dışında bir hesap altında çalışırken bir istemci adına hareket edebilir. |
sidtype:unrestricted | İşleminde kendine ait bir hizmet SID'i taşır; böylece izinler yalnızca onu adlandırabilir. sidtype:restricted, işlemi ayrıca yazma kısıtlı olanları sorar. |
type:sharedProcess status:running | Ortak bir svchost içinde, diğerleriyle birlikte çalışan. |
memory:>200MB | 200 MB'tan fazla kullanan bir işlem. Bir sorgu bunu sorduğunda bellek kendiliğinden okunur. |
pid:1000-2000 | Kimliği 1000 ile 2000 arasında olan bir işlemde. |
| Sorgu | Ne bulur |
|---|---|
spool | Adda, görünen adda, hesapta ve başlatma yolunda aranan çıplak bir sözcük. |
name:=wuauserv | Tam olarak bu ad, onu yalnızca içeren hiçbir şey değil. |
name:win* | win ile başlayan adlar, joker karakterle yazılmış. |
name:/svc$/ | svc ile biten adlar, düzenli ifade olarak yazılmış. |
description:none | Hiç açıklaması olmayan; sürücülerin çoğu böyledir. |
description:? | Windows'un teslim edemediği bir açıklama; genellikle var olmayan bir dil dosyasına işaret ettiği için. |
peruser:template | Windows'un oturum açmış her oturum için kopyaladığı kullanıcı başına şablonlar. |
Programın kendisinden üretilir, bu yüzden bu tablo aracın kabul ettiğinden sapamaz. Değer listesi olmayan bir alan metin, sayı ya da boyut alır - üçüncü sütun hangisi olduğunu söyler.
+ {{table:query-fields}} +İmzalar tüm bir makinede birkaç saniye sürer ve bellek bir ayar değil bir ölçümdür; bu yüzden istenmedikçe bir liste için ikisi de okunmaz. Birinden söz eden bir sorgu o okumayı kendiliğinden açar - signed:no yanında --signatures'ı da hatırlamanız gerekmez. Pencerede imzalarla ilgili bir sorgu, imzalar gelene kadar yanıtın eksik olduğunu söyler; daha kısa bir listeyi yanıtmış gibi göstermek yerine.
Öğeler bu oturumun okuyamadığı bir alana göre yargılandıysa sonuç, kaç tane olduğunu söyleyen bir satır taşır - çünkü böyle bir sonuçta öğe eksik olabilir ya da ait olmayanlar bulunabilir. Bu, aracın tamamının uyduğu aynı kuraldır: başarısız bir okuma yanıtta görünür, asla yutulmaz. Bir yayımcı, onu yalnızca sertifika iddia ettiğinde aynı muameleyi görür: trusted dışındaki herhangi bir hükmün yanında ad not verified olarak gösterilir ve publisher: öğeyi kendi satırında belirsiz sayar - böylece !publisher:microsoft, birinin imzalandıktan sonra değiştirdiği bir Microsoft dosyasını tutar.
Одна мова, у полі пошуку вікна й у bws list --query. Просте слово шукає в імені, відображуваному імені, обліковому записі та шляху запуску. Поле звужує пошук. Полів: {{field_count}}, і той самий текст означає те саме в обох половинах інструмента.
start:auto !status:running
Перший запит, який пише більшість людей, і той, на який services.msc не відповідає взагалі.
file:missing
Запис, що вказує на виконуваний файл, якого немає на диску. Зазвичай це видалення, що залишило реєстрацію.
signed:no peruser:no
Сімейства для кожного користувача створюють копію на сеанс і заповнюють список майже однаковими записами. Цей запит питає про решту.
mismatch:running
Конфігурація й стан, що розходяться: запис, який диспетчер налаштовано ніколи не запускати, а він усе одно працює.
privilege:SeDebugPrivilege
Привілей, що дозволяє процесу відкрити будь-який інший. Варто знати, які служби його просять.
account:?
Записи, де цей сеанс не зміг прочитати обліковий запис. Запитання, якого services.msc навіть не вміє поставити.
and немає, бо нічого іншого воно не могло б означати.status:running status:stopped означає будь-яке з двох, бо саме це записує позначення двох фільтрів. Дві межі числа все одно звужують - pid:>1000 pid:<2000 це діапазон між ними.! перед терміном заперечує його: !status:running. У пакетному файлі з setlocal EnableDelayedExpansion cmd без жодного слова з'їдає цей !, і запит мовчки означає щось інше - пишіть там ^! усередині лапок.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe - шукається, а не читається як поле з назвою C.name:spool збігається з усім, що це містить - це типова поведінка, бо саме цього люди чекають від поля пошуку.name:=spooler - точний збіг.name:spool* приймає шаблони, * і ?.name:/^Sql.*/ - регулярний вираз, і всередині скісних рисок він пишеться так, як пишуться регулярні вирази: \?, \\ і кома означають те, що означають там. Скісна риска, що ніколи не закривається, - помилка: щоб шукати саму скісну риску, пишіть \/ або беріть лапки.Помилково набране значення - це помилка, а не порожній результат. status:runing відповідає Did you mean running? і завершується кодом 2. Порожній список виглядав би як відповідь, а різниця між «нічого не збігається» й «ви набрали неправильно» - це різниця між чистою машиною та аудитом, що нічого не довів. Запит, який нічого б не звузив, відхиляється і в командному рядку, тож скрипт не діє на всю машину через одруківку.
Кожен працює однаково в полі пошуку вікна й після bws list --query, і кожен був запущений на справжній Windows, перш ніж його тут записали. Що він знаходить, залежить від машини - а для запитання про неприємності порожня відповідь якраз та, якої ви хочете.
| Запит | Що він знаходить |
|---|---|
status:stopPending, | Застрягли на зупинці чи запуску - очікування, яке показує оснастка й яке ніколи не закінчується. |
start:auto status:stopped trigger:none | Налаштовано на автозапуск, зупинено й не чекає тригера - короткий список, який варто прочитати після перезавантаження. |
start:delayed | Автоматичний, запускається трохи пізніше за інші автоматичні записи. |
start:manual, | Працює, хоча його ніщо не запускає під час завантаження - його попросило щось, запустив тригер або хтось. |
| Запит | Що він знаходить |
|---|---|
account:localsystem !publisher:microsoft | Працює від LocalSystem, найпотужнішого облікового запису, з файлу, який Microsoft не підписала. Запит про видавця сам читає підписи, тож це займає кілька секунд. |
!account:localsystem, | Служби, що працюють від будь-якого іншого облікового запису - віртуального, керованого або власного облікового запису людини. |
account:"NT SERVICE" | Власний віртуальний обліковий запис служби. Лапки тримають слова разом через пробіл. |
| Запит | Що він знаходить |
|---|---|
signed:notSigned, | Без підпису, ланцюжок, якому Windows не довіряє, або файл, змінений після підписання. |
signed:trusted !publisher:microsoft | Підписано, довірено й не Microsoft - програмне забезпечення, яке на цю машину поставили інші компанії. |
type:driver start:boot, | Драйвери, що завантажуються під час запуску Windows, підпису яких Windows не довіряє. На здоровій машині - жодного. |
!path:C:\Windows type:ownProcess | Служба з власним процесом, чий файл лежить поза текою Windows. |
path:\AppData\ | Запущено зсередини чийогось профілю - останнє місце, де чекаєш службу. |
path:\System32\\ type:ownProcess | Зворотна скісна риска перед пробілом робить пробіл частиною слова, тому шлях, що закінчується зворотною скісною рискою, пишеться з двома, коли після нього йде інший термін. У кінці запиту досить однієї. |
| Запит | Що він знаходить |
|---|---|
trigger:device status:stopped | Чекає на появу пристрою, тож зупинена не без причини. |
trigger:network | Запускається, коли запит надходить до мережевої кінцевої точки - порту, іменованого каналу чи інтерфейсу RPC. |
trigger:stop | Записи, які тригер може й зупинити, не лише запустити. |
dependson:Winmgmt | Записи, яким для роботи потрібен WMI. |
requiredby:Spooler | Усе, що потрібне Print Spooler для роботи, і те, що потрібне цим у свою чергу. |
| Запит | Що він знаходить |
|---|---|
privilege:SeTcbPrivilege | Просить права діяти як частина операційної системи. |
privilege:SeImpersonatePrivilege !account:localsystem | Може діяти від імені клієнта, працюючи від облікового запису, відмінного від LocalSystem. |
sidtype:unrestricted | Несе власний SID служби у своєму процесі, тож дозволи можуть називати саме її. sidtype:restricted питає про ті, чий процес ще й обмежений на запис. |
type:sharedProcess status:running | Працює всередині спільного svchost разом з іншими. |
memory:>200MB | Процес, що використовує понад 200 МБ. Пам'ять читається сама, коли запит про неї питає. |
pid:1000-2000 | У процесі, чий ідентифікатор між 1000 і 2000. |
| Запит | Що він знаходить |
|---|---|
spool | Просте слово, що шукається в імені, відображуваному імені, обліковому записі та шляху запуску. |
name:=wuauserv | Рівно це ім'я, і нічого, що лише його містить. |
name:win* | Імена, що починаються на win, записані із шаблоном. |
name:/svc$/ | Імена, що закінчуються на svc, записані як регулярний вираз. |
description:none | Зовсім без опису, а це більшість драйверів. |
description:? | Опис, який Windows не зміг передати, зазвичай тому, що він вказує на файл мови, якого немає. |
peruser:template | Шаблони для кожного користувача, які Windows копіює для кожного сеансу ввійшовшого користувача. |
Побудовано з самої програми, тож ця таблиця не може розійтися з тим, що приймає інструмент. Поле без списку значень приймає текст, число або розмір - третій стовпець каже, що саме.
+ {{table:query-fields}} +Підписи на всій машині займають кілька секунд, а пам'ять - це вимірювання, а не налаштування, тож жодне з них не читається для списку, поки не попросять. Запит, що згадує одне з них, сам вмикає це читання - вам не треба пам'ятати --signatures на додачу до signed:no. У вікні запит про підписи каже, що відповідь неповна, доки вони не надійдуть, а не показує коротший список, ніби це і є відповідь.
Якщо записи оцінювалися за полем, яке цей сеанс не зміг прочитати, результат несе рядок із кількістю таких - бо в такому результаті можуть бракувати записів або бути зайві. Це те саме правило, якого дотримується весь інструмент: невдале читання видно у відповіді, воно ніколи не проковтується. Видавець отримує те саме поводження, коли його заявляє лише сертифікат: поруч із будь-яким вердиктом, крім trusted, ім'я показується як not verified, а publisher: зараховує запис як непевний в окремому рядку - тож !publisher:microsoft зберігає файл Microsoft, який хтось змінив після підписання.
Một ngôn ngữ, trong ô tìm kiếm của cửa sổ và trong bws list --query. Một từ trần tìm trong tên, tên hiển thị, tài khoản và đường dẫn khởi chạy. Một trường thu hẹp nó. {{field_count}} trường, và cùng một văn bản có cùng ý nghĩa ở cả hai nửa của công cụ.
start:auto !status:running
Truy vấn đầu tiên hầu hết mọi người viết, và là truy vấn mà services.msc hoàn toàn không thể trả lời.
file:missing
Một mục trỏ tới tệp thực thi không có trên đĩa. Thường là một lần gỡ cài đặt để lại phần đăng ký.
signed:no peruser:no
Các họ theo người dùng tạo một bản sao mỗi phiên và lấp danh sách bằng những mục gần như trùng. Truy vấn này hỏi phần còn lại.
mismatch:running
Cấu hình và trạng thái không khớp - một mục mà trình quản lý được đặt để không bao giờ khởi động, vẫn đang chạy.
privilege:SeDebugPrivilege
Một đặc quyền cho phép một tiến trình mở bất kỳ tiến trình nào khác. Đáng biết những dịch vụ nào yêu cầu nó.
account:?
Các mục mà phiên này không đọc được tài khoản. Một câu hỏi mà services.msc thậm chí không thể đặt ra.
and vì nó không thể có nghĩa nào khác.status:running status:stopped nghĩa là một trong hai, vì đó là điều việc đánh dấu hai bộ lọc ghi ra. Hai cận trên một con số vẫn thu hẹp - pid:>1000 pid:<2000 là khoảng giữa chúng.! đứng trước một thành phần sẽ phủ định nó: !status:running. Trong tệp batch có setlocal EnableDelayedExpansion, cmd nuốt ! đó mà không nói một lời và truy vấn lặng lẽ có nghĩa khác - hãy viết ^! bên trong dấu nháy ở đó.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe - được tìm kiếm, chứ không bị đọc như một trường tên C.name:spool khớp với mọi thứ chứa nó - mặc định, vì đó là điều mọi người mong đợi ở một ô tìm kiếm.name:=spooler là khớp chính xác.name:spool* nhận ký tự đại diện, * và ?.name:/^Sql.*/ là một biểu thức chính quy, và bên trong dấu gạch chéo nó được viết như cách biểu thức chính quy được viết: \?, \\ và dấu phẩy mang ý nghĩa mà chúng mang ở đó. Một dấu gạch chéo không bao giờ đóng là một lỗi - để tìm chính dấu gạch chéo, hãy viết \/ hoặc dùng dấu nháy.Một giá trị gõ sai là một lỗi, không bao giờ là một kết quả trống. status:runing trả lời Did you mean running? và kết thúc với mã 2. Một danh sách trống sẽ trông như một câu trả lời, và sự khác biệt giữa "không có gì khớp" và "bạn gõ sai" là sự khác biệt giữa một máy sạch và một cuộc kiểm toán không chứng minh được gì. Một truy vấn không thu hẹp được gì cũng bị từ chối trên dòng lệnh, để một script không thao tác trên cả máy chỉ vì một lỗi gõ.
Mỗi cái hoạt động giống nhau trong ô tìm kiếm của cửa sổ và sau bws list --query, và mỗi cái đã được chạy trên một Windows thật trước khi viết ở đây. Những gì nó tìm thấy phụ thuộc vào máy - và với một câu hỏi về sự cố, một câu trả lời trống là điều bạn muốn.
| Truy vấn | Nó tìm thấy gì |
|---|---|
status:stopPending, | Bị kẹt khi đang dừng hoặc đang khởi động - sự chờ đợi mà snap-in hiển thị và không bao giờ kết thúc. |
start:auto status:stopped trigger:none | Được đặt tự khởi động, đang dừng và không chờ trình kích hoạt - danh sách ngắn đáng đọc sau khi khởi động lại. |
start:delayed | Tự động, được khởi động muộn hơn một chút so với các mục tự động khác. |
start:manual, | Đang chạy dù không gì khởi động nó lúc khởi động máy - có thứ yêu cầu nó, một trình kích hoạt đã khởi động nó, hoặc ai đó đã làm. |
| Truy vấn | Nó tìm thấy gì |
|---|---|
account:localsystem !publisher:microsoft | Chạy với tư cách LocalSystem, tài khoản mạnh nhất, từ một tệp mà Microsoft không ký. Một truy vấn về nhà phát hành tự đọc chữ ký, nên mất vài giây. |
!account:localsystem, | Các dịch vụ chạy dưới bất kỳ tài khoản nào khác - tài khoản ảo, tài khoản được quản lý hoặc tài khoản riêng của một người. |
account:"NT SERVICE" | Một tài khoản ảo riêng của dịch vụ. Dấu nháy giữ các từ lại với nhau, vì có dấu cách. |
| Truy vấn | Nó tìm thấy gì |
|---|---|
signed:notSigned, | Không có chữ ký, một chuỗi mà Windows không tin, hoặc một tệp bị thay đổi sau khi được ký. |
signed:trusted !publisher:microsoft | Đã ký, đáng tin cậy và không phải của Microsoft - phần mềm mà các công ty khác đặt trên máy này. |
type:driver start:boot, | Trình điều khiển được nạp khi Windows khởi động mà Windows không tin chữ ký. Trên một máy khỏe mạnh, không có cái nào. |
!path:C:\Windows type:ownProcess | Một dịch vụ có tiến trình riêng mà tệp của nó nằm ngoài thư mục Windows. |
path:\AppData\ | Được khởi chạy từ bên trong hồ sơ của ai đó, nơi cuối cùng người ta mong đợi một dịch vụ. |
path:\System32\\ type:ownProcess | Một dấu gạch chéo ngược trước dấu cách khiến dấu cách trở thành một phần của từ, nên một đường dẫn kết thúc bằng gạch chéo ngược được viết với hai dấu khi có thành phần khác theo sau. Ở cuối truy vấn, một dấu là đủ. |
| Truy vấn | Nó tìm thấy gì |
|---|---|
trigger:device status:stopped | Đang chờ một thiết bị xuất hiện, nên dừng có lý do. |
trigger:network | Được khởi động khi một yêu cầu đến một điểm cuối mạng - một cổng, một named pipe hoặc một giao diện RPC. |
trigger:stop | Các mục mà một trình kích hoạt có thể dừng, không chỉ khởi động. |
dependson:Winmgmt | Các mục cần WMI để chạy. |
requiredby:Spooler | Mọi thứ Print Spooler cần để chạy, và những thứ đó lần lượt cần gì. |
| Truy vấn | Nó tìm thấy gì |
|---|---|
privilege:SeTcbPrivilege | Yêu cầu được hành động như một phần của hệ điều hành. |
privilege:SeImpersonatePrivilege !account:localsystem | Có thể hành động thay mặt một máy khách trong khi chạy dưới tài khoản khác LocalSystem. |
sidtype:unrestricted | Mang SID dịch vụ riêng trong tiến trình của nó, nên các quyền có thể chỉ nêu tên riêng nó. sidtype:restricted hỏi về những cái có tiến trình còn bị hạn chế ghi. |
type:sharedProcess status:running | Chạy bên trong một svchost dùng chung, cùng với những dịch vụ khác. |
memory:>200MB | Một tiến trình dùng hơn 200 MB. Bộ nhớ được tự đọc khi truy vấn hỏi về nó. |
pid:1000-2000 | Trong một tiến trình có id nằm giữa 1000 và 2000. |
| Truy vấn | Nó tìm thấy gì |
|---|---|
spool | Một từ trần, được tìm trong tên, tên hiển thị, tài khoản và đường dẫn khởi chạy. |
name:=wuauserv | Chính xác tên này, và không có gì chỉ đơn thuần chứa nó. |
name:win* | Các tên bắt đầu bằng win, viết bằng ký tự đại diện. |
name:/svc$/ | Các tên kết thúc bằng svc, viết dưới dạng biểu thức chính quy. |
description:none | Hoàn toàn không có mô tả, điều đúng với hầu hết trình điều khiển. |
description:? | Một mô tả mà Windows không thể giao ra, thường vì nó trỏ tới một tệp ngôn ngữ không tồn tại. |
peruser:template | Các mẫu theo người dùng mà Windows sao chép cho mỗi phiên đã đăng nhập. |
Được dựng từ chính chương trình, nên bảng này không thể lệch khỏi những gì công cụ chấp nhận. Một trường không có danh sách giá trị nhận văn bản, một số hoặc một kích thước - cột thứ ba nói cái nào.
+ {{table:query-fields}} +Chữ ký mất vài giây trên cả máy và bộ nhớ là một phép đo chứ không phải một thiết lập, nên cả hai đều không được đọc cho một danh sách trừ khi được yêu cầu. Một truy vấn nhắc tới một trong hai sẽ tự bật việc đọc đó - bạn không phải nhớ thêm --signatures bên cạnh signed:no. Trong cửa sổ, một truy vấn về chữ ký nói rằng câu trả lời chưa đầy đủ cho đến khi chúng tới, thay vì hiển thị một danh sách ngắn hơn như thể đó là câu trả lời.
Nếu các mục được đánh giá dựa trên một trường mà phiên này không đọc được, kết quả mang một dòng nói có bao nhiêu mục - vì một kết quả như vậy có thể thiếu mục, hoặc chứa những mục không thuộc về nó. Đó là cùng quy tắc mà toàn bộ công cụ giữ: một lần đọc thất bại hiện rõ trong câu trả lời, không bao giờ bị nuốt. Một nhà phát hành nhận cùng cách đối xử khi chỉ chứng chỉ khẳng định nó: bên cạnh bất kỳ phán quyết nào khác ngoài trusted, tên được hiển thị là not verified, và publisher: tính mục đó là không chắc chắn trên một dòng riêng - nên !publisher:microsoft giữ lại một tệp Microsoft bị ai đó thay đổi sau khi ký.
一种语言,既用于窗口的搜索框,也用于 bws list --query。单独一个词会在名称、显示名称、账户和启动路径中搜索。加上字段则缩小范围。共有 {{field_count}} 个字段,相同的文本在工具的两部分中含义相同。
start:auto !status:running
大多数人写的第一个查询,也是 services.msc 完全无法回答的查询。
file:missing
指向磁盘上不存在的可执行文件的条目。通常是卸载后遗留了注册信息。
signed:no peruser:no
按用户的服务族会为每个会话生成一个副本,让列表里充满近似重复的条目。这个查询询问的是其余的部分。
mismatch:running
配置与状态不一致:一个被服务管理器设为永不启动的条目,却仍在运行。
privilege:SeDebugPrivilege
一种让进程能够打开任何其他进程的特权。值得知道哪些服务请求了它。
account:?
此会话无法读取其账户的条目。这是 services.msc 连问都问不出的问题。
and 关键字,因为它不可能有别的含义。status:running status:stopped 表示二者之一,因为勾选两个筛选项时写出的就是这个。对数字的两个边界仍然会缩小范围:pid:>1000 pid:<2000 就是二者之间的范围。! 表示取反:!status:running。在带有 setlocal EnableDelayedExpansion 的批处理文件中,cmd 会悄无声息地吃掉这个 !,查询便在不知不觉中变成了别的意思:在那里请在引号内写成 ^!。start:manual,disabled。account:"NT SERVICE\McmSvc"。C:\Windows\System32\svchost.exe,会被当作搜索内容,而不是被当作名为 C 的字段。name:spool 匹配任何包含它的内容:这是默认行为,因为这是人们对搜索框的预期。name:=spooler 是精确匹配。name:spool* 支持通配符 * 和 ?。name:/^Sql.*/ 是正则表达式,在斜杠内按正则表达式的写法书写:\?、\\ 和逗号在那里是什么意思就是什么意思。一个永远不闭合的斜杠是错误:要搜索斜杠本身,请写成 \/ 或使用引号。输错的值会报错,而不是返回空结果。status:runing 会回答 Did you mean running?,并以代码 2 结束。空列表看起来就像一个答案,而“没有任何匹配”与“你输错了”之间的差别,就是一台干净的计算机与一次什么也没证明的审计之间的差别。在命令行中,任何不会缩小范围的查询同样会被拒绝,所以脚本不会因为一个拼写错误而对整台计算机进行操作。
每一个在窗口的搜索框中和在 bws list --query 之后的效果都一样,而且每一个在写到这里之前都在真实的 Windows 上运行过。能找到什么取决于计算机:对于关于故障的问题,空结果正是你想要的答案。
| 查询 | 找到的内容 |
|---|---|
status:stopPending, | 卡在停止或启动中:管理单元显示、永远不会结束的等待。 |
start:auto status:stopped trigger:none | 设为自动启动、已停止,且不在等待触发器:重启之后值得一读的简短列表。 |
start:delayed | 自动,比其他自动条目稍晚启动。 |
start:manual, | 启动时没有任何内容会启动它却在运行:有东西请求了它、触发器启动了它,或者有人启动了它。 |
| 查询 | 找到的内容 |
|---|---|
account:localsystem !publisher:microsoft | 以最强的账户 LocalSystem 运行,且来自 Microsoft 没有签名的文件。关于发布者的查询会自行读取签名,所以需要几秒钟。 |
!account:localsystem, | 在其他任何账户下运行的服务:虚拟账户、托管账户,或某个人自己的账户。 |
account:"NT SERVICE" | 服务自己的虚拟账户。引号把这些词放在一起,因为中间有空格。 |
| 查询 | 找到的内容 |
|---|---|
signed:notSigned, | 没有签名,Windows 不信任的证书链,或签名之后被更改的文件。 |
signed:trusted !publisher:microsoft | 已签名、受信任,且不是 Microsoft:其他公司放在这台计算机上的软件。 |
type:driver start:boot, | 在 Windows 启动时加载、而 Windows 不信任其签名的驱动程序。在健康的计算机上应为零。 |
!path:C:\Windows type:ownProcess | 有独立进程、其文件位于 Windows 文件夹之外的服务。 |
path:\AppData\ | 从某人的用户配置文件内部启动:最不应该出现服务的地方。 |
path:\System32\\ type:ownProcess | 空格前的反斜杠会让空格成为词的一部分,所以当后面还有其他检索词时,以反斜杠结尾的路径要写两个反斜杠。在查询末尾,一个就够了。 |
| 查询 | 找到的内容 |
|---|---|
trigger:device status:stopped | 等待设备到达,因此是有原因的已停止。 |
trigger:network | 当请求到达某个网络端点(端口、命名管道或 RPC 接口)时启动。 |
trigger:stop | 触发器不仅可以启动、也可以停止的条目。 |
dependson:Winmgmt | 需要 WMI 才能运行的条目。 |
requiredby:Spooler | Print Spooler 运行所需要的一切,以及这些内容又依次需要的一切。 |
| 查询 | 找到的内容 |
|---|---|
privilege:SeTcbPrivilege | 请求以操作系统的一部分身份运行。 |
privilege:SeImpersonatePrivilege !account:localsystem | 在 LocalSystem 之外的账户下运行时,可以代表客户端执行操作。 |
sidtype:unrestricted | 其进程中带有自己的服务 SID,因此权限可以单独指名它。sidtype:restricted 询问的是其进程同时还受写入限制的那些。 |
type:sharedProcess status:running | 与其他服务一起运行在共享的 svchost 内。 |
memory:>200MB | 占用超过 200 MB 的进程。查询询问内存时,会自动读取内存。 |
pid:1000-2000 | 位于进程 ID 在 1000 到 2000 之间的进程中。 |
| 查询 | 找到的内容 |
|---|---|
spool | 单独一个词,在名称、显示名称、账户和启动路径中搜索。 |
name:=wuauserv | 恰好是这个名称,而不是仅仅包含它的内容。 |
name:win* | 以 win 开头的名称,用通配符书写。 |
name:/svc$/ | 以 svc 结尾的名称,用正则表达式书写。 |
description:none | 完全没有描述,大多数驱动程序都是这样。 |
description:? | Windows 无法提供的描述,通常是因为它指向一个不存在的语言文件。 |
peruser:template | Windows 为每个已登录会话复制的按用户模板。 |
由程序本身生成,因此这张表不会与工具接受的内容脱节。没有取值列表的字段接受文本、数字或大小:第三列会说明是哪一种。
+ {{table:query-fields}} +在整台计算机上读取签名需要几秒钟,而内存是一项测量而不是一项设置,所以除非被要求,否则都不会为列表读取它们。提到其中任何一项的查询会自动开启这项读取:你不必在 signed:no 之外再记着加 --signatures。在窗口中,关于签名的查询会说明在签名到达之前答案并不完整,而不是展示一份较短的列表、仿佛那就是答案。
如果条目是依据此会话无法读取的字段来判断的,结果会带有一行说明有多少个,因为这样的结果可能缺少条目,或者包含了不该有的条目。这与整个工具遵守的规则相同:读取失败会在答案中可见,绝不会被吞掉。如果发布者仅由证书声称,也会得到同样的处理:在任何非 trusted 的判定旁边,名称会显示为 not verified,而 publisher: 会在单独一行中把该条目计为不确定,所以 !publisher:microsoft 会保留某个在签名后被人更改过的 Microsoft 文件。
一種語言,既用於視窗的搜尋框,也用於 bws list --query。單獨一個詞會在名稱、顯示名稱、帳戶和啟動路徑中搜尋。加上欄位則縮小範圍。共有 {{field_count}} 個欄位,相同的文字在工具的兩部分中含義相同。
start:auto !status:running
大多數人寫的第一個查詢,也是 services.msc 完全無法回答的查詢。
file:missing
指向磁碟上不存在的可執行檔的項目。通常是解除安裝後遺留了登錄資訊。
signed:no peruser:no
依使用者的服務族會為每個工作階段產生一個副本,讓清單裡充滿近似重複的項目。這個查詢詢問的是其餘的部分。
mismatch:running
組態與狀態不一致:一個被服務管理員設為永不啟動的項目,卻仍在執行。
privilege:SeDebugPrivilege
一種讓處理程序能夠開啟任何其他處理程序的特殊權限。值得知道哪些服務要求了它。
account:?
此工作階段無法讀取其帳戶的項目。這是 services.msc 連問都問不出的問題。
and 關鍵字,因為它不可能有別的含義。status:running status:stopped 表示二者之一,因為勾選兩個篩選項目時寫出的就是這個。對數字的兩個邊界仍然會縮小範圍:pid:>1000 pid:<2000 就是二者之間的範圍。! 表示否定:!status:running。在帶有 setlocal EnableDelayedExpansion 的批次檔中,cmd 會悄無聲息地吃掉這個 !,查詢便在不知不覺中變成了別的意思:在那裡請在引號內寫成 ^!。start:manual,disabled。account:"NT SERVICE\McmSvc"。C:\Windows\System32\svchost.exe,會被當作搜尋內容,而不是被當作名為 C 的欄位。name:spool 比對任何包含它的內容:這是預設行為,因為這是人們對搜尋框的預期。name:=spooler 是完全比對。name:spool* 支援萬用字元 * 和 ?。name:/^Sql.*/ 是規則運算式,在斜線內依規則運算式的寫法撰寫:\?、\\ 和逗號在那裡是什麼意思就是什麼意思。一個永遠不閉合的斜線是錯誤:要搜尋斜線本身,請寫成 \/ 或使用引號。輸錯的值會報錯,而不是傳回空結果。status:runing 會回答 Did you mean running?,並以代碼 2 結束。空清單看起來就像一個答案,而「沒有任何符合」與「你輸錯了」之間的差別,就是一台乾淨的電腦與一次什麼也沒證明的稽核之間的差別。在命令列中,任何不會縮小範圍的查詢同樣會被拒絕,所以指令碼不會因為一個拼寫錯誤而對整台電腦進行操作。
每一個在視窗的搜尋框中和在 bws list --query 之後的效果都一樣,而且每一個在寫到這裡之前都在真實的 Windows 上執行過。能找到什麼取決於電腦:對於關於故障的問題,空結果正是你想要的答案。
| 查詢 | 找到的內容 |
|---|---|
status:stopPending, | 卡在停止或啟動中:管理單元顯示、永遠不會結束的等待。 |
start:auto status:stopped trigger:none | 設為自動啟動、已停止,且不在等待觸發程序:重新啟動之後值得一讀的簡短清單。 |
start:delayed | 自動,比其他自動項目稍晚啟動。 |
start:manual, | 啟動時沒有任何內容會啟動它卻在執行:有東西要求了它、觸發程序啟動了它,或者有人啟動了它。 |
| 查詢 | 找到的內容 |
|---|---|
account:localsystem !publisher:microsoft | 以最強的帳戶 LocalSystem 執行,且來自 Microsoft 沒有簽章的檔案。關於發行者的查詢會自行讀取簽章,所以需要幾秒鐘。 |
!account:localsystem, | 在其他任何帳戶下執行的服務:虛擬帳戶、受管理的帳戶,或某個人自己的帳戶。 |
account:"NT SERVICE" | 服務自己的虛擬帳戶。引號把這些詞放在一起,因為中間有空格。 |
| 查詢 | 找到的內容 |
|---|---|
signed:notSigned, | 沒有簽章,Windows 不信任的憑證鏈,或簽章之後被變更的檔案。 |
signed:trusted !publisher:microsoft | 已簽章、受信任,且不是 Microsoft:其他公司放在這台電腦上的軟體。 |
type:driver start:boot, | 在 Windows 啟動時載入、而 Windows 不信任其簽章的驅動程式。在健康的電腦上應為零。 |
!path:C:\Windows type:ownProcess | 有獨立處理程序、其檔案位於 Windows 資料夾之外的服務。 |
path:\AppData\ | 從某人的使用者設定檔內部啟動:最不應該出現服務的地方。 |
path:\System32\\ type:ownProcess | 空格前的反斜線會讓空格成為詞的一部分,所以當後面還有其他搜尋詞時,以反斜線結尾的路徑要寫兩個反斜線。在查詢末尾,一個就夠了。 |
| 查詢 | 找到的內容 |
|---|---|
trigger:device status:stopped | 等待裝置到達,因此是有原因的已停止。 |
trigger:network | 當要求到達某個網路端點(連接埠、具名管道或 RPC 介面)時啟動。 |
trigger:stop | 觸發程序不僅可以啟動、也可以停止的項目。 |
dependson:Winmgmt | 需要 WMI 才能執行的項目。 |
requiredby:Spooler | Print Spooler 執行所需要的一切,以及這些內容又依次需要的一切。 |
| 查詢 | 找到的內容 |
|---|---|
privilege:SeTcbPrivilege | 要求以作業系統的一部分身分執行。 |
privilege:SeImpersonatePrivilege !account:localsystem | 在 LocalSystem 之外的帳戶下執行時,可以代表用戶端執行動作。 |
sidtype:unrestricted | 其處理程序中帶有自己的服務 SID,因此權限可以單獨指名它。sidtype:restricted 詢問的是其處理程序同時還受寫入限制的那些。 |
type:sharedProcess status:running | 與其他服務一起執行在共用的 svchost 內。 |
memory:>200MB | 佔用超過 200 MB 的處理程序。查詢詢問記憶體時,會自動讀取記憶體。 |
pid:1000-2000 | 位於處理程序 ID 在 1000 到 2000 之間的處理程序中。 |
| 查詢 | 找到的內容 |
|---|---|
spool | 單獨一個詞,在名稱、顯示名稱、帳戶和啟動路徑中搜尋。 |
name:=wuauserv | 恰好是這個名稱,而不是僅僅包含它的內容。 |
name:win* | 以 win 開頭的名稱,用萬用字元撰寫。 |
name:/svc$/ | 以 svc 結尾的名稱,用規則運算式撰寫。 |
description:none | 完全沒有描述,大多數驅動程式都是這樣。 |
description:? | Windows 無法提供的描述,通常是因為它指向一個不存在的語言檔案。 |
peruser:template | Windows 為每個已登入工作階段複製的依使用者範本。 |
由程式本身產生,因此這張表不會與工具接受的內容脫節。沒有值清單的欄位接受文字、數字或大小:第三欄會說明是哪一種。
+ {{table:query-fields}} +在整台電腦上讀取簽章需要幾秒鐘,而記憶體是一項測量而不是一項設定,所以除非被要求,否則都不會為清單讀取它們。提到其中任何一項的查詢會自動開啟這項讀取:你不必在 signed:no 之外再記著加 --signatures。在視窗中,關於簽章的查詢會說明在簽章到達之前答案並不完整,而不是展示一份較短的清單、彷彿那就是答案。
如果項目是依據此工作階段無法讀取的欄位來判斷的,結果會帶有一行說明有多少個,因為這樣的結果可能缺少項目,或者包含了不該有的項目。這與整個工具遵守的規則相同:讀取失敗會在答案中可見,絕不會被吞掉。如果發行者僅由憑證宣稱,也會得到同樣的處理:在任何非 trusted 的判定旁邊,名稱會顯示為 not verified,而 publisher: 會在單獨一行中把該項目計為不確定,所以 !publisher:microsoft 會保留某個在簽章後被人變更過的 Microsoft 檔案。
sc.exe, Get-Service a tohleObojí už je na stroji a obojí zůstane užitečné. Tato stránka je o tom, kde končí - a říká na rovinu, kde jsou pořád lepší odpovědí.
+sc.exeDosáhne téměř na všechno, co správce služeb ví, a nic vám neřekne o tom, jak se ptát. Syntaxe je z devadesátých let - sc config X start= auto, kde mezera za rovnítkem je povinná a její chybějící přítomnost je tichým selháním udělat to, co jste chtěli.
Odpovídá vždy o jedné položce. Neexistuje filtrování, výstup, který skript přečte bez napsání parseru, ani náhled: sc stop buď zabere, nebo vrátí číslo.
Get-Service a rutiny *-ServiceSkutečné objekty, pipeline a povrchní pohled. Ve Windows PowerShellu 5.1, tom, který je součástí Windows, Get-Service neukazuje účet, pod kterým služba běží, ani její popis. PowerShell 7 ukazuje obojí, i cestu ke spuštění, a instaluje se zvlášť.
Stop-Service -Force znamená "i když na tom něco závisí" - zastaví závislé služby a řekne vám to potom, a ne předem.
| Otázka | S tím, co je na stroji | Zde |
|---|---|---|
| Co má běžet a neběží | +Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
+ bws list --query "start:auto !status:running" |
+
| Které služby mají nepodepsaný spustitelný soubor | +Přečíst každou cestu ke spuštění, převést ji, na každé zavolat Get-AuthenticodeSignature - skript, ne příkaz |
+ bws list --query "signed:no" |
+
| Co by zastavení tohoto strhlo s sebou | +sc enumdepend X, potom přečíst seznam a rozhodnout sám |
+ bws stop X --dry-run --dependents, což je plán, který by se spustil |
+
| Co se změnilo od minulého týdne | +Nic, pokud jste si sběrač nenapsali sami | +bws snapshot diff before.json --live |
+
| Kdo změnil typ spouštění a kdy | +Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, potom přečíst zprávu každé události |
+ bws history Spooler, jehož první řádek říká, jak daleko protokol sahá |
+
| Strojově čitelný výstup | +Objekty z PowerShellu, text ze sc.exe |
+ --json u každého příkazu, na standardním výstupu, s varováními na standardním chybovém výstupu |
+
Kde se tento nástroj o službě rozchází se sc.exe, je to zde chyba. Část sady testů spouští obojí na stroji, na kterém běží, a porovnává to položku po položce a rozdíl mezi nimi je to nejužitečnější, co můžete vložit do hlášení.
sc.exe zvládne všechny tři. Tento nástroj účet a cestu ke spuštění ukazuje a ani jedno nemění a akce obnovení čte jen proto, aby varoval, než ukončí proces.sc create a sc delete. Zde ne, záměrně.bws list --json se vrací jako objekty přes ConvertFrom-Json, takže se do pipeline zapojí, místo aby ji nahradil.Nástroj, který odpovídá na co je s tímto strojem špatně, a nástroje, které mění jedno nastavení, nejsou jedno a totéž. Zeptejte se zde, přečtěte si plán zde a k provedení použijte, co chcete - plán vypíše příkazový řádek, který žádá o totéž, a ten řádek je určen ke zkopírování.
+ +sc.exe, Get-Service, dan iniKeduanya sudah ada di mesin, dan keduanya akan tetap berguna. Halaman ini membahas di mana keduanya berhenti - dan menyatakan terus terang di mana keduanya masih jawaban yang lebih baik.
+sc.exeIa dapat menjangkau hampir semua yang diketahui service control manager, dan tidak memberi tahu Anda apa pun tentang cara bertanya. Sintaksnya dari tahun sembilan puluhan - sc config X start= auto, di mana spasi setelah tanda sama dengan wajib dan ketiadaannya adalah kegagalan senyap untuk melakukan yang Anda maksud.
Ia menjawab tentang satu entri sekali waktu. Tidak ada pemfilteran, tidak ada keluaran yang dapat diurai skrip tanpa menulis parser, dan tidak ada pratinjau: sc stop berhasil atau mengembalikan sebuah angka.
Get-Service dan cmdlet *-ServiceObjek yang layak, sebuah pipeline, dan tampilan yang dangkal. Di Windows PowerShell 5.1, yang bawaan Windows, Get-Service tidak menampilkan akun tempat layanan berjalan atau deskripsinya. PowerShell 7 menampilkan keduanya, dan jalur peluncuran juga, dan dipasang terpisah.
Stop-Service -Force berarti "bahkan jika ada yang bergantung padanya" - ia menghentikan layanan dependen, dan memberi tahu Anda sesudahnya, bukan sebelumnya.
| Pertanyaan | Dengan apa yang ada di mesin | Di sini |
|---|---|---|
| Apa yang seharusnya berjalan dan tidak berjalan | +Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
+ bws list --query "start:auto !status:running" |
+
| Layanan mana yang punya berkas eksekusi tak bertanda tangan | +Baca setiap jalur peluncuran, selesaikan, panggil Get-AuthenticodeSignature pada masing-masing - sebuah skrip, bukan perintah |
+ bws list --query "signed:no" |
+
| Apa yang akan ikut jatuh jika ini dihentikan | +sc enumdepend X, lalu baca daftarnya dan putuskan sendiri |
+ bws stop X --dry-run --dependents, yaitu rencana yang akan dijalankan |
+
| Apa yang berubah sejak minggu lalu | +Tidak ada, kecuali Anda menulis pengumpulnya sendiri | +bws snapshot diff before.json --live |
+
| Siapa yang mengubah tipe startup, dan kapan | +Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, lalu baca pesan setiap peristiwa |
+ bws history Spooler, yang baris pertamanya menyatakan seberapa jauh log menjangkau ke belakang |
+
| Keluaran yang dapat dibaca mesin | +Objek dari PowerShell, teks dari sc.exe |
+ --json di setiap perintah, pada keluaran standar, dengan peringatan pada galat standar |
+
Di mana alat ini berbeda dari sc.exe tentang sebuah layanan, itu adalah bug di sini. Sebagian suite pengujian menjalankan keduanya pada mesin tempatnya berada dan membandingkannya entri demi entri, dan selisih antara keduanya adalah hal paling berguna untuk dimasukkan ke dalam laporan masalah.
sc.exe melakukan ketiganya. Alat ini menampilkan akun dan jalur peluncuran dan tidak mengubah keduanya, dan membaca tindakan pemulihan hanya untuk memperingatkan sebelum mengakhiri proses.sc create dan sc delete. Bukan di sini, dengan sengaja.bws list --json kembali sebagai objek melalui ConvertFrom-Json, sehingga ia bergabung dengan pipeline alih-alih menggantikannya.Alat yang menjawab apa yang salah dengan mesin ini dan alat yang mengubah satu pengaturan bukanlah alat yang sama. Ajukan pertanyaan di sini, baca rencananya di sini, dan pakai apa pun yang Anda suka untuk menjalankannya - rencana mencetak baris perintah yang meminta hal yang sama, dan baris itu dimaksudkan untuk disalin.
+ +sc.exe、Get-Service、そしてこれどちらもすでにマシンにあり、どちらも引き続き役に立ちます。このページは、それらがどこで限界になるかについてです。そして、どこでそれらが今も優れた答えなのかを、率直に述べます。
+sc.exeサービス コントロール マネージャーが知っているほとんどすべてに手が届きますが、どう尋ねればいいかは何も教えてくれません。構文は 1990 年代のものです。sc config X start= auto のように、等号の後ろのスペースが必須で、それがないと、意図したことを行わずに黙って失敗します。
一度に 1 つのエントリについてしか答えません。絞り込みはなく、パーサーを書かずにスクリプトが解析できる出力もなく、プレビューもありません。sc stop は、成功するか、数字を返すかのどちらかです。
Get-Service と *-Service コマンドレットきちんとしたオブジェクト、パイプライン、そして浅い視点です。Windows に付属する Windows PowerShell 5.1 の 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 と食い違う場合、それはここのバグです。テストスイートの一部が、実行しているマシンに対して両方を実行し、エントリごとに比較しています。2 つの違いは、課題に貼り付けるものとして最も役に立ちます。
sc.exe は 3 つとも行えます。このツールはアカウントと起動パスを表示しますが、どちらも変更しません。回復のアクションは、プロセスを終了する前に警告するためだけに読み取ります。sc create と sc delete。ここにはありません。意図的です。bws list --json は ConvertFrom-Json を通してオブジェクトとして戻るため、パイプラインを置き換えるのではなく、そこに加わります。このマシンの何がおかしいのかに答えるツールと、1 つの設定を変更するツールは、同じツールではありません。質問はここで行い、プランはここで読み、実行にはお好きなものを使ってください。プランは同じことを要求するコマンドラインを表示します。その行はコピーするためのものです。
+sc.exe, Get-Service, 그리고 이것둘 다 이미 컴퓨터에 있고, 둘 다 계속 쓸모가 있을 것입니다. 이 페이지는 그것들이 어디에서 멈추는지에 대한 것이며, 여전히 더 나은 답인 곳도 솔직하게 말합니다.
+sc.exe서비스 제어 관리자가 아는 거의 모든 것에 닿을 수 있지만, 어떻게 물어야 하는지는 아무것도 알려 주지 않습니다. 구문은 1990년대의 것입니다. sc config X start= auto에서 등호 뒤의 공백은 필수이며, 그것이 없으면 의도한 일을 하지 못한 채 조용히 실패합니다.
한 번에 한 항목에 대해서만 답합니다. 필터링도, 파서를 쓰지 않고 스크립트가 해석할 수 있는 출력도, 미리 보기도 없습니다. sc stop은 성공하거나 숫자를 돌려줍니다.
Get-Service와 *-Service cmdlet제대로 된 개체, 파이프라인, 그리고 얕은 시야입니다. Windows에 포함된 Windows PowerShell 5.1의 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. 여기에는 없으며, 의도한 것입니다.bws list --json은 ConvertFrom-Json을 통해 개체로 돌아오므로, 파이프라인을 대체하는 대신 합류합니다.이 컴퓨터에 무엇이 잘못되었는가에 답하는 도구와 설정 하나를 바꾸는 도구는 같은 도구가 아닙니다. 질문은 여기서 하고, 계획은 여기서 읽고, 실행은 원하는 것으로 하세요. 계획은 같은 일을 요청하는 명령줄을 출력하며, 그 줄은 복사하라고 있는 것입니다.
+sc.exe, Get-Service en ditBeide staan al op de machine, en beide blijven nuttig. Deze pagina gaat over waar ze ophouden - en zegt eerlijk waar ze nog het betere antwoord zijn.
+sc.exeHet kan bijna alles bereiken wat de servicebeheerder weet, en het vertelt u niets over hoe u moet vragen. De syntaxis komt uit de jaren negentig - sc config X start= auto, waar de spatie na het gelijkteken verplicht is en het ontbreken ervan een stille mislukking is om te doen wat u bedoelde.
Het antwoordt over één item tegelijk. Er is geen filter, geen uitvoer die een script kan parsen zonder een parser te schrijven, en geen voorvertoning: sc stop werkt of geeft een getal terug.
Get-Service en de *-Service-cmdletsEchte objecten, een pijplijn, en een oppervlakkig beeld. In Windows PowerShell 5.1, die met Windows meekomt, toont Get-Service niet onder welk account een service draait en ook de beschrijving niet. PowerShell 7 toont beide, en het opstartpad ook, en wordt apart geïnstalleerd.
Stop-Service -Force betekent "ook als er iets van afhangt" - het stopt de afhankelijke services, en het zegt u dat achteraf in plaats van vooraf.
| Vraag | Met wat op de machine staat | Hier |
|---|---|---|
| Wat zou moeten draaien en niet draait | +Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
+ bws list --query "start:auto !status:running" |
+
| Welke services een niet-ondertekend uitvoerbaar bestand hebben | +Elk opstartpad lezen, omzetten, op elk Get-AuthenticodeSignature aanroepen - een script, geen opdracht |
+ bws list --query "signed:no" |
+
| Wat het stoppen hiervan zou meenemen | +sc enumdepend X, dan de lijst lezen en zelf beslissen |
+ bws stop X --dry-run --dependents, dat is het plan dat zou draaien |
+
| Wat er sinds vorige week is veranderd | +Niets, tenzij u zelf de verzamelaar hebt geschreven | +bws snapshot diff before.json --live |
+
| Wie het opstarttype heeft gewijzigd, en wanneer | +Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, dan het bericht van elke gebeurtenis lezen |
+ bws history Spooler, waarvan de eerste regel zegt hoe ver het logboek teruggaat |
+
| Machineleesbare uitvoer | +Objecten van PowerShell, tekst van sc.exe |
+ --json bij elke opdracht, op de standaarduitvoer, met waarschuwingen op de standaardfout |
+
Waar dit hulpmiddel het oneens is met sc.exe over een service, is dat hier een bug. Een deel van de testsuite draait beide op de machine waarop het staat en vergelijkt ze item voor item, en een verschil tussen de twee is het nuttigste wat u in een issue kunt zetten.
sc.exe doet alle drie. Dit hulpmiddel toont het account en het opstartpad en wijzigt geen van beide, en leest herstelacties alleen om te waarschuwen voordat het een proces beëindigt.sc create en sc delete. Niet hier, met opzet.bws list --json komt als objecten terug via ConvertFrom-Json, dus het voegt zich in de pijplijn in plaats van haar te vervangen.Het hulpmiddel dat antwoordt op wat is er mis met deze machine en de hulpmiddelen die één instelling wijzigen zijn niet hetzelfde hulpmiddel. Stel de vraag hier, lees het plan hier, en gebruik wat u wilt om het uit te voeren - het plan drukt de opdrachtregel af die om hetzelfde vraagt, en die regel is bedoeld om te worden gekopieerd.
+ +sc.exe, Get-Service și acestaAmbele sunt deja pe mașină și ambele vor rămâne utile. Această pagină este despre locul în care se opresc - și spune pe față unde rămân răspunsul mai bun.
+sc.exePoate ajunge la aproape tot ce știe managerul de control al serviciilor și nu vă spune nimic despre cum să întrebați. Sintaxa este din anii nouăzeci - sc config X start= auto, unde spațiul de după semnul egal este obligatoriu, iar absența lui este un eșec tăcut de a face ce ați vrut.
Răspunde despre o singură intrare pe rând. Nu există filtrare, nicio ieșire pe care un script s-o poată analiza fără a scrie un parser și nicio previzualizare: sc stop fie funcționează, fie întoarce un număr.
Get-Service și cmdleturile *-ServiceObiecte propriu-zise, un pipeline și o vedere superficială. În Windows PowerShell 5.1, cel care vine cu Windows, Get-Service nu arată contul sub care rulează un serviciu și nici descrierea lui. PowerShell 7 le arată pe amândouă, și calea de lansare, și se instalează separat.
Stop-Service -Force înseamnă "chiar dacă ceva depinde de el" - oprește serviciile dependente și vă spune asta după, nu înainte.
| Întrebare | Cu ce este pe mașină | Aici |
|---|---|---|
| Ce ar trebui să ruleze și nu rulează | +Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
+ bws list --query "start:auto !status:running" |
+
| Ce servicii au un executabil nesemnat | +Citiți fiecare cale de lansare, rezolvați-o, apelați Get-AuthenticodeSignature pe fiecare - un script, nu o comandă |
+ bws list --query "signed:no" |
+
| Ce ar trage după sine oprirea acestuia | +sc enumdepend X, apoi citiți lista și decideți singur |
+ bws stop X --dry-run --dependents, care este planul ce ar rula |
+
| Ce s-a schimbat de săptămâna trecută | +Nimic, decât dacă ați scris singur colectorul | +bws snapshot diff before.json --live |
+
| Cine a schimbat tipul de pornire și când | +Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, apoi citiți mesajul fiecărui eveniment |
+ bws history Spooler, a cărui primă linie spune cât de departe ajunge jurnalul |
+
| Ieșire care poate fi citită de mașină | +Obiecte din PowerShell, text din sc.exe |
+ --json la fiecare comandă, la ieșirea standard, cu avertismentele la eroarea standard |
+
Acolo unde acest instrument nu este de acord cu sc.exe despre un serviciu, este o eroare aici. O parte din suita de teste le rulează pe amândouă pe mașina pe care se află și le compară intrare cu intrare, iar o diferență între cele două este cel mai util lucru pe care îl puteți pune într-o sesizare.
sc.exe le face pe toate trei. Acest instrument arată contul și calea de lansare și nu schimbă niciuna, iar acțiunile de recuperare le citește doar ca să avertizeze înainte să încheie un proces.sc create și sc delete. Nu aici, intenționat.bws list --json se întoarce ca obiecte prin ConvertFrom-Json, deci se alătură pipeline-ului în loc să-l înlocuiască.Instrumentul care răspunde la ce este în neregulă cu această mașină și instrumentele care schimbă o setare nu sunt același instrument. Puneți întrebarea aici, citiți planul aici și folosiți ce doriți pentru a-l executa - planul tipărește linia de comandă care cere același lucru, iar acea linie este făcută pentru a fi copiată.
+ +sc.exe, Get-Service и этоОба уже есть на машине, и оба останутся полезными. Эта страница о том, где они заканчиваются, - и она прямо говорит, где они всё ещё лучший ответ.
+sc.exeОн может дотянуться почти до всего, что знает диспетчер управления службами, и ничего не говорит о том, как спрашивать. Синтаксис из девяностых - sc config X start= auto, где пробел после знака равенства обязателен, а его отсутствие - молчаливый отказ сделать то, что вы имели в виду.
Он отвечает об одной записи за раз. Нет фильтрации, нет вывода, который скрипт мог бы разобрать, не написав разборщик, и нет предпросмотра: sc stop либо срабатывает, либо возвращает число.
Get-Service и командлеты *-ServiceНастоящие объекты, конвейер и поверхностный взгляд. В 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. Не здесь, намеренно.bws list --json возвращается как объекты через ConvertFrom-Json, поэтому он присоединяется к конвейеру, а не заменяет его.Инструмент, отвечающий на вопрос что не так с этой машиной, и инструменты, меняющие одну настройку, - не один и тот же инструмент. Задайте вопрос здесь, прочитайте план здесь и используйте что хотите, чтобы его выполнить - план печатает командную строку, которая просит то же самое, и эта строка предназначена для копирования.
+ +sc.exe, Get-Service ve buİkisi de zaten makinede ve ikisi de yararlı kalacak. Bu sayfa, nerede durduklarıyla ilgili - ve hâlâ daha iyi yanıt olduklarını açıkça söylüyor.
+sc.exeHizmet denetim yöneticisinin bildiği hemen her şeye erişebilir ve nasıl soracağınız konusunda size hiçbir şey söylemez. Sözdizimi doksanlardan kalmadır - sc config X start= auto; burada eşittir işaretinden sonraki boşluk zorunludur ve yokluğu, ne demek istediğinizi yapmamanın sessiz bir başarısızlığıdır.
Aynı anda tek bir öğe hakkında yanıt verir. Filtreleme yok, bir betiğin ayrıştırıcı yazmadan ayrıştırabileceği bir çıktı yok ve önizleme yok: sc stop ya çalışır ya da bir sayı döndürür.
Get-Service ve *-Service cmdlet'leriDüzgün nesneler, bir ardışık düzen ve yüzeysel bir görünüm. Windows'la gelen Windows PowerShell 5.1'de Get-Service bir hizmetin hangi hesapla çalıştığını ya da açıklamasını göstermez. PowerShell 7 ikisini de ve başlatma yolunu da gösterir ve ayrıca kurulur.
Stop-Service -Force "ona bağlı bir şey olsa bile" demektir - bağımlı hizmetleri durdurur ve size bunu önceden değil, sonradan söyler.
| Soru | Makinede olanla | Burada |
|---|---|---|
| Çalışması gereken ve çalışmayan nedir | +Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
+ bws list --query "start:auto !status:running" |
+
| Hangi hizmetlerin imzasız yürütülebilir dosyası var | +Her başlatma yolunu oku, çöz, her birinde Get-AuthenticodeSignature çağır - bir komut değil, bir betik |
+ bws list --query "signed:no" |
+
| Bunu durdurmak neleri indirir | +sc enumdepend X, sonra listeyi oku ve kendin karar ver |
+ bws stop X --dry-run --dependents, yani çalışacak plan |
+
| Geçen haftadan beri ne değişti | +Toplayıcıyı kendiniz yazmadıysanız hiçbir şey | +bws snapshot diff before.json --live |
+
| Başlangıç türünü kim değiştirdi ve ne zaman | +Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, sonra her olayın iletisini oku |
+ bws history Spooler, ilk satırı günlüğün ne kadar geriye gittiğini söyler |
+
| Makine tarafından okunabilir çıktı | +PowerShell'den nesneler, sc.exe'den metin |
+ Her komutta --json, standart çıktıda, uyarılar standart hatada |
+
Bu aracın bir hizmet konusunda sc.exe ile anlaşmazlığa düştüğü yer, burada bir hatadır. Test paketinin bir bölümü ikisini de üzerinde çalıştığı makinede çalıştırır ve öğe öğe karşılaştırır; ikisi arasındaki bir fark, bir sorun kaydına koyabileceğiniz en yararlı şeydir.
sc.exe üçünü de yapar. Bu araç hesabı ve başlatma yolunu gösterir ve ikisini de değiştirmez; kurtarma eylemlerini yalnızca bir süreci sonlandırmadan önce uyarmak için okur.sc create ve sc delete. Burada değil, bilerek.bws list --json, ConvertFrom-Json aracılığıyla nesne olarak geri gelir; yani ardışık düzenin yerini almak yerine ona katılır.Bu makinede ne yanlış sorusunu yanıtlayan araç ile tek bir ayarı değiştiren araçlar aynı araç değildir. Soruyu burada sorun, planı burada okuyun ve onu yürütmek için istediğinizi kullanın - plan, aynı şeyi isteyen komut satırını yazdırır ve o satır kopyalanmak için tasarlanmıştır.
+ +sc.exe, Get-Service і цеОбидва вже є на машині, і обидва лишаться корисними. Ця сторінка про те, де вони закінчуються, - і вона прямо каже, де вони все ще найкраща відповідь.
+sc.exeВін може дотягнутися майже до всього, що знає диспетчер керування службами, і нічого не каже про те, як питати. Синтаксис із дев'яностих - sc config X start= auto, де пробіл після знака рівності обов'язковий, а його відсутність - мовчазна відмова зробити те, що ви мали на увазі.
Він відповідає про один запис за раз. Немає фільтрації, немає виводу, який скрипт міг би розібрати, не написавши розбірник, і немає попереднього перегляду: sc stop або спрацьовує, або повертає число.
Get-Service і командлети *-ServiceСправжні об'єкти, конвеєр і поверхневий погляд. У 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. Не тут, навмисно.bws list --json повертається як об'єкти через ConvertFrom-Json, тож він приєднується до конвеєра, а не замінює його.Інструмент, що відповідає на що не так із цією машиною, й інструменти, що змінюють одне налаштування, - не один і той самий інструмент. Поставте запитання тут, прочитайте план тут і скористайтеся чим завгодно, щоб його виконати - план друкує командний рядок, що просить те саме, і цей рядок призначений для копіювання.
+ +sc.exe, Get-Service, và công cụ nàyCả hai đều đã có sẵn trên máy, và cả hai sẽ vẫn hữu ích. Trang này nói về chỗ chúng dừng lại - và nói thẳng chỗ nào chúng vẫn là câu trả lời tốt hơn.
+sc.exeNó chạm tới hầu hết mọi thứ mà trình quản lý điều khiển dịch vụ biết, và không cho bạn biết gì về cách hỏi. Cú pháp từ thập niên chín mươi - sc config X start= auto, trong đó dấu cách sau dấu bằng là bắt buộc và việc thiếu nó là một thất bại thầm lặng trong việc làm điều bạn muốn.
Nó trả lời về một mục mỗi lần. Không có bộ lọc, không có đầu ra mà script phân tích được nếu không viết một trình phân tích, và không có xem trước: sc stop hoặc là chạy hoặc là trả về một con số.
Get-Service và các cmdlet *-ServiceĐối tượng thực thụ, một pipeline, và một cái nhìn nông. Trong Windows PowerShell 5.1, bản đi kèm Windows, Get-Service không hiển thị tài khoản mà một dịch vụ chạy hay mô tả của nó. PowerShell 7 hiển thị cả hai, cùng cả đường dẫn khởi chạy, và được cài riêng.
Stop-Service -Force nghĩa là "ngay cả khi có thứ phụ thuộc vào nó" - nó dừng các dịch vụ phụ thuộc, và nói với bạn sau đó thay vì trước.
| Câu hỏi | Với những gì có trên máy | Ở đây |
|---|---|---|
| Những gì lẽ ra phải chạy mà không chạy | +Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
+ bws list --query "start:auto !status:running" |
+
| Những dịch vụ nào có tệp thực thi chưa ký | +Đọc từng đường dẫn khởi chạy, phân giải nó, gọi Get-AuthenticodeSignature trên từng cái - một script, không phải một lệnh |
+ bws list --query "signed:no" |
+
| Việc dừng cái này sẽ kéo theo những gì | +sc enumdepend X, rồi đọc danh sách và tự quyết định |
+ bws stop X --dry-run --dependents, chính là kế hoạch sẽ chạy |
+
| Điều gì đã thay đổi từ tuần trước | +Không có gì, trừ khi bạn tự viết bộ thu thập | +bws snapshot diff before.json --live |
+
| Ai đã đổi kiểu khởi động, và khi nào | +Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, rồi đọc thông điệp của từng sự kiện |
+ bws history Spooler, dòng đầu của nó nói nhật ký lùi xa đến đâu |
+
| Đầu ra máy đọc được | +Đối tượng từ PowerShell, văn bản từ sc.exe |
+ --json ở mọi lệnh, trên đầu ra chuẩn, với cảnh báo trên lỗi chuẩn |
+
Chỗ nào công cụ này bất đồng với sc.exe về một dịch vụ, đó là một lỗi ở đây. Một phần bộ kiểm thử chạy cả hai trên máy mà nó đang chạy và so sánh từng mục, và một khác biệt giữa hai bên là điều hữu ích nhất để đưa vào một báo cáo sự cố.
sc.exe làm được cả ba. Công cụ này hiển thị tài khoản và đường dẫn khởi chạy và không thay đổi cái nào, và chỉ đọc hành động khôi phục để cảnh báo trước khi kết thúc một tiến trình.sc create và sc delete. Không có ở đây, có chủ ý.bws list --json trở về dưới dạng đối tượng qua ConvertFrom-Json, nên nó tham gia vào pipeline chứ không thay thế nó.Công cụ trả lời máy này có gì sai và các công cụ thay đổi một thiết lập không phải cùng một công cụ. Hãy đặt câu hỏi ở đây, đọc kế hoạch ở đây, và dùng bất cứ thứ gì bạn thích để thực hiện - kế hoạch in ra dòng lệnh yêu cầu điều tương tự, và dòng đó được tạo ra để sao chép.
+ +sc.exe 和 Get-Service,以及这个工具两者都已经在计算机上,而且都会继续有用。这个页面讲的是它们在哪里到头了,并且坦率地说明它们在哪些地方仍然是更好的答案。
+sc.exe它几乎可以触及服务控制管理器所知的一切,却完全不告诉你该如何提问。语法来自九十年代:sc config X start= auto,等号后面的空格是必需的,缺少它会悄无声息地做不成你想做的事。
它一次只回答一个条目。没有筛选,没有无需自己写解析器就能让脚本解析的输出,也没有预览:sc stop 要么成功,要么返回一个数字。
Get-Service 和 *-Service cmdlet真正的对象、管道,以及浅层的视角。在 Windows 自带的 Windows PowerShell 5.1 中,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。这里没有,这是有意为之。bws list --json 通过 ConvertFrom-Json 以对象的形式回来,所以它是加入管道,而不是取代管道。回答这台计算机出了什么问题的工具,与更改某一项设置的工具,不是同一个工具。在这里提问,在这里阅读计划,然后用你喜欢的任何方式去执行它:计划会打印出请求同一件事的命令行,而这一行就是用来复制的。
+sc.exe 與 Get-Service,以及這個工具兩者都已經在電腦上,而且都會繼續有用。這個頁面講的是它們在哪裡到頭了,並且坦率地說明它們在哪些地方仍然是更好的答案。
+sc.exe它幾乎可以觸及服務控制管理員所知的一切,卻完全不告訴你該如何提問。語法來自九〇年代:sc config X start= auto,等號後面的空格是必需的,缺少它會悄無聲息地做不成你想做的事。
它一次只回答一個項目。沒有篩選,沒有無需自己寫剖析器就能讓指令碼剖析的輸出,也沒有預覽:sc stop 要麼成功,要麼傳回一個數字。
Get-Service 和 *-Service cmdlet真正的物件、管線,以及淺層的視角。在 Windows 內建的 Windows PowerShell 5.1 中,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。這裡沒有,這是有意為之。bws list --json 透過 ConvertFrom-Json 以物件的形式回來,所以它是加入管線,而不是取代管線。回答這台電腦出了什麼問題的工具,與變更某一項設定的工具,不是同一個工具。在這裡提問,在這裡閱讀計畫,然後用你喜歡的任何方式去執行它:計畫會列印出要求同一件事的命令列,而這一行就是用來複製的。
+services.mscSnap-in Služby se od Windows 2000 sotva změnil. Pořád je to nejrychlejší způsob, jak spustit jednu službu, kterou už vidíte na obrazovce, a nejpomalejší způsob, jak odpovědět na jakoukoli otázku o stroji.
+svchost ukončit.| Chcete | V services.msc | Zde |
|---|---|---|
| Najít, co má běžet a neběží | +Seřadit podle typu spouštění, listovat, číst každý řádek | +start:auto !status:running |
+
| Vědět, co zastavení strhne s sebou | +Dialog, který pojmenuje závislé služby až poté, co stisknete Stop | +Plán dřív, než se cokoli stane, s každou závislou službou jako krokem a varováním, když je některá věc, kterou stroj potřebuje | +
| Vědět, co se změnilo od minulého týdne | +Nic | +bws snapshot diff before.json --live |
+
| Vědět, kdo změnil typ spouštění | +Nic | +bws history Spooler, ze systémového protokolu |
+
| Restartovat dvanáct služeb | +Dvanáct kliknutí pravým tlačítkem | +Vybrat dvanáct, jeden plán, jedno provedení, jedna zpráva | +
| Vidět, kdo podepsal spustitelný soubor služby | +Nezobrazuje se | +Sloupec a věc, podle které lze hledat: signed:no |
+
| Cokoli z toho skriptovat | +Nelze skriptovat | +bws s --json a návratovým kódem pro každý konec |
+
Dvě věci, a tvrdit něco jiného by byl druh tvrzení, který tento projekt nedělá.
+To, co nedokáže vůbec, je důvod, proč tohle existuje: položit otázku, nejdřív ukázat plán a říct, co se odchýlilo.
+{{product}} je volný a open source pod GPL-3.0, jeden soubor na každou polovinu nebo instalační program pro celý stroj, a nikdy nekomunikuje s internetem. Čtení nepotřebuje práva správce - změna ano, a říká to místo tichého selhání.
+ +services.mscSnap-in Services nyaris tidak berubah sejak Windows 2000. Ia masih cara tercepat untuk memulai satu layanan yang sudah terlihat di layar, dan cara paling lambat untuk menjawab pertanyaan apa pun tentang mesin.
+svchost mana yang harus diakhiri.| Anda ingin | Di services.msc | Di sini |
|---|---|---|
| Menemukan apa yang seharusnya berjalan dan tidak berjalan | +Urutkan menurut tipe startup, gulir, baca setiap baris | +start:auto !status:running |
+
| Mengetahui apa yang ikut jatuh saat dihentikan | +Dialog yang menyebut layanan dependen setelah Anda menekan Stop | +Rencana sebelum apa pun terjadi, dengan setiap layanan dependen sebagai langkah dan peringatan ketika salah satunya adalah yang dibutuhkan mesin | +
| Mengetahui apa yang berubah sejak minggu lalu | +Tidak ada | +bws snapshot diff before.json --live |
+
| Mengetahui siapa yang mengubah tipe startup | +Tidak ada | +bws history Spooler, dari log System |
+
| Me-restart dua belas layanan | +Dua belas klik kanan | +Pilih dua belas, satu rencana, satu eksekusi, satu laporan | +
| Melihat siapa yang menandatangani berkas eksekusi layanan | +Tidak ditampilkan | +Sebuah kolom, dan sesuatu untuk dicari: signed:no |
+
| Menjadikan semua itu skrip | +Tidak bisa diskrip | +bws, dengan --json dan kode keluar untuk setiap akhiran |
+
Dua hal, dan berpura-pura sebaliknya akan menjadi jenis klaim yang tidak dibuat proyek ini.
+Yang sama sekali tidak bisa dilakukannya adalah alasan ini ada: mengajukan pertanyaan, menunjukkan rencana lebih dulu, dan menyatakan apa yang menyimpang.
+{{product}} bebas dan bersumber terbuka di bawah GPL-3.0, satu berkas per bagian atau installer untuk seluruh mesin, dan tidak pernah berbicara dengan internet. Membaca tidak membutuhkan hak administrator - mengubah membutuhkannya, dan ia menyatakannya alih-alih gagal diam-diam.
+ +services.msc の代替「サービス」スナップインは、Windows 2000 からほとんど変わっていません。すでに画面に見えている 1 つのサービスを開始する最速の方法であり、マシンについてのどんな質問にも答えるのが最も遅い方法です。
+svchost を終了するかの推測以外には。| したいこと | services.msc では | ここでは |
|---|---|---|
| 起動しているはずなのに起動していないものを見つける | +スタートアップの種類で並べ替え、スクロールし、すべての行を読む | +start:auto !status:running |
+
| 停止で何が巻き込まれるかを知る | +Stop を押したあとに、依存するサービスを示すダイアログ | +何かが起きる前のプラン。それぞれの依存サービスがステップになり、その 1 つがマシンに必要なものである場合は警告が出ます | +
| 先週から何が変わったかを知る | +何もありません | +bws snapshot diff before.json --live |
+
| 誰がスタートアップの種類を変更したかを知る | +何もありません | +bws history Spooler、System ログから |
+
| 12 個のサービスを再起動する | +右クリック 12 回 | +12 個を選択し、プラン 1 つ、実行 1 回、レポート 1 つ | +
| サービスの実行ファイルを誰が署名したかを見る | +表示されません | +列として表示でき、検索条件にもできます。signed:no |
+
| それらのどれかをスクリプトにする | +スクリプト化できません | +bws。--json と、終了のたびの終了コード付き |
+
2 つあります。そうでないふりをするのは、このプロジェクトが行わない種類の主張です。
+スナップインに全くできないことが、これが存在する理由です。質問すること、最初にプランを見せること、何がドリフトしたかを伝えること。
+{{product}} は、GPL-3.0 の無料でオープンソースで、片方につき 1 ファイル、またはマシン全体向けのインストーラーがあり、インターネットには一切接続しません。読み取りに管理者権限は不要です。変更には必要で、黙って失敗せずにそのことを伝えます。
+services.msc 대안서비스 스냅인은 Windows 2000 이후 거의 바뀌지 않았습니다. 화면에 이미 보이는 서비스 하나를 시작하는 가장 빠른 방법이면서, 컴퓨터에 대한 어떤 질문에든 답하는 가장 느린 방법입니다.
+svchost를 종료할지 짐작하는 것 외에는요.| 하고 싶은 일 | services.msc에서 | 여기서 |
|---|---|---|
| 실행되어야 하는데 실행 중이 아닌 것 찾기 | +시작 유형으로 정렬하고, 스크롤하고, 모든 행 읽기 | +start:auto !status:running |
+
| 중지하면 무엇이 함께 내려가는지 알기 | +Stop을 누른 뒤에 종속 서비스 이름을 알려 주는 대화 상자 | +아무 일이 일어나기 전의 계획. 각 종속 서비스가 단계로 들어가고, 그중 하나가 컴퓨터에 필요한 것이면 경고가 나옵니다 | +
| 지난주 이후 무엇이 바뀌었는지 알기 | +없음 | +bws snapshot diff before.json --live |
+
| 누가 시작 유형을 바꿨는지 알기 | +없음 | +bws history Spooler, System 로그에서 |
+
| 서비스 열두 개 재시작 | +오른쪽 클릭 열두 번 | +열두 개를 선택하고, 계획 하나, 실행 한 번, 보고서 하나 | +
| 서비스 실행 파일에 누가 서명했는지 보기 | +표시되지 않음 | +열이며 검색 조건이기도 합니다: signed:no |
+
| 이 중 무엇이든 스크립트로 만들기 | +스크립트로 만들 수 없음 | +bws, --json과 모든 종료 방식에 대한 종료 코드와 함께 |
+
두 가지이며, 그렇지 않은 척하는 것은 이 프로젝트가 하지 않는 종류의 주장일 것입니다.
+스냅인이 전혀 하지 못하는 일이 이것이 존재하는 이유입니다. 질문하고, 먼저 계획을 보여 주고, 무엇이 드리프트했는지 알려 주는 것.
+{{product}}는 GPL-3.0의 무료 오픈 소스이며, 반쪽마다 파일 하나 또는 컴퓨터 전체를 위한 설치 프로그램이 있고, 인터넷에 접속하지 않습니다. 읽기에는 관리자 권한이 필요 없습니다. 변경에는 필요하며, 조용히 실패하는 대신 그 사실을 알려 줍니다.
+services.mscDe snap-in Services is sinds Windows 2000 nauwelijks veranderd. Het is nog steeds de snelste manier om één service te starten die u al op het scherm ziet, en de langzaamste manier om een vraag over een machine te beantwoorden.
+svchost u moet beëindigen.| U wilt | In services.msc | Hier |
|---|---|---|
| Vinden wat zou moeten draaien en niet draait | +Sorteren op opstarttype, scrollen, elke rij lezen | +start:auto !status:running |
+
| Weten wat een stop met zich meeneemt | +Een dialoog die afhankelijke services noemt nadat u op Stop drukt | +Een plan voordat er iets gebeurt, met elke afhankelijke service als stap en een waarschuwing wanneer er een iets is wat de machine nodig heeft | +
| Weten wat er sinds vorige week is veranderd | +Niets | +bws snapshot diff before.json --live |
+
| Weten wie een opstarttype heeft gewijzigd | +Niets | +bws history Spooler, uit het systeemlogboek |
+
| Twaalf services herstarten | +Twaalf keer rechtsklikken | +Selecteer er twaalf, één plan, één uitvoering, één rapport | +
| Zien wie een uitvoerbaar bestand van een service heeft ondertekend | +Wordt niet getoond | +Een kolom, en iets om op te zoeken: signed:no |
+
| Er iets van scripten | +Niet scriptbaar | +bws, met --json en een afsluitcode voor elk einde |
+
Twee dingen, en anders doen alsof zou het soort bewering zijn dat dit project niet doet.
+Wat hij helemaal niet kan is de reden dat dit bestaat: een vraag stellen, eerst een plan tonen, en zeggen wat er is afgedreven.
+{{product}} is vrij en open source onder GPL-3.0, één bestand per helft of een installatieprogramma voor de hele machine, en het maakt nooit verbinding met internet. Lezen vraagt geen beheerdersrechten - wijzigen wel, en het zegt dat in plaats van stilletjes te mislukken.
+ +services.mscSnap-in-ul Services abia s-a schimbat din Windows 2000. Este în continuare cea mai rapidă cale de a porni un serviciu pe care îl vedeți deja pe ecran și cea mai lentă cale de a răspunde la orice întrebare despre o mașină.
+svchost să încheiați.| Doriți să | În services.msc | Aici |
|---|---|---|
| Găsiți ce ar trebui să ruleze și nu rulează | +Sortați după tipul de pornire, derulați, citiți fiecare rând | +start:auto !status:running |
+
| Aflați ce trage după sine o oprire | +O casetă de dialog care numește serviciile dependente după ce apăsați Stop | +Un plan înainte să se întâmple ceva, cu fiecare serviciu dependent ca pas și un avertisment când unul este ceva de care mașina are nevoie | +
| Aflați ce s-a schimbat de săptămâna trecută | +Nimic | +bws snapshot diff before.json --live |
+
| Aflați cine a schimbat un tip de pornire | +Nimic | +bws history Spooler, din jurnalul System |
+
| Reporniți douăsprezece servicii | +Douăsprezece clicuri dreapta | +Selectați douăsprezece, un plan, o rulare, un raport | +
| Vedeți cine a semnat executabilul unui serviciu | +Nu este afișat | +O coloană și ceva după care se poate căuta: signed:no |
+
| Automatizați oricare dintre acestea | +Nu se poate automatiza | +bws, cu --json și un cod de ieșire pentru fiecare final |
+
Două lucruri, iar a pretinde altceva ar fi genul de afirmație pe care acest proiect nu o face.
+Ce nu poate face deloc este motivul pentru care acesta există: să pună o întrebare, să arate mai întâi un plan și să spună ce a derivat.
+{{product}} este liber și open source sub GPL-3.0, un fișier pentru fiecare jumătate sau un program de instalare pentru toată mașina, și nu comunică niciodată cu internetul. Citirea nu cere drepturi de administrator - schimbarea cere, și spune asta în loc să eșueze în tăcere.
+ +services.mscОснастка «Службы» почти не менялась со времён Windows 2000. Она по-прежнему самый быстрый способ запустить одну службу, которую вы уже видите на экране, и самый медленный способ ответить на любой вопрос о машине.
+svchost завершить.| Вы хотите | В services.msc | Здесь |
|---|---|---|
| Найти то, что должно работать и не работает | +Сортировать по типу запуска, прокручивать, читать каждую строку | +start:auto !status:running |
+
| Узнать, что унесёт с собой остановка | +Диалог, называющий зависимые службы после того, как вы нажали «Остановить» | +План до того, как что-либо произойдёт, где каждая зависимая служба - шаг, и предупреждение, когда одна из них нужна машине | +
| Узнать, что изменилось с прошлой недели | +Ничего | +bws snapshot diff before.json --live |
+
| Узнать, кто изменил тип запуска | +Ничего | +bws history Spooler, по журналу System |
+
| Перезапустить двенадцать служб | +Двенадцать щелчков правой кнопкой | +Выбрать двенадцать, один план, один запуск, один отчёт | +
| Увидеть, кто подписал исполняемый файл службы | +Не показывается | +Столбец и то, по чему можно искать: signed:no |
+
| Автоматизировать любое из этого | +Не автоматизируется | +bws с --json и кодом завершения для каждого исхода |
+
Две вещи, и утверждать иное было бы утверждением того рода, какие этот проект не делает.
+То, чего она не может вовсе, и есть причина, по которой это существует: задать вопрос, сначала показать план и сказать, что ушло в дрейф.
+{{product}} - свободный и с открытым кодом под GPL-3.0, по одному файлу на каждую половину или установщик на всю машину, и он никогда не обращается к интернету. Для чтения права администратора не нужны, для изменения нужны, и он говорит об этом, а не молча отказывает.
+ +services.msc alternatifiHizmetler ek bileşeni Windows 2000'den beri neredeyse hiç değişmedi. Ekranda zaten gördüğünüz tek bir hizmeti başlatmanın en hızlı yolu olmaya devam ediyor ve bir makine hakkında herhangi bir soruyu yanıtlamanın en yavaş yolu.
+svchost'u sonlandıracağınızı tahmin etmek dışında.| İstediğiniz | services.msc içinde | Burada |
|---|---|---|
| Çalışması gereken ve çalışmayanı bulmak | +Başlangıç türüne göre sırala, kaydır, her satırı oku | +start:auto !status:running |
+
| Bir durdurmanın beraberinde neleri götürdüğünü bilmek | +Durdur'a bastıktan sonra bağımlı hizmetleri adlandıran bir iletişim kutusu | +Bir şey olmadan önce bir plan; her bağımlı hizmet bir adım olarak ve biri makinenin ihtiyaç duyduğu bir şeyse bir uyarıyla | +
| Geçen haftadan beri neyin değiştiğini bilmek | +Hiçbir şey | +bws snapshot diff before.json --live |
+
| Bir başlangıç türünü kimin değiştirdiğini bilmek | +Hiçbir şey | +bws history Spooler, System günlüğünden |
+
| On iki hizmeti yeniden başlatmak | +On iki sağ tık | +On iki tane seç, bir plan, bir çalıştırma, bir rapor | +
| Bir hizmet yürütülebilir dosyasını kimin imzaladığını görmek | +Gösterilmez | +Bir sütun ve üzerinde arama yapılacak bir şey: signed:no |
+
| Bunlardan herhangi birini betiklemek | +Betiklenemez | +bws, --json ve her son için bir çıkış koduyla |
+
İki şey; aksini iddia etmek de bu projenin yapmadığı türden bir iddia olurdu.
+Hiç yapamadığı şey, bunun var olma nedenidir: bir soru sormak, önce bir plan göstermek ve neyin saptığını söylemek.
+{{product}} GPL-3.0 altında özgür ve açık kaynaktır; her yarı için bir dosya ya da tüm makine için bir yükleyici ve internete asla bağlanmaz. Okumak yönetici hakları gerektirmez - değiştirmek gerektirir ve sessizce başarısız olmak yerine bunu söyler.
+ +services.mscОснастка «Служби» майже не змінювалася від часів Windows 2000. Це досі найшвидший спосіб запустити одну службу, яку ви вже бачите на екрані, і найповільніший спосіб відповісти на будь-яке запитання про машину.
+svchost завершити.| Ви хочете | У services.msc | Тут |
|---|---|---|
| Знайти, що має працювати й не працює | +Відсортувати за типом запуску, прокручувати, читати кожен рядок | +start:auto !status:running |
+
| Знати, що забирає з собою зупинка | +Діалог, що називає залежні служби після того, як ви натиснули Stop | +План до того, як щось станеться, з кожною залежною службою як кроком і попередженням, коли одна з них потрібна машині | +
| Знати, що змінилося від минулого тижня | +Нічого | +bws snapshot diff before.json --live |
+
| Знати, хто змінив тип запуску | +Нічого | +bws history Spooler, із журналу System |
+
| Перезапустити дванадцять служб | +Дванадцять клацань правою кнопкою | +Виберіть дванадцять, один план, один запуск, один звіт | +
| Побачити, хто підписав виконуваний файл служби | +Не показується | +Стовпець і те, за чим можна шукати: signed:no |
+
| Автоматизувати будь-що з цього | +Не піддається скриптам | +bws, з --json і кодом завершення для кожного закінчення |
+
Дві речі, а вдавати інакше було б тим видом тверджень, яких цей проєкт не робить.
+Чого вона не вміє взагалі - причина, з якої це існує: поставити запитання, спершу показати план і сказати, що пішло в дрейф.
+{{product}} безкоштовний і з відкритим кодом за GPL-3.0, по одному файлу на половину або інсталятор на всю машину, і він ніколи не звертається до інтернету. Для читання права адміністратора не потрібні - для змін потрібні, і він каже про це, а не мовчки відмовляє.
+ +services.mscSnap-in Services hầu như không thay đổi kể từ Windows 2000. Nó vẫn là cách nhanh nhất để khởi động một dịch vụ bạn đã thấy trên màn hình, và là cách chậm nhất để trả lời bất kỳ câu hỏi nào về một máy.
+svchost nào.| Bạn muốn | Trong services.msc | Ở đây |
|---|---|---|
| Tìm những gì lẽ ra phải chạy mà không chạy | +Sắp xếp theo kiểu khởi động, cuộn, đọc từng dòng | +start:auto !status:running |
+
| Biết việc dừng kéo theo những gì | +Một hộp thoại nêu tên các dịch vụ phụ thuộc sau khi bạn nhấn Stop | +Một kế hoạch trước khi có gì xảy ra, với mỗi dịch vụ phụ thuộc là một bước và một cảnh báo khi một trong số đó là thứ máy cần | +
| Biết điều gì đã thay đổi từ tuần trước | +Không có gì | +bws snapshot diff before.json --live |
+
| Biết ai đã đổi một kiểu khởi động | +Không có gì | +bws history Spooler, từ nhật ký System |
+
| Khởi động lại mười hai dịch vụ | +Mười hai lần nhấp chuột phải | +Chọn mười hai, một kế hoạch, một lần chạy, một báo cáo | +
| Xem ai đã ký tệp thực thi của một dịch vụ | +Không được hiển thị | +Một cột, và một thứ để tìm kiếm: signed:no |
+
| Viết script cho bất kỳ việc nào trong đó | +Không viết script được | +bws, với --json và một mã thoát cho mọi kết cục |
+
Hai điều, và giả vờ khác đi sẽ là kiểu khẳng định mà dự án này không đưa ra.
+Điều nó hoàn toàn không làm được chính là lý do công cụ này tồn tại: đặt câu hỏi, cho xem kế hoạch trước, và nói điều gì đã lệch.
+{{product}} là phần mềm miễn phí, mã nguồn mở theo GPL-3.0, một tệp cho mỗi nửa hoặc một trình cài đặt cho cả máy, và nó không bao giờ nói chuyện với internet. Đọc không cần quyền quản trị - thay đổi thì cần, và nó nói vậy thay vì lặng lẽ thất bại.
+ +services.msc 的替代方案“服务”管理单元自 Windows 2000 以来几乎没有变化。对于屏幕上已经看到的某一个服务,它仍然是启动它最快的方式,而对于关于计算机的任何问题,它又是回答得最慢的方式。
+svchost。| 你想要 | 在 services.msc 中 | 在这里 |
|---|---|---|
| 找出应该运行却没有运行的内容 | +按启动类型排序,滚动,读每一行 | +start:auto !status:running |
+
| 了解停止会带走什么 | +在你按下 Stop 之后才列出依赖项的对话框 | +任何操作发生之前的计划,每个依赖项各为一个步骤,当其中之一是计算机所需要的时会给出警告 | +
| 了解自上周以来发生了什么变化 | +没有 | +bws snapshot diff before.json --live |
+
| 了解是谁更改了启动类型 | +没有 | +bws history Spooler,来自 System 日志 |
+
| 重启十二个服务 | +十二次右键单击 | +选中十二个,一份计划,一次运行,一份报告 | +
| 查看是谁给服务的可执行文件签了名 | +不显示 | +既是一列,也是可以搜索的内容:signed:no |
+
| 把其中任何一项写成脚本 | +无法使用脚本 | +bws,带 --json,并为每种结束方式提供退出代码 |
+
有两点,而假装并非如此,正是这个项目不会做的那类声明。
+它完全做不到的事,才是这个工具存在的原因:提出问题、先展示计划,并告诉你发生了哪些漂移。
+{{product}} 是免费开源的,采用 GPL-3.0,每一半各是一个文件,或为整台计算机提供一个安装程序,并且从不连接互联网。读取不需要管理员权限,更改需要,而且它会说明这一点,而不是悄悄失败。
+services.msc 的替代方案「服務」管理單元自 Windows 2000 以來幾乎沒有變化。對於螢幕上已經看到的某一個服務,它仍然是啟動它最快的方式,而對於關於電腦的任何問題,它又是回答得最慢的方式。
+svchost。| 你想要 | 在 services.msc 中 | 在這裡 |
|---|---|---|
| 找出應該執行卻沒有執行的內容 | +依啟動類型排序,捲動,讀每一列 | +start:auto !status:running |
+
| 了解停止會帶走什麼 | +在你按下 Stop 之後才列出相依項目的對話方塊 | +任何動作發生之前的計畫,每個相依項目各為一個步驟,當其中之一是電腦所需要的時會給出警告 | +
| 了解自上週以來發生了什麼變化 | +沒有 | +bws snapshot diff before.json --live |
+
| 了解是誰變更了啟動類型 | +沒有 | +bws history Spooler,來自 System 記錄檔 |
+
| 重新啟動十二個服務 | +十二次按右鍵 | +選取十二個,一份計畫,一次執行,一份報告 | +
| 查看是誰替服務的可執行檔簽章 | +不顯示 | +既是一欄,也是可以搜尋的內容:signed:no |
+
| 把其中任何一項寫成指令碼 | +無法使用指令碼 | +bws,帶 --json,並為每種結束方式提供結束代碼 |
+
有兩點,而假裝並非如此,正是這個專案不會做的那類聲明。
+它完全做不到的事,才是這個工具存在的原因:提出問題、先展示計畫,並告訴你發生了哪些漂移。
+{{product}} 是免費開放原始碼的,採用 GPL-3.0,每一半各是一個檔案,或為整台電腦提供一個安裝程式,並且從不連上網際網路。讀取不需要系統管理員權限,變更需要,而且它會說明這一點,而不是悄悄失敗。
+Každý jiný nástroj vám řekne, jak stroj vypadá teď. Otázka, kterou správce skutečně má, je co je jinak než ve chvíli, kdy to fungovalo - a na čisté instalaci Windows na ni neodpovídá nic.
+Celý stroj v jednom okamžiku: každá služba a ovladač s typem spouštění, účtem, cestou ke spuštění a argumenty, hashem a podepisovatelem souboru, který spouští, závislostmi a tím, co na něm závisí, triggery, požadovanými privilegii, typem SID a popisovačem zabezpečení - plus název stroje, účet, který snímek pořídil, a zda byl tento účet správce.
+bws snapshot create before.json --note "before the patch"
+ Je to JSON s jedním polem na řádek. To je záměr: snímek lze uložit do repozitáře a git diff ho čte, takže vlastní porovnání nástroje není jediný způsob, jak se na něj podívat.
Ukládejte ho podle toho, čím je. Snímek popisuje celý stroj, až po každou cestu ke spuštění a každý popisovač zabezpečení. Zapisuje se s oprávněními, která jeho adresář už má, a nástroj nic nezužuje - adresář, který mohou číst jiní lidé, je tedy takový, ve kterém mohou přečíst to všechno.
+$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ Okno dělá totéž v části Audit.... Take snapshot... zapíše týž soubor, s poznámkou, pokud ji napíšete, a Compare with this machine... nebo Compare two snapshots... místo seznamu ukáže, co se změnilo, jeden řádek na pole, se vším, co činí porovnání méně než přesným, uvedeným nad tabulkou. Show ho zúží na rozdíly nebo na jedno pole a Export... ho zapíše do souboru CSV.
+--exit-code skončí kódem 5, když se konfigurace liší - položka přidána nebo odebrána, nebo nastavená jinak. Služba, která se jen sama zastavila nebo spustila, se ohlásí a nepočítá se, a nepočítají se ani kopie pro jednotlivé uživatele, které Windows vytváří pro každou přihlášenou relaci: ty se vynechají a spočítají. Není to selhání - drift je to, co tento nástroj má nacházet, a jeho nalezení není selhání - a proto má vlastní číslo, místo aby si půjčoval to, které znamená, že se něco pokazilo.
# den, kdy stroj jde do provozu
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# každou noc z naplánované úlohy
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - žádný drift konfigurace
+# 5 - konfigurace se odchýlila a drift.json říká co
+# 3 - proběhlo to a nešlo přečíst všechno, takže odpověď je částečná
+ To je celý mechanismus: výchozí stav pořízený, když byl stroj prokazatelně v pořádku, a otázka kladená každou noc. První noc, kdy odpoví 5, se to někdo dozví hned první noc, a ne ráno, kdy se něco rozbije.
Setiap alat lain memberi tahu Anda seperti apa mesin itu sekarang. Pertanyaan yang sebenarnya dimiliki administrator adalah apa yang berbeda dari saat semuanya berfungsi - dan tidak ada apa pun pada Windows standar yang menjawabnya.
+Seluruh mesin pada satu saat: setiap layanan dan driver, dengan tipe startup, akun, jalur peluncuran dan argumen, hash dan penandatangan berkas yang dijalankannya, dependensinya dan apa yang bergantung padanya, pemicunya, hak istimewa yang dibutuhkan, tipe SID, dan deskriptor keamanannya - ditambah nama mesin, akun yang mengambilnya, dan apakah akun itu administrator.
+bws snapshot create before.json --note "before the patch"
+ Berupa JSON dengan satu bidang per baris. Itu disengaja: snapshot bisa masuk ke repositori dan git diff membacanya, sehingga perbandingan bawaan alat ini bukan satu-satunya cara untuk melihatnya.
Simpan sesuai dengan apa adanya. Snapshot menggambarkan seluruh mesin, sampai setiap jalur peluncuran dan deskriptor keamanan. Ia ditulis dengan izin apa pun yang sudah dimiliki direktorinya, dan alat ini tidak mempersempit apa pun - sehingga direktori yang bisa dibaca orang lain adalah direktori tempat mereka bisa membaca semua itu.
+$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ Jendela melakukan hal yang sama di bawah Audit.... Take snapshot... menulis berkas yang sama, dengan catatan jika Anda mengetiknya, dan Compare with this machine... atau Compare two snapshots... menampilkan apa yang berubah sebagai ganti daftar, satu baris per bidang, dengan segala sesuatu yang membuat perbandingan kurang tepat dinyatakan di atas tabel. Show mempersempitnya ke perbedaan atau ke satu bidang, dan Export... menulisnya ke berkas CSV.
+--exit-code berakhir dengan 5 ketika konfigurasi berbeda - sebuah entri ditambah atau dihapus, atau satu yang diatur berbeda. Layanan yang hanya berhenti atau mulai sendiri dilaporkan dan tidak dihitung, begitu juga salinan per pengguna yang dibuat Windows untuk setiap sesi yang masuk: itu dikecualikan dan dihitung. Bukan kegagalan - penyimpangan adalah apa yang ingin ditemukan alat ini, dan menemukannya bukanlah kegagalan - itulah sebabnya ia punya nomor sendiri alih-alih meminjam nomor yang berarti ada yang salah.
# 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
+ Itulah seluruh mekanismenya: acuan dasar yang diambil saat mesin diketahui baik, dan pertanyaan yang diajukan setiap malam. Pada malam pertama ia menjawab 5, seseorang tahu pada malam pertama itu, bukan pada pagi saat sesuatu rusak.
ほかのどのツールも、マシンが今どう見えるかを教えてくれます。管理者が実際に抱えている質問は動いていたときと何が違うかであり、標準の Windows にはそれに答えるものが何もありません。
+ある時点のマシン全体です。すべてのサービスとドライバーについて、スタートアップの種類、アカウント、起動パスと引数、実行するファイルのハッシュと署名者、依存関係と依存されている関係、トリガー、必要な特権、SID の種類、セキュリティ記述子が含まれます。さらに、マシンの名前、取得したアカウント、そしてそのアカウントが管理者だったかどうかも含まれます。
+bws snapshot create before.json --note "before the patch"
+ 1 行に 1 フィールドの JSON です。これは意図的なものです。スナップショットをリポジトリに入れて git diff で読めるので、ツール自身の比較だけが見る方法ではなくなります。
それにふさわしい扱いで保管してください。スナップショットは、すべての起動パスとセキュリティ記述子に至るまで、マシン全体を記述しています。保存先ディレクトリがすでに持っているアクセス許可のまま書き込まれ、ツールは何も絞り込みません。そのため、ほかの人が読めるディレクトリでは、その人たちがそのすべてを読めます。
+$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ ウィンドウでも Audit... から同じことができます。Take snapshot... は同じファイルを書き込み、入力すればメモも付きます。Compare with this machine... または Compare two snapshots... は、一覧の代わりに何が変わったかをフィールドごとに 1 行で表示し、比較が完全に正確ではなくなる事情はすべて表の上に書かれます。Show は差分または 1 つのフィールドに絞り込み、Export... は CSV ファイルに書き出します。
+--exit-code は、構成が異なる場合に 5 で終了します。エントリが追加または削除された場合、または設定が変わった場合です。単に自力で停止または開始したサービスは報告されますが、数えません。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 - 実行されたが、すべてを読み取れなかった。そのため答えは部分的
+ これが仕組みのすべてです。マシンが正常だとわかっているときに取ったベースラインと、毎晩尋ねる質問です。初日の夜に 5 が返れば、何かが壊れた朝ではなく、その初日の夜に誰かが気づきます。
다른 모든 도구는 컴퓨터가 지금 어떻게 보이는지 알려 줍니다. 관리자가 실제로 가진 질문은 잘 동작하던 때와 무엇이 다른가이며, 기본 Windows에는 이에 답하는 것이 없습니다.
+한 시점의 컴퓨터 전체입니다. 모든 서비스와 드라이버의 시작 유형, 계정, 시작 경로와 인수, 실행하는 파일의 해시와 서명자, 종속성과 그것에 종속된 것, 트리거, 필요한 권한, SID 유형, 보안 설명자가 들어 있으며, 컴퓨터 이름, 스냅샷을 만든 계정, 그리고 그 계정이 관리자였는지 여부도 들어 있습니다.
+bws snapshot create before.json --note "before the patch"
+ 한 줄에 필드 하나인 JSON입니다. 일부러 그렇게 했습니다. 스냅샷을 저장소에 넣을 수 있고 git diff가 읽으므로, 도구 자체의 비교가 스냅샷을 보는 유일한 방법이 아니게 됩니다.
있는 그대로의 대접에 맞게 보관하세요. 스냅샷은 모든 시작 경로와 보안 설명자까지 컴퓨터 전체를 설명합니다. 그 디렉터리가 이미 가진 권한 그대로 기록되고 도구는 아무것도 좁히지 않으므로, 다른 사람이 읽을 수 있는 디렉터리라면 그 사람들은 그 모든 것을 읽을 수 있습니다.
+$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ 창도 Audit... 아래에서 같은 일을 합니다. Take snapshot...은 같은 파일을 쓰며, 입력하면 메모도 함께 남깁니다. Compare with this machine... 또는 Compare two snapshots...는 목록 대신 무엇이 바뀌었는지를 필드당 한 행으로 보여 주며, 비교를 덜 정확하게 만드는 모든 사항을 표 위에 알려 줍니다. Show는 차이만 또는 필드 하나로 좁히고, Export...는 CSV 파일로 씁니다.
+--exit-code는 구성이 다르면 5로 끝납니다. 항목이 추가되거나 제거되었거나, 하나가 다르게 설정된 경우입니다. 스스로 중지되거나 시작된 서비스는 보고되지만 세지 않으며, 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 - 실행되었지만 모든 것을 읽지 못했으므로 답이 부분적임
+ 이것이 메커니즘의 전부입니다. 컴퓨터가 정상이라고 알려졌을 때 만든 기준선과, 매일 밤 하는 질문입니다. 첫날 밤에 5라고 답하면, 무언가 망가진 아침이 아니라 바로 그 첫날 밤에 누군가 알게 됩니다.
Elk ander hulpmiddel vertelt hoe een machine er nu uitziet. De vraag die een beheerder echt heeft is wat is anders dan toen het werkte - en niets op een gewone Windows beantwoordt die.
+De hele machine op één moment: elke service en elk stuurprogramma, met opstarttype, account, opstartpad en argumenten, de hash en de ondertekenaar van het bestand dat het uitvoert, de afhankelijkheden en wat ervan afhangt, de triggers, de vereiste bevoegdheden, het SID-type en de beveiligingsdescriptor - plus de naam van de machine, het account dat hem heeft gemaakt en of dat account een beheerder was.
+bws snapshot create before.json --note "before the patch"
+ Het is JSON met één veld per regel. Dat is bewust: een momentopname kan in een repository en git diff leest hem, dus de eigen vergelijking van het hulpmiddel is niet de enige manier om er een te bekijken.
Archiveer het als wat het is. Een momentopname beschrijft de hele machine, tot elk opstartpad en elke beveiligingsdescriptor toe. Hij wordt geschreven met de rechten die de map al heeft, en het hulpmiddel beperkt niets - een map die anderen kunnen lezen is dus een map waarin ze dat alles kunnen lezen.
+$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ Het venster doet hetzelfde onder Audit.... Take snapshot... schrijft hetzelfde bestand, met een notitie als u er een typt, en Compare with this machine... of Compare two snapshots... toont in plaats van de lijst wat er is veranderd, één rij per veld, met alles wat de vergelijking minder dan exact maakt boven de tabel gezegd. Show beperkt het tot de verschillen of tot één veld, en Export... schrijft het naar een CSV-bestand.
+--exit-code eindigt met 5 wanneer de configuratie verschilt - een item toegevoegd of verwijderd, of een anders ingesteld item. Een service die alleen uit zichzelf stopte of startte wordt gemeld en telt niet mee, en de kopieën per gebruiker die Windows voor elke aangemelde sessie maakt ook niet: die blijven weg en worden geteld. Geen mislukking - drift is waarvoor dit hulpmiddel is gemaakt, en het vinden ervan is geen mislukking - en daarom heeft het een eigen nummer in plaats van het nummer te lenen dat betekent dat er iets misging.
# de dag dat de machine in gebruik gaat
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# elke nacht, vanuit een geplande taak
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - geen configuratiedrift
+# 5 - de configuratie is afgedreven, en drift.json zegt wat
+# 3 - het draaide en kon niet alles lezen, dus het antwoord is gedeeltelijk
+ Dat is het hele mechanisme: een basislijn gemaakt toen de machine bewezen goed was, en elke nacht een vraag. De eerste nacht dat het 5 antwoordt, komt iemand het die nacht te weten en niet de ochtend dat iets kapotgaat.
Orice alt instrument vă spune cum arată o mașină acum. Întrebarea pe care o are de fapt un administrator este ce este diferit față de când funcționa - iar pe un Windows obișnuit nimic nu o răspunde.
+Toată mașina la un moment dat: fiecare serviciu și driver, cu tipul de pornire, contul, calea de lansare și argumentele, hash-ul și semnatarul fișierului pe care îl rulează, dependențele și ce depinde de el, declanșatoarele, privilegiile necesare, tipul SID și descriptorul de securitate - plus numele mașinii, contul care l-a făcut și dacă acel cont era administrator.
+bws snapshot create before.json --note "before the patch"
+ Este JSON cu un câmp pe rând. Este deliberat: un instantaneu poate intra într-un depozit și git diff îl citește, deci comparația proprie a instrumentului nu este singura cale de a privi unul.
Arhivați-l ca ceea ce este. Un instantaneu descrie toată mașina, până la fiecare cale de lansare și fiecare descriptor de securitate. Este scris cu permisiunile pe care directorul său le are deja, iar instrumentul nu restrânge nimic - deci un director pe care îl pot citi alte persoane este unul în care ele pot citi toate acestea.
+$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ Fereastra face același lucru la Audit.... Take snapshot... scrie același fișier, cu o notă dacă tastați una, iar Compare with this machine... sau Compare two snapshots... arată ce s-a schimbat în locul listei, un rând pe câmp, cu tot ce face comparația mai puțin decât exactă spus deasupra tabelului. Show o restrânge la diferențe sau la un singur câmp, iar Export... o scrie într-un fișier CSV.
+--exit-code se încheie cu 5 când configurația diferă - o intrare adăugată sau eliminată ori una configurată altfel. Un serviciu care doar s-a oprit sau a pornit singur este raportat și nu contează, iar nici copiile pe utilizator pe care Windows le face pentru fiecare sesiune autentificată nu contează: acestea sunt omise și numărate. Nu este un eșec - deriva este ceea ce acest instrument există să găsească, iar găsirea ei nu este un eșec - de aceea are un număr propriu, în loc să-l împrumute pe cel care înseamnă că ceva a mers prost.
# ziua în care mașina intră în serviciu
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# în fiecare noapte, dintr-o sarcină programată
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - nicio derivă de configurație
+# 5 - configurația a derivat, iar drift.json spune ce
+# 3 - a rulat și n-a putut citi totul, deci răspunsul este parțial
+ Acesta este întregul mecanism: o stare de referință luată când mașina era bună și o întrebare pusă în fiecare noapte. În prima noapte în care răspunde 5, cineva află chiar în acea noapte, și nu în dimineața în care se strică ceva.
Любой другой инструмент говорит, как машина выглядит сейчас. Вопрос, который на самом деле стоит перед администратором, - что отличается от того, как было, когда всё работало, - и на обычной Windows на него не отвечает ничто.
+Вся машина в один момент: каждая служба и драйвер с типом запуска, учётной записью, путём запуска и аргументами, хешем и подписантом запускаемого файла, зависимостями и тем, что зависит от неё, триггерами, требуемыми привилегиями, типом SID и дескриптором безопасности, а также имя машины, учётная запись, сделавшая снимок, и была ли эта учётная запись администратором.
+bws snapshot create before.json --note "before the patch"
+ Это JSON с одним полем на строку. Это намеренно: снимок помещается в репозиторий, и git diff его читает, так что собственное сравнение инструмента - не единственный способ его просмотреть.
Храните его как то, что он есть. Снимок описывает всю машину, вплоть до каждого пути запуска и каждого дескриптора безопасности. Он записывается с теми правами, что уже есть у его каталога, и инструмент ничего не сужает - поэтому каталог, который могут читать другие люди, это каталог, где они могут прочитать всё это.
+$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ Окно делает то же самое в разделе Audit.... Take snapshot... пишет тот же файл, с примечанием, если вы его наберёте, а Compare with this machine... или Compare two snapshots... показывает вместо списка, что изменилось, одной строкой на поле, со всем, что делает сравнение менее точным, сказанным над таблицей. Show сужает его до различий или до одного поля, а Export... записывает его в файл CSV.
+--exit-code завершается кодом 5, когда конфигурация отличается: запись добавлена или удалена, или одна настроена иначе. Служба, которая лишь сама остановилась или запустилась, сообщается и не считается, как и копии для каждого пользователя, которые 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 - выполнилось и не смогло прочитать всё, поэтому ответ частичный
+ Вот и весь механизм: эталонное состояние, снятое, когда было известно, что машина в порядке, и вопрос, задаваемый каждую ночь. В первую же ночь, когда он ответит 5, кто-то узнает об этом в первую же ночь, а не утром, когда что-то сломается.
Diğer her araç size bir makinenin şimdi nasıl göründüğünü söyler. Bir yöneticinin asıl sorusu çalışırken olandan ne farklı sorusudur - ve düz bir Windows'ta bunu yanıtlayan hiçbir şey yoktur.
+Tek bir andaki tüm makine: her hizmet ve sürücü; başlangıç türü, hesap, başlatma yolu ve bağımsız değişkenleri, çalıştırdığı dosyanın karması ve imzalayanı, bağımlılıkları ve ona bağlı olanlar, tetikleyicileri, gereken ayrıcalıkları, SID türü ve güvenlik tanımlayıcısıyla birlikte - artı makinenin adı, onu alan hesap ve o hesabın yönetici olup olmadığı.
+bws snapshot create before.json --note "before the patch"
+ Satır başına bir alan içeren bir JSON'dur. Bu bilinçlidir: bir anlık görüntü bir depoya girer ve git diff onu okur; yani aracın kendi karşılaştırması, bir tanesine bakmanın tek yolu değildir.
Onu olduğu şey olarak dosyalayın. Bir anlık görüntü, her başlatma yoluna ve her güvenlik tanımlayıcısına kadar tüm makineyi anlatır. Dizininin zaten sahip olduğu izinlerle yazılır ve araç hiçbir şeyi daraltmaz - yani başkalarının okuyabildiği bir dizin, bunların hepsini okuyabilecekleri bir dizindir.
+$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ Pencere aynısını Audit... altında yapar. Take snapshot... aynı dosyayı yazar, bir not yazarsanız onunla birlikte; Compare with this machine... ya da Compare two snapshots... ise listenin yerine neyin değiştiğini gösterir, alan başına bir satır, karşılaştırmayı tam olmaktan çıkaran her şey tablonun üstünde söylenmiş olarak. Show bunu farklılıklara ya da tek bir alana daraltır ve Export... onu bir CSV dosyasına yazar.
+--exit-code, yapılandırma farklı olduğunda 5 ile biter - eklenmiş ya da kaldırılmış bir öğe veya farklı kurulmuş biri. Yalnızca kendiliğinden duran ya da başlayan bir hizmet bildirilir ve sayılmaz; Windows'un oturum açmış her oturum için yaptığı kullanıcı başına kopyalar da sayılmaz: onlar dışarıda bırakılır ve sayılır. Bir başarısızlık değil - sapma bu aracın bulmak için var olduğu şeydir ve onu bulmak bir başarısızlık değildir - bu yüzden bir şeyin ters gittiğini anlatan numarayı ödünç almak yerine kendi numarası vardır.
# makinenin hizmete girdiği gün
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# her gece, zamanlanmış bir görevden
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - yapılandırma sapması yok
+# 5 - yapılandırma saptı ve drift.json neyin olduğunu söyler
+# 3 - çalıştı ve her şeyi okuyamadı, yani yanıt kısmi
+ Mekanizmanın tamamı bu: makine iyi olduğu bilindiğinde alınmış bir temel durum ve her gece sorulan bir soru. 5 yanıtını verdiği ilk gece, birisi bir şeylerin bozulduğu sabah değil, ilk gece öğrenir.
Кожен інший інструмент каже, як машина виглядає зараз. Запитання, яке насправді має адміністратор, - що відрізняється від того, коли все працювало - і ніщо в стандартній Windows на нього не відповідає.
+Вся машина в один момент: кожна служба й драйвер із типом запуску, обліковим записом, шляхом запуску й аргументами, хешем і підписантом файлу, який він запускає, його залежностями та тим, що залежить від нього, його тригерами, потрібними привілеями, типом SID і дескриптором безпеки - плюс ім'я машини, обліковий запис, що його зробив, і чи був цей обліковий запис адміністратором.
+bws snapshot create before.json --note "before the patch"
+ Це JSON з одним полем на рядок. Це зроблено навмисно: знімок потрапляє в репозиторій, і git diff його читає, тож власне порівняння інструмента - не єдиний спосіб на нього подивитися.
Зберігайте його так, як він того вартий. Знімок описує всю машину, до кожного шляху запуску й дескриптора безпеки. Він записується з тими правами, які вже має його каталог, і інструмент нічого не звужує - тож каталог, який можуть читати інші люди, дає їм змогу прочитати все це.
+$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ Вікно робить те саме в розділі Audit.... Take snapshot... записує той самий файл, із нотаткою, якщо ви її введете, а Compare with this machine... або Compare two snapshots... показує, що змінилося, замість списку, по одному рядку на поле, з усім, що робить порівняння менш ніж точним, сказаним над таблицею. Show звужує його до відмінностей або до одного поля, а Export... записує його у файл CSV.
+--exit-code завершується кодом 5, коли конфігурація відрізняється: запис додано чи видалено, або один налаштовано інакше. Служба, що просто сама зупинилася чи запустилася, повідомляється й не враховується, так само як і копії для кожного користувача, які 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 - виконалося й не змогло прочитати все, тож відповідь часткова
+ Це весь механізм: еталонний стан, знятий, коли машина була відома як справна, і запитання, яке ставлять щоночі. Якщо першої ночі відповідь 5, хтось дізнається про це першої ж ночі, а не вранці, коли щось зламається.
Mọi công cụ khác cho bạn biết một máy trông thế nào bây giờ. Câu hỏi mà một quản trị viên thực sự có là điều gì khác so với lúc nó còn hoạt động - và không có gì trên một Windows nguyên bản trả lời được.
+Cả máy tại một thời điểm: mọi dịch vụ và trình điều khiển, với kiểu khởi động, tài khoản, đường dẫn khởi chạy và đối số, mã băm và người ký của tệp mà nó chạy, các phụ thuộc và những gì phụ thuộc vào nó, trình kích hoạt, đặc quyền yêu cầu, kiểu SID và bộ mô tả bảo mật - cộng với tên máy, tài khoản đã chụp nó, và tài khoản đó có phải quản trị viên hay không.
+bws snapshot create before.json --note "before the patch"
+ Nó là JSON với một trường mỗi dòng. Đó là cố ý: một bản chụp có thể đưa vào kho mã và git diff đọc được nó, nên phép so sánh riêng của công cụ không phải là cách duy nhất để xem một bản.
Hãy lưu trữ nó đúng với bản chất của nó. Một bản chụp mô tả cả máy, đến từng đường dẫn khởi chạy và bộ mô tả bảo mật. Nó được ghi với quyền mà thư mục của nó vốn có, và công cụ không thu hẹp gì - nên một thư mục mà người khác đọc được là thư mục mà họ đọc được tất cả những điều đó.
+$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ Cửa sổ làm điều tương tự dưới Audit.... Take snapshot... ghi cùng một tệp, kèm ghi chú nếu bạn gõ, và Compare with this machine... hoặc Compare two snapshots... hiển thị điều gì đã thay đổi thay cho danh sách, mỗi trường một hàng, với mọi điều khiến phép so sánh kém chính xác được nêu phía trên bảng. Show thu hẹp nó vào các khác biệt hoặc một trường, và Export... ghi nó ra tệp CSV.
+--exit-code kết thúc bằng 5 khi cấu hình khác nhau - một mục được thêm hoặc bị xóa, hoặc một mục được thiết lập khác. Một dịch vụ chỉ tự dừng hoặc tự khởi động thì được báo cáo và không tính, và các bản sao theo người dùng mà Windows tạo cho mỗi phiên đã đăng nhập cũng không tính: chúng bị loại ra và được đếm. Không phải một thất bại - sai lệch là điều công cụ này tồn tại để tìm, và tìm thấy nó không phải là một thất bại - nên nó có con số riêng thay vì mượn con số có nghĩa là có gì đó hỏng.
# ngày máy bắt đầu đưa vào hoạt động
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# mỗi đêm, từ một tác vụ theo lịch
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - không có sai lệch cấu hình
+# 5 - cấu hình đã lệch, và drift.json nói là gì
+# 3 - đã chạy và không đọc được hết, nên câu trả lời chỉ là một phần
+ Đó là toàn bộ cơ chế: một mốc chuẩn được lấy khi máy được biết là tốt, và một câu hỏi được đặt ra mỗi đêm. Đêm đầu tiên nó trả lời 5, ai đó biết ngay đêm đầu tiên, chứ không phải vào buổi sáng khi có gì đó hỏng.
其他所有工具都只告诉你计算机现在是什么样。管理员真正的问题是它和正常工作时相比有什么不同,而标准的 Windows 里没有任何东西能回答这个问题。
+某一时刻的整台计算机:每个服务和驱动程序,包括它的启动类型、账户、启动路径和参数、其运行文件的哈希和签名者、它的依赖项以及依赖它的内容、它的触发器、所需特权、SID 类型和安全描述符,外加计算机名称、生成它的账户,以及该账户是否是管理员。
+bws snapshot create before.json --note "before the patch"
+ 它是每行一个字段的 JSON。这是有意为之:这意味着快照可以放进代码仓库,由 git diff 读取,所以工具自带的比较并不是查看快照的唯一方式。
请按它本来的性质来存放。快照描述了整台计算机,细到每个启动路径和安全描述符。它以其所在目录已有的权限写入,而工具不会收紧任何权限,所以一个其他人可以读取的目录,意味着他们能读到全部这些内容。
+$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ 窗口在 Audit... 下做同样的事。Take snapshot... 写入同一种文件,如果你输入了备注也会一并写入,而 Compare with this machine... 或 Compare two snapshots... 会取代列表,按每个字段一行显示发生了哪些变化,所有使比较不那么精确的情况都会写在表格上方。Show 把它缩小到只显示差异或某一个字段,Export... 则把它写入 CSV 文件。
+--exit-code 在配置不同时以 5 结束:条目被添加或删除,或者某个条目的设置不同。只是自行停止或启动的服务会被报告,但不计入,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 - 已运行但无法读取全部内容,因此答案是部分的
+ 这就是整个机制:在计算机已知良好时生成的基线,以及每晚提出的一个问题。第一晚的回答若是 5,就会在第一晚而不是在某样东西坏掉的那个早晨被人发现。
其他所有工具都只告訴你電腦現在是什麼樣。系統管理員真正的問題是它和正常運作時相比有什麼不同,而標準的 Windows 裡沒有任何東西能回答這個問題。
+某一時刻的整台電腦:每個服務和驅動程式,包括它的啟動類型、帳戶、啟動路徑和參數、其執行檔案的雜湊和簽署者、它的相依項目以及依賴它的內容、它的觸發程序、所需特殊權限、SID 類型和安全性描述元,外加電腦名稱、產生它的帳戶,以及該帳戶是否是系統管理員。
+bws snapshot create before.json --note "before the patch"
+ 它是每行一個欄位的 JSON。這是有意為之:這意味著快照可以放進程式碼存放庫,由 git diff 讀取,所以工具自帶的比較並不是檢視快照的唯一方式。
請按它本來的性質來存放。快照描述了整台電腦,細到每個啟動路徑和安全性描述元。它以其所在目錄已有的權限寫入,而工具不會收緊任何權限,所以一個其他人可以讀取的目錄,意味著他們能讀到全部這些內容。
+$ bws snapshot diff before.json --live --exit-code
+Changed (2):
+ Spooler Print Spooler
+ startType: Manual -> Automatic
+ status: Stopped -> Running (running state, not configuration)
+ wlidsvc Microsoft Account Sign-in Assistant
+ status: Stopped -> Running (running state, not configuration)
+
+Added 0, removed 0, changed 2. Fields differing: 1 in configuration, 2 in running state.
+ 視窗在 Audit... 下做同樣的事。Take snapshot... 寫入同一種檔案,如果你輸入了備註也會一併寫入,而 Compare with this machine... 或 Compare two snapshots... 會取代清單,按每個欄位一行顯示發生了哪些變化,所有使比較不那麼精確的情況都會寫在表格上方。Show 把它縮小到只顯示差異或某一個欄位,Export... 則把它寫入 CSV 檔案。
+--exit-code 在組態不同時以 5 結束:項目被新增或刪除,或者某個項目的設定不同。只是自行停止或啟動的服務會被回報,但不計入,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 - 已執行但無法讀取全部內容,因此答案是部分的
+ 這就是整個機制:在電腦已知良好時產生的基準,以及每晚提出的一個問題。第一晚的回答若是 5,就會在第一晚而不是在某樣東西壞掉的那個早晨被人發現。
Snap-in ukazuje Stopping a nehne se. Obvyklá odpověď je Správce úloh, tip, v jakém svchost.exe žije, a Ukončit úlohu - což ukončí i každou další službu v tom procesu, aniž by vám řeklo, které to byly.
svchost.exe. Ukončení tohoto procesu ukončí všechny, což je přesně to, co dělá Správce úloh, aniž by je pojmenoval.Zeptejte se, co by ukončení vzalo s sebou. Nic se neděje, dokud nevypustíte --dry-run.
$ bws kill Spooler --dry-run
+ Náhled pojmenuje proces číslem, pojmenuje každou další službu, která v něm žije, a ukáže dva kroky místo jednoho: požádat službu o zastavení a jen když to nezabere ukončit proces. Služba, která se zastaví sama, se nikdy neukončí.
+--force přeskočí zdvořilý krok a proces ukončí hned. Mění plán, ne jeho provedení, takže náhled ukáže jeden krok místo dvou a rozdíl je vidět dřív, než se cokoli stane.--restart vše vrátí, jakmile je proces pryč - položku, na kterou jste se ptali, i všechno, co sdílelo její proces. Bez něj stroj zůstane s těmito službami zastavenými a zpráva říká, jak je znovu spustit.Ukončení procesu je jediná věc, kterou tento nástroj dělá a kterou nikdo nemůže jménem stroje odmítnout. Proto je to samostatný příkaz, proto náhled pojmenovává každou službu, kterou vezme s sebou, a proto zdvořilý krok přichází první, pokud neřeknete jinak.
+bws show Spooler - proces, co na něm závisí, co potřebuje on sám, a zda vůbec přijímá požadavky na zastavení.bws stop Spooler --dry-run --dependents. Pokud je odpovědí odmítnutí, řekne, který ze tří důvodů to je.bws kill Spooler --dry-run a přečtěte si seznam služeb sdílejících tento proces.bws kill Spooler --restart. Zpráva končí tím, co nezabralo, a příkazy, které věci vrátí.Všechny čtyři fungují v okně stejně: klikněte pravým tlačítkem na řádek, zvolte Force stop..., přečtěte si plán a tlačítko pod ním je pojmenováno podle toho, co udělá.
+Protože odpovídá na jinou otázku. Správce úloh zná procesy a tento problém je o službách a ty si neodpovídají jedna k jedné.
+Sdílený svchost.exe může obsahovat tucet služeb. Správce úloh ho ukončí, aniž by řekl, kterých dvanáct, žádná se sama nevrátí a nic poté neřekne, co se zastavilo. EDR, který označí proces ukončující svchost.exe, dělá svou práci a vaše kliknutí od ničeho jiného rozeznat neumí.
Snap-in menampilkan Stopping dan tidak pernah bergerak. Jawaban yang biasa adalah Task Manager, tebakan di svchost.exe mana ia hidup, dan End task - yang juga mengakhiri setiap layanan lain dalam proses itu, tanpa memberi tahu Anda yang mana.
svchost.exe bersama. Mengakhiri proses itu mengakhiri semuanya, yang persis dilakukan Task Manager tanpa menyebutnya.Tanyakan apa yang akan ikut terbawa jika diakhiri. Tidak ada yang terjadi sampai Anda membuang --dry-run.
$ bws kill Spooler --dry-run
+ Pratinjau menyebut proses dengan nomor, menyebut setiap layanan lain yang hidup di dalamnya, dan menampilkan dua langkah, bukan satu: minta layanan berhenti, dan hanya jika itu tidak berhasil, akhiri prosesnya. Layanan yang berhenti sendiri tidak pernah diakhiri.
+--force melewati langkah sopan dan mengakhiri proses seketika. Ia mengubah rencana, bukan cara menjalankannya, sehingga pratinjau menampilkan satu langkah, bukan dua, dan perbedaannya terlihat sebelum apa pun terjadi.--restart mengembalikan semuanya setelah proses hilang - entri yang Anda tanyakan dan semua yang berbagi prosesnya. Tanpanya, mesin dibiarkan dengan layanan-layanan itu berhenti, dan laporan menyatakan cara memulainya lagi.Mengakhiri proses adalah satu-satunya hal yang dilakukan alat ini yang tidak bisa ditolak siapa pun atas nama mesin. Itulah sebabnya ini perintah tersendiri, mengapa pratinjau menyebut setiap layanan yang dibawanya serta, dan mengapa langkah sopan datang lebih dulu kecuali Anda menyatakan lain.
+bws show Spooler - prosesnya, apa yang bergantung padanya, apa yang dibutuhkannya, dan apakah ia menerima permintaan berhenti sama sekali.bws stop Spooler --dry-run --dependents. Jika jawabannya penolakan, ia menyebut yang mana dari tiga alasan itu.bws kill Spooler --dry-run, dan baca daftar layanan yang berbagi proses itu.bws kill Spooler --restart. Laporan berakhir dengan apa yang tidak berhasil dan perintah yang mengembalikan keadaan.Keempatnya bekerja dengan cara yang sama di jendela: klik kanan sebuah baris, pilih Force stop..., baca rencananya, dan tombol di bawahnya dinamai sesuai apa yang akan dilakukannya.
+Karena ia menjawab pertanyaan yang berbeda. Task Manager mengenal proses dan masalah ini tentang layanan, dan keduanya tidak sejajar satu lawan satu.
+svchost.exe bersama dapat memuat selusin layanan. Task Manager akan mengakhirinya tanpa menyebut kedua belas yang mana, tidak ada yang kembali sendiri, dan tidak ada yang sesudahnya memberi tahu Anda apa yang berhenti. EDR yang menandai proses yang mengakhiri svchost.exe sedang menjalankan tugasnya, dan ia tidak bisa membedakan klik Anda dari yang lain.
スナップインは Stopping を表示したまま動きません。よくある対処は、タスク マネージャーを開き、どの svchost.exe に入っているかを推測して「タスクの終了」を押すことです。それでは、そのプロセス内のほかのサービスもすべて、どれだったかを知らされないまま終了してしまいます。
svchost.exe の中で動作します。そのプロセスを終了すると、全部が終了します。タスク マネージャーがその名前を挙げずに行うのは、まさにこれです。終了すると何が巻き込まれるかを尋ねます。--dry-run を外すまで、何も起きません。
$ bws kill Spooler --dry-run
+ プレビューは、プロセスを番号で示し、そこに存在するほかのすべてのサービスの名前を挙げ、1 つではなく 2 つのステップを表示します。サービスに停止を要求し、それがうまくいかない場合にのみプロセスを終了します。自力で停止するサービスが強制終了されることはありません。
+--force は丁寧なステップを省略し、プロセスをすぐに終了します。実行ではなくプランを変えるので、プレビューには 2 つではなく 1 つのステップが表示され、何かが起きる前にその違いが見えます。--restart は、プロセスが消えたあとにすべてを元に戻します。尋ねたエントリと、同じプロセスを共有していたすべてです。これがないと、マシンにはそれらのサービスが停止したまま残り、レポートはそれらを再び開始する方法を伝えます。プロセスを終了することは、このツールが行う唯一の、マシンに代わって誰も拒否できないことです。だから独立したコマンドになっていて、プレビューが巻き込むすべてのサービスの名前を挙げ、指定しない限り丁寧なステップが先に実行されます。
+bws show Spooler で、プロセス、依存されているもの、依存しているもの、そもそも停止要求を受け付けているかどうかがわかります。bws stop Spooler --dry-run --dependents。答えが拒否であれば、3 つの理由のどれなのかが示されます。bws kill Spooler --dry-run を実行し、そのプロセスを共有するサービスの一覧を読みます。bws kill Spooler --restart。レポートは、うまくいかなかったことと、元に戻すコマンドで終わります。4 つとも、ウィンドウでも同じように動作します。行を右クリックして Force stop... を選び、プランを読むと、その下のボタンには実行する内容が名前として付いています。
+答えている質問が違うからです。タスク マネージャーが知っているのはプロセスで、この問題はサービスについてのものであり、両者は 1 対 1 には対応しません。
+共有の svchost.exe は、十数個のサービスを抱えていることがあります。タスク マネージャーは、その 12 個がどれかを言わずに終了します。どれも自力では戻ってこず、そのあとに何が止まったかを教えてくれるものはありません。svchost.exe を終了するプロセスを検知する EDR は役目を果たしていますが、あなたのクリックとほかの何かを区別することはできません。
스냅인은 Stopping을 표시한 채 움직이지 않습니다. 흔한 해결책은 작업 관리자를 열어 어느 svchost.exe 안에 있는지 짐작하고 작업 끝내기를 누르는 것인데, 그러면 그 프로세스 안의 다른 모든 서비스도, 어떤 서비스였는지 알려 주지 않은 채 함께 종료됩니다.
svchost.exe 안에서 실행됩니다. 그 프로세스를 종료하면 모두 종료되는데, 작업 관리자가 이름을 알려 주지 않고 하는 일이 바로 그것입니다.종료하면 무엇이 함께 사라지는지 물어보세요. --dry-run을 빼기 전에는 아무 일도 일어나지 않습니다.
$ bws kill Spooler --dry-run
+ 미리 보기는 프로세스를 번호로 알려 주고, 그 안에 있는 다른 모든 서비스의 이름을 알려 주며, 한 단계가 아니라 두 단계를 보여 줍니다. 서비스에 중지를 요청하고, 그것이 통하지 않을 때만 프로세스를 종료합니다. 스스로 멈추는 서비스는 절대 강제 종료되지 않습니다.
+--force는 정중한 단계를 건너뛰고 프로세스를 바로 종료합니다. 실행이 아니라 계획을 바꾸므로, 미리 보기에 두 단계 대신 한 단계가 표시되고 그 차이가 아무 일이 일어나기 전에 보입니다.--restart는 프로세스가 사라진 뒤 모든 것을 되돌립니다. 물어본 항목과 그 프로세스를 공유하던 모든 것입니다. 이것이 없으면 컴퓨터에는 그 서비스들이 중지된 채로 남으며, 보고서가 다시 시작하는 방법을 알려 줍니다.프로세스를 종료하는 것은 이 도구가 하는 일 중 컴퓨터를 대신해 아무도 거부할 수 없는 유일한 일입니다. 그래서 별도의 명령이고, 그래서 미리 보기가 함께 사라지는 모든 서비스의 이름을 알려 주며, 그래서 다르게 지정하지 않으면 정중한 단계가 먼저 옵니다.
+bws show Spooler로 프로세스, 그것에 종속된 것, 그것이 종속된 것, 그리고 중지 요청을 아예 받아들이는지 알 수 있습니다.bws stop Spooler --dry-run --dependents. 답이 거부라면 세 가지 이유 중 어느 것인지 알려 줍니다.bws kill Spooler --dry-run을 실행하고, 그 프로세스를 공유하는 서비스 목록을 읽으세요.bws kill Spooler --restart. 보고서는 동작하지 않은 것과 모든 것을 되돌려 놓는 명령으로 끝납니다.네 가지 모두 창에서도 같은 방식으로 동작합니다. 행을 오른쪽 클릭하고 Force stop...을 선택해 계획을 읽으면, 그 아래 버튼에는 그것이 할 일의 이름이 붙어 있습니다.
+다른 질문에 답하기 때문입니다. 작업 관리자는 프로세스를 알고 이 문제는 서비스에 대한 것이며, 둘은 일대일로 대응하지 않습니다.
+공유 svchost.exe 하나에 서비스가 열 몇 개 들어 있을 수 있습니다. 작업 관리자는 그 열두 개가 무엇인지 말하지 않고 종료하고, 그중 어느 것도 스스로 돌아오지 않으며, 나중에 무엇이 멈췄는지 알려 주는 것이 없습니다. svchost.exe를 종료하는 프로세스를 표시하는 EDR은 제 할 일을 하는 것이며, 사용자의 클릭을 다른 어떤 것과도 구별할 수 없습니다.
De snap-in toont Stopping en beweegt nooit meer. Het gebruikelijke antwoord is Taakbeheer, een gok in welke svchost.exe hij leeft, en Taak beëindigen - wat ook elke andere service in dat proces beëindigt, zonder u te zeggen welke dat waren.
svchost.exe. Het beëindigen van dat proces beëindigt ze allemaal, en dat is precies wat Taakbeheer doet zonder ze te noemen.Vraag wat het beëindigen ervan zou meenemen. Er gebeurt niets totdat u --dry-run weglaat.
$ bws kill Spooler --dry-run
+ De voorvertoning noemt het proces bij nummer, noemt elke andere service die erin leeft, en toont twee stappen in plaats van één: vraag de service te stoppen, en beëindig het proces alleen als dat niet werkt. Een service die uit zichzelf stopt wordt nooit beëindigd.
+--force slaat de beleefde stap over en beëindigt het proces meteen. Het verandert het plan en niet de uitvoering ervan, dus de voorvertoning toont één stap in plaats van twee en het verschil is zichtbaar voordat er iets gebeurt.--restart brengt alles terug zodra het proces weg is - het item waarnaar u vroeg en alles wat zijn proces deelde. Zonder die optie blijft de machine achter met die services gestopt, en het rapport zegt hoe u ze weer start.Een proces beëindigen is het enige wat dit hulpmiddel doet waarvoor niemand namens de machine kan weigeren. Daarom is het een opdracht op zich, daarom noemt de voorvertoning elke service die het meeneemt, en daarom komt de beleefde stap eerst, tenzij u anders zegt.
+bws show Spooler - het proces, wat ervan afhangt, wat het zelf nodig heeft, en of het überhaupt stopverzoeken accepteert.bws stop Spooler --dry-run --dependents. Als het antwoord een weigering is, zegt het welke van de drie redenen het is.bws kill Spooler --dry-run, en lees de lijst met services die dat proces delen.bws kill Spooler --restart. Het rapport eindigt met wat niet werkte en de opdrachten die alles terugzetten.Alle vier werken op dezelfde manier in het venster: klik met rechts op een rij, kies Force stop..., lees het plan, en de knop eronder is genoemd naar wat hij gaat doen.
+Omdat het een andere vraag beantwoordt. Taakbeheer kent processen en dit probleem gaat over services, en die komen niet één op één overeen.
+Een gedeelde svchost.exe kan een dozijn services bevatten. Taakbeheer beëindigt hem zonder te zeggen welke twaalf, geen enkele komt uit zichzelf terug, en niets achteraf zegt u wat er is gestopt. Een EDR die een proces markeert dat svchost.exe beëindigt, doet zijn werk, en kan uw klik niet van iets anders onderscheiden.
Snap-in-ul arată Stopping și nu se mișcă niciodată. Răspunsul obișnuit este Task Manager, o presupunere în ce svchost.exe trăiește și End task - ceea ce încheie și fiecare alt serviciu din acel proces, fără să vă spună care au fost.
svchost.exe partajat. Încheierea acelui proces le încheie pe toate, exact ce face Task Manager fără să le numească.Întrebați ce ar lua cu sine încheierea lui. Nu se întâmplă nimic până nu renunțați la --dry-run.
$ bws kill Spooler --dry-run
+ Previzualizarea numește procesul prin număr, numește fiecare alt serviciu care trăiește în el și arată doi pași în loc de unul: cere serviciului să se oprească și, doar dacă asta nu funcționează, încheie procesul. Un serviciu care se oprește singur nu este niciodată încheiat.
+--force sare peste pasul politicos și încheie procesul imediat. Schimbă planul și nu modul de rulare, deci previzualizarea arată un pas în loc de doi, iar diferența este vizibilă înainte să se întâmple ceva.--restart readuce totul după ce procesul a dispărut - intrarea despre care ați întrebat și tot ce îi împărțea procesul. Fără el, mașina rămâne cu acele servicii oprite, iar raportul spune cum să le porniți din nou.Încheierea unui proces este singurul lucru pe care îl face acest instrument și pe care nimeni nu-l poate refuza în numele mașinii. De aceea este o comandă proprie, de aceea previzualizarea numește fiecare serviciu pe care îl ia cu sine și de aceea pasul politicos vine primul, dacă nu spuneți altfel.
+bws show Spooler - procesul, ce depinde de el, de ce depinde el și dacă acceptă deloc cereri de oprire.bws stop Spooler --dry-run --dependents. Dacă răspunsul este un refuz, spune care dintre cele trei motive este.bws kill Spooler --dry-run și citiți lista serviciilor care împart acel proces.bws kill Spooler --restart. Raportul se încheie cu ce n-a mers și cu comenzile care pun lucrurile la loc.Toate patru funcționează la fel în fereastră: clic dreapta pe un rând, alegeți Force stop..., citiți planul, iar butonul de sub el poartă numele a ceea ce va face.
+Pentru că răspunde la o altă întrebare. Task Manager cunoaște procesele, iar această problemă este despre servicii, iar cele două nu se aliniază unul la unul.
+Un svchost.exe partajat poate conține o duzină de servicii. Task Manager îl va încheia fără să spună care douăsprezece, niciunul nu revine singur și nimic după aceea nu vă spune ce s-a oprit. Un EDR care semnalează un proces ce încheie svchost.exe își face treaba și nu poate deosebi clicul dumneavoastră de orice altceva.
Оснастка показывает Stopping и не двигается. Обычный ответ - Диспетчер задач, догадка, в каком svchost.exe она живёт, и «Снять задачу», что завершает и каждую другую службу в этом процессе, не говоря вам, какие это были.
svchost.exe. Завершение этого процесса завершает все они, и это именно то, что делает Диспетчер задач, не называя их.Спросите, что унесло бы с собой завершение. Ничего не произойдёт, пока вы не уберёте --dry-run.
$ bws kill Spooler --dry-run
+ Предпросмотр называет процесс по номеру, называет каждую другую службу, живущую в нём, и показывает два шага вместо одного: попросить службу остановиться и, только если это не сработало, завершить процесс. Служба, которая останавливается сама, не завершается принудительно никогда.
+--force пропускает вежливый шаг и сразу завершает процесс. Он меняет план, а не его выполнение, поэтому предпросмотр показывает один шаг вместо двух, и разница видна до того, как что-либо произойдёт.--restart возвращает всё обратно, когда процесса уже нет, - запись, о которой вы спрашивали, и всё, что делило её процесс. Без него машина остаётся с этими службами остановленными, а отчёт говорит, как запустить их снова.Завершение процесса - единственное, что делает этот инструмент и от чего никто не может отказаться за машину. Поэтому это отдельная команда, поэтому предпросмотр называет каждую службу, которую он уносит с собой, и поэтому вежливый шаг идёт первым, пока вы не скажете иначе.
+bws show Spooler - процесс, что от неё зависит, от чего зависит она сама и принимает ли она запросы остановки вообще.bws stop Spooler --dry-run --dependents. Если ответ - отказ, он говорит, какая из трёх причин.bws kill Spooler --dry-run и прочитайте список служб, делящих этот процесс.bws kill Spooler --restart. Отчёт заканчивается тем, что не сработало, и командами, возвращающими всё на место.Все четыре работают так же в окне: щёлкните строку правой кнопкой, выберите Force stop..., прочитайте план, а кнопка под ним названа по тому, что она сделает.
+Потому что он отвечает на другой вопрос. Диспетчер задач знает о процессах, а эта проблема - о службах, и они не соответствуют друг другу один к одному.
+Общий svchost.exe может содержать десяток служб. Диспетчер задач завершит его, не сказав, какие это двенадцать, ни одна не вернётся сама, и ничто потом не скажет вам, что остановилось. EDR, который отмечает процесс, завершающий svchost.exe, делает свою работу, и он не может отличить ваш щелчок от чего-либо другого.
Ek bileşen Stopping gösterir ve hiç kıpırdamaz. Olağan yanıt Görev Yöneticisi, hizmetin hangi svchost.exe içinde yaşadığına dair bir tahmin ve Görevi sonlandır'dır - bu da o süreçteki diğer her hizmeti de sonlandırır ve hangilerinin olduğunu size söylemez.
svchost.exe içinde yaşar. O süreci sonlandırmak hepsini sonlandırır; Görev Yöneticisi'nin onları adlandırmadan yaptığı tam olarak budur.Onu sonlandırmanın beraberinde neleri götüreceğini sorun. --dry-run'ı bırakana kadar hiçbir şey olmaz.
$ bws kill Spooler --dry-run
+ Önizleme süreci numarasıyla adlandırır, içinde yaşayan diğer her hizmeti adlandırır ve bir yerine iki adım gösterir: hizmetten durmasını isteyin ve yalnızca bu işe yaramazsa süreci sonlandırın. Kendiliğinden duran bir hizmet asla sonlandırılmaz.
+--force kibar adımı atlar ve süreci hemen sonlandırır. Planı değiştirir, çalışmasını değil; bu yüzden önizleme iki yerine bir adım gösterir ve fark, bir şey olmadan önce görünür.--restart her şeyi geri getirir, süreç gittikten sonra - sorduğunuz öğeyi ve sürecini paylaşan her şeyi. Onsuz makine, o hizmetler durmuş halde kalır ve rapor onları nasıl yeniden başlatacağınızı söyler.Bir süreci sonlandırmak, bu aracın yaptığı ve kimsenin makine adına reddedemeyeceği tek şeydir. Bu yüzden kendi başına bir komuttur, bu yüzden önizleme beraberinde götürdüğü her hizmeti adlandırır ve bu yüzden, siz aksini söylemedikçe kibar adım önce gelir.
+bws show Spooler - süreç, ona bağlı olanlar, onun neye bağlı olduğu ve durdurma isteklerini hiç kabul edip etmediği.bws stop Spooler --dry-run --dependents. Yanıt bir retse, üç nedenden hangisi olduğunu söyler.bws kill Spooler --dry-run ve o süreci paylaşan hizmetlerin listesini okuyun.bws kill Spooler --restart. Rapor, neyin çalışmadığı ve işleri geri koyan komutlarla biter.Dördü de pencerede aynı şekilde çalışır: bir satıra sağ tıklayın, Force stop... seçin, planı okuyun; altındaki düğme yapacağı şeyin adını taşır.
+Çünkü farklı bir soruyu yanıtlar. Görev Yöneticisi süreçleri bilir ve bu sorun hizmetlerle ilgilidir; ikisi bire bir örtüşmez.
+Ortak bir svchost.exe bir düzine hizmet barındırabilir. Görev Yöneticisi onu hangi on ikisi olduğunu söylemeden sonlandırır, hiçbiri kendiliğinden geri gelmez ve sonrasında hiçbir şey size neyin durduğunu söylemez. svchost.exe'yi sonlandıran bir süreci işaretleyen bir EDR işini yapıyordur ve sizin tıklamanızı başka herhangi bir şeyinkinden ayıramaz.
Оснастка показує Stopping і не рухається. Звична відповідь - Диспетчер завдань, здогад, у якому svchost.exe вона живе, і «Завершити завдання», що завершує й кожну іншу службу в цьому процесі, не кажучи вам, які саме.
svchost.exe. Завершення цього процесу завершує їх усі, а саме це й робить Диспетчер завдань, не називаючи їх.Спитайте, що забере з собою завершення. Нічого не станеться, доки ви не приберете --dry-run.
$ bws kill Spooler --dry-run
+ Попередній перегляд називає процес за номером, називає кожну іншу службу, що живе в ньому, і показує два кроки, а не один: попросити службу зупинитися і, лише якщо це не спрацювало, завершити процес. Служба, що зупиняється сама, ніколи не завершується примусово.
+--force пропускає чемний крок і завершує процес одразу. Він змінює план, а не його виконання, тож попередній перегляд показує один крок замість двох, і різницю видно до того, як щось станеться.--restart повертає все назад, коли процесу вже немає, - запис, про який ви питали, і все, що ділило з ним процес. Без нього машина лишається з цими зупиненими службами, а звіт каже, як їх запустити знову.Завершення процесу - єдине, що робить цей інструмент і від чого ніхто не може відмовити за машину. Саме тому це окрема команда, саме тому попередній перегляд називає кожну службу, яку вона забирає з собою, і саме тому чемний крок іде першим, якщо ви не скажете іншого.
+bws show Spooler - процес, що від неї залежить, від чого залежить вона і чи приймає вона запити зупинки взагалі.bws stop Spooler --dry-run --dependents. Якщо відповідь - відмова, вона каже, яка саме з трьох причин.bws kill Spooler --dry-run і прочитайте список служб, що ділять цей процес.bws kill Spooler --restart. Звіт закінчується тим, що не спрацювало, і командами, які повертають усе на місце.Усі чотири працюють так само у вікні: клацніть рядок правою кнопкою, виберіть Force stop..., прочитайте план, а кнопка під ним названа за тим, що вона зробить.
+Бо він відповідає на інше запитання. Диспетчер завдань знає про процеси, а ця проблема про служби, і вони не збігаються один до одного.
+Спільний svchost.exe може тримати десяток служб. Диспетчер завдань завершить його, не сказавши, які саме дванадцять, жодна з них не повернеться сама, і ніщо потім не скаже вам, що зупинилося. EDR, який позначає процес, що завершує svchost.exe, робить свою роботу, і він не відрізнить ваше клацання від чогось іншого.
Snap-in hiển thị Stopping và không bao giờ nhúc nhích. Câu trả lời thường thấy là Task Manager, đoán xem nó sống trong svchost.exe nào, và End task - việc này cũng kết thúc mọi dịch vụ khác trong tiến trình đó, mà không cho bạn biết đó là những dịch vụ nào.
svchost.exe dùng chung. Kết thúc tiến trình đó kết thúc tất cả, đúng như điều Task Manager làm mà không nêu tên chúng.Hỏi xem việc kết thúc nó sẽ kéo theo những gì. Không có gì xảy ra cho đến khi bạn bỏ --dry-run.
$ bws kill Spooler --dry-run
+ Bản xem trước nêu tiến trình bằng số, nêu mọi dịch vụ khác sống trong đó, và hiển thị hai bước thay vì một: yêu cầu dịch vụ dừng, và chỉ khi điều đó không có tác dụng, kết thúc tiến trình. Một dịch vụ tự dừng thì không bao giờ bị kết thúc.
+--force bỏ qua bước lịch sự và kết thúc tiến trình ngay. Nó thay đổi kế hoạch chứ không phải cách chạy, nên bản xem trước hiển thị một bước thay vì hai và sự khác biệt thấy được trước khi có gì xảy ra.--restart đưa mọi thứ trở lại sau khi tiến trình đã mất - mục bạn hỏi và mọi thứ đã dùng chung tiến trình của nó. Không có nó, máy bị để lại với các dịch vụ đó đã dừng, và báo cáo nói cách khởi động chúng lại.Kết thúc một tiến trình là điều duy nhất công cụ này làm mà không ai có thể từ chối thay mặt máy. Đó là lý do nó là một lệnh riêng, lý do bản xem trước nêu tên mọi dịch vụ nó kéo theo, và lý do bước lịch sự đến trước trừ khi bạn nói khác.
+bws show Spooler - tiến trình, những gì phụ thuộc vào nó, nó phụ thuộc vào gì, và liệu nó có nhận yêu cầu dừng hay không.bws stop Spooler --dry-run --dependents. Nếu câu trả lời là một lời từ chối, nó nói đó là lý do nào trong ba lý do.bws kill Spooler --dry-run, và đọc danh sách các dịch vụ dùng chung tiến trình đó.bws kill Spooler --restart. Báo cáo kết thúc bằng những gì không hiệu quả và các lệnh đưa mọi thứ về chỗ cũ.Cả bốn hoạt động giống nhau trong cửa sổ: nhấp chuột phải vào một hàng, chọn Force stop..., đọc kế hoạch, và nút bên dưới được đặt tên theo điều nó sẽ làm.
+Vì nó trả lời một câu hỏi khác. Task Manager biết về tiến trình còn vấn đề này là về dịch vụ, và hai thứ đó không khớp một-một.
+Một svchost.exe dùng chung có thể chứa cả chục dịch vụ. Task Manager sẽ kết thúc nó mà không nói mười hai cái nào, không cái nào tự quay lại, và không có gì sau đó cho bạn biết điều gì đã dừng. Một EDR đánh dấu tiến trình kết thúc svchost.exe đang làm đúng việc của nó, và nó không thể phân biệt cú nhấp của bạn với bất cứ thứ gì khác.
管理单元显示 Stopping 后就一动不动。通常的办法是打开任务管理器,猜它位于哪个 svchost.exe 中,然后点“结束任务”,而这会把该进程中的所有其他服务也一并结束,却不告诉你它们是哪些。
svchost.exe 里。结束该进程就会结束它们全部,这正是任务管理器不点出它们名称就做的事。询问结束它会带走什么。在你去掉 --dry-run 之前什么也不会发生。
$ bws kill Spooler --dry-run
+ 预览按编号指出该进程,点出其中的每个其他服务,并显示两个步骤而不是一个:请求服务停止,只有在无效时才结束进程。自己能停止的服务绝不会被强行结束。
+--force 跳过礼貌的那一步,直接结束进程。它改变的是计划而不是执行,所以预览显示一个步骤而不是两个,这种差异在任何操作发生之前就能看到。--restart 在进程消失后把一切带回来:你询问的那个条目,以及与它共用进程的所有内容。没有它,计算机就会留下这些已停止的服务,报告会说明如何再次启动它们。结束进程是这个工具所做的唯一一件没人能替计算机拒绝的事。这就是它是一个独立命令的原因,也是预览会点出它带走的每个服务的原因,还是除非你另行指定,否则礼貌的那一步总是排在第一位的原因。
+bws show Spooler:进程、依赖它的内容、它所依赖的内容,以及它到底是否接受停止请求。bws stop Spooler --dry-run --dependents。如果答案是拒绝,它会说明是三种原因中的哪一种。bws kill Spooler --dry-run,并阅读共用该进程的服务列表。bws kill Spooler --restart。报告以没有成功的内容和把一切恢复原状的命令结尾。这四步在窗口中的工作方式相同:右键单击一行,选择 Force stop...,阅读计划,其下方的按钮会以它将要执行的操作命名。
+因为它回答的是另一个问题。任务管理器了解进程,而这个问题与服务有关,二者并不一一对应。
+一个共享的 svchost.exe 可以容纳十几个服务。任务管理器会结束它,却不说是哪十二个,其中没有一个会自行回来,事后也没有任何东西告诉你停掉了什么。如果某个 EDR 把结束 svchost.exe 的进程标记出来,那它是在履行职责,而它无法把你的点击与其他任何东西区分开。
管理單元顯示 Stopping 後就一動不動。通常的辦法是開啟工作管理員,猜它位於哪個 svchost.exe 中,然後按「結束工作」,而這會把該處理程序中的所有其他服務也一併結束,卻不告訴你它們是哪些。
svchost.exe 裡。結束該處理程序就會結束它們全部,這正是工作管理員不點出它們名稱就做的事。詢問結束它會帶走什麼。在你去掉 --dry-run 之前什麼也不會發生。
$ bws kill Spooler --dry-run
+ 預覽依編號指出該處理程序,點出其中的每個其他服務,並顯示兩個步驟而不是一個:要求服務停止,只有在無效時才結束處理程序。自己能停止的服務絕不會被強行結束。
+--force 跳過禮貌的那一步,直接結束處理程序。它改變的是計畫而不是執行,所以預覽顯示一個步驟而不是兩個,這種差異在任何動作發生之前就能看到。--restart 在處理程序消失後把一切帶回來:你詢問的那個項目,以及與它共用處理程序的所有內容。沒有它,電腦就會留下這些已停止的服務,報告會說明如何再次啟動它們。結束處理程序是這個工具所做的唯一一件沒人能替電腦拒絕的事。這就是它是一個獨立命令的原因,也是預覽會點出它帶走的每個服務的原因,還是除非你另行指定,否則禮貌的那一步總是排在第一位的原因。
+bws show Spooler:處理程序、依賴它的內容、它所依賴的內容,以及它到底是否接受停止要求。bws stop Spooler --dry-run --dependents。如果答案是拒絕,它會說明是三種原因中的哪一種。bws kill Spooler --dry-run,並閱讀共用該處理程序的服務清單。bws kill Spooler --restart。報告以沒有成功的內容和把一切復原的命令結尾。這四步在視窗中的運作方式相同:在一列上按一下滑鼠右鍵,選擇 Force stop...,閱讀計畫,其下方的按鈕會以它將要執行的動作命名。
+因為它回答的是另一個問題。工作管理員了解處理程序,而這個問題與服務有關,二者並不一一對應。
+一個共用的 svchost.exe 可以容納十幾個服務。工作管理員會結束它,卻不說是哪十二個,其中沒有一個會自行回來,事後也沒有任何東西告訴你停掉了什麼。如果某個 EDR 把結束 svchost.exe 的處理程序標記出來,那它是在履行職責,而它無法把你的按一下與其他任何東西區分開。
Poctivá odpověď je, že vám to nikdo říct nemůže a každý seznam, který to tvrdí, popisuje stroj, který není váš. Odpovědět lze na užší a mnohem užitečnější otázku: co na tomto stroji nesedí a co je jinak než ve chvíli, kdy to fungovalo.
+start:auto !status:running
Windows byl požádán, aby tyto spustil, a nebězí. Na zdravém stroji je to krátký seznam - pár položek, které startují pozdě a zase se zastaví. Cokoli jiného stojí za pohled.
+mismatch:running
Konfigurace a stav si odporují. Obvykle to někdo zakázal, aniž by zastavil, a příští restart bude překvapení.
+file:missing
Odinstalace, která po sobě nechala registraci. Neškodné, dokud se to něco nepokusí spustit, a stopa k tomu, co na tomto stroji dřív bylo.
+signed:no peruser:no
Samo o sobě to nic nedokazuje a je to správné místo, kde začít číst. Druhý termín vynechá rodiny pro jednotlivé uživatele, které by jinak plnily seznam téměř duplikáty.
+privilege:SeDebugPrivilege
Privilegium, které procesu umožňuje otevřít jakýkoli jiný. Hrstka legitimních služeb o něj žádá a stojí za to vědět, které to na vašem stroji jsou.
+trigger:any status:stopped
Zastaveno, protože o to dosud nic nepožádalo, a ne proto, že je něco špatně. Vědět, které to jsou, je způsob, jak první seznam přestane budit poplach.
+Zeptejte se samotného stroje, když fungoval.
+Pořiďte snímek v den, kdy stroj jde do provozu. Pak se otázka má tohle běžet změní na otázku běželo tohle, když všechno fungovalo - na otázku o vašem stroji, ne o stroji z nějakého článku.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... o týden, o záplatu nebo o incident později
+bws snapshot diff C:\baselines\web01.json --live
+ Konfigurace se hlásí odděleně od stavu běhu, takže odpovědí není čtyřicet služeb, které náhodou běží - je to typ spouštění, který někdo změnil.
+ Audit stroje na drift +Každé zastavení v tomto nástroji nejdřív ukáže svůj plán: kroky, co s nimi spadne, a varování, když je některá z nich věc, bez které stroj nefunguje. Seznam takových je výchozí seznam sedmi - obě poloviny RPC a spouštěč DCOM, správce účtů, izolace klíčů, správce relací a Plug and Play - a Vzdálená plocha na něm není, takže při vzdálené relaci plán čtěte.
+ +Jawaban jujurnya adalah tidak ada yang bisa memberi tahu Anda, dan setiap daftar yang mengklaimnya sedang menggambarkan mesin yang bukan milik Anda. Yang bisa dijawab lebih sempit dan jauh lebih berguna: apa yang tidak cocok di mesin ini, dan apa yang berbeda dari saat semuanya berfungsi.
+start:auto !status:running
Windows diminta memulai ini dan mereka tidak berjalan. Pada mesin yang sehat ini adalah daftar pendek - beberapa entri yang mulai terlambat dan berhenti lagi. Apa pun selain itu layak dilihat.
+mismatch:running
Konfigurasi dan status tidak sesuai. Biasanya seseorang menonaktifkannya tanpa menghentikannya, dan restart berikutnya akan menjadi kejutan.
+file:missing
Pencopotan yang meninggalkan registrasinya. Tidak berbahaya sampai ada yang mencoba memulainya, dan petunjuk tentang apa yang dulu ada di mesin ini.
+signed:no peruser:no
Bukan bukti apa pun dengan sendirinya, dan tempat yang tepat untuk mulai membaca. Istilah kedua membuang keluarga per pengguna, yang jika tidak akan memenuhi daftar dengan hampir-duplikat.
+privilege:SeDebugPrivilege
Hak istimewa yang memungkinkan sebuah proses membuka proses lain mana pun. Segelintir layanan yang sah memintanya, dan layak diketahui mana saja di mesin Anda.
+trigger:any status:stopped
Berhenti karena belum ada yang memintanya, bukan karena ada yang salah. Mengetahui yang mana adalah cara agar daftar pertama berhenti terasa mengkhawatirkan.
+Tanyakan kepada mesin itu sendiri, saat ia berfungsi.
+Ambil snapshot pada hari mesin mulai beroperasi. Maka apakah ini seharusnya berjalan menjadi apakah ini berjalan ketika semuanya berfungsi - pertanyaan tentang mesin Anda, bukan tentang mesin dalam sebuah artikel.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... seminggu, sebuah patch, atau sebuah insiden kemudian
+bws snapshot diff C:\baselines\web01.json --live
+ Konfigurasi dilaporkan terpisah dari status berjalan, sehingga jawabannya bukan empat puluh layanan yang kebetulan hidup - melainkan tipe startup yang diubah seseorang.
+ Mengaudit mesin untuk penyimpangan +Setiap penghentian di alat ini menampilkan rencananya terlebih dahulu: langkah-langkahnya, apa yang ikut jatuh bersamanya, dan peringatan ketika salah satunya adalah sesuatu yang tanpanya mesin tidak berfungsi. Daftar itu adalah daftar awal berisi tujuh - dua bagian RPC dan peluncur DCOM, manajer akun, isolasi kunci, manajer sesi, dan plug and play - dan Remote Desktop tidak ada di dalamnya, jadi pada sesi jarak jauh, bacalah rencananya.
+ +正直な答えは、誰にもわかりません。そして、わかると主張する一覧は、あなたのものではないマシンについて書いています。答えられるのは、もっと狭く、はるかに役立つ質問です。このマシンで辻褄が合わないものは何か、動いていたときと何が違うか。
+start:auto !status:running
Windows はこれらを開始するように言われていますが、実行されていません。健全なマシンでは短い一覧で、遅れて起動してまた停止する数個のエントリです。それ以外は確認する価値があります。
+mismatch:running
構成と状態が食い違っています。たいていは誰かが停止せずに無効にしたもので、次の再起動で驚くことになります。
+file:missing
登録が残ったままアンインストールされたものです。何かが開始しようとするまでは無害で、このマシンに何があったかを示す手がかりでもあります。
+signed:no peruser:no
それだけで何かの証明にはならず、読み始める場所としてはふさわしいものです。2 番目の用語は、ユーザーごとのファミリーを除外します。そうしないと、似たエントリで一覧が埋まります。
+privilege:SeDebugPrivilege
プロセスがほかのあらゆるプロセスを開けるようになる特権です。正当なサービスの少数がこれを要求しており、ご自身のマシンでどれがそうかを知っておく価値があります。
+trigger:any status:stopped
何かがおかしいからではなく、まだ誰も要求していないために停止しています。これらがどれかを知っておくと、最初の一覧に不安を覚えなくなります。
+マシン自身に、動いていたときのことを尋ねます。
+マシンが稼働を開始する日にスナップショットを取ります。そうすれば、これは動いているべきかはすべてが動いていたとき、これは動いていたかになります。記事の中のマシンではなく、あなたのマシンについての質問です。
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... 1 週間、パッチ、またはインシデントのあと
+bws snapshot diff C:\baselines\web01.json --live
+ 構成は実行状態とは分けて報告されるので、答えはたまたま動いている 40 個のサービスではなく、誰かが変更したスタートアップの種類になります。
+ ドリフトのためのマシン監査 +このツールのすべての停止は、まずプランを表示します。ステップ、一緒に停止するもの、そしてその 1 つがマシンの動作に不可欠なものである場合の警告です。そのようなものの一覧は 7 つの初期リストです。RPC の 2 つの半分と DCOM ランチャー、アカウント マネージャー、キー分離、セッション マネージャー、プラグ アンド プレイで、リモート デスクトップは含まれていません。そのため、リモートセッションではプランを読んでください。
+ +솔직한 답은 아무도 말해 줄 수 없다는 것이며, 말해 줄 수 있다고 주장하는 모든 목록은 당신의 것이 아닌 컴퓨터를 설명하고 있습니다. 답할 수 있는 것은 더 좁고 훨씬 유용한 질문입니다. 이 컴퓨터에서 앞뒤가 맞지 않는 것은 무엇이며, 잘 동작하던 때와 무엇이 다른가.
+start:auto !status:running
Windows는 이 서비스들을 시작하라는 지시를 받았지만 실행 중이 아닙니다. 건강한 컴퓨터에서는 짧은 목록입니다. 늦게 시작했다가 다시 멈추는 항목 몇 개입니다. 그 밖의 것은 살펴볼 가치가 있습니다.
+mismatch:running
구성과 상태가 어긋나 있습니다. 보통 누군가 중지하지 않고 사용 안 함으로 바꾼 것이며, 다음 재시작이 놀라움이 될 것입니다.
+file:missing
등록 정보를 남기고 제거된 경우입니다. 무언가 시작하려 하기 전에는 해롭지 않으며, 이 컴퓨터에 무엇이 있었는지에 대한 단서입니다.
+signed:no peruser:no
그 자체로는 아무것도 증명하지 않으며, 읽기를 시작하기에 알맞은 곳입니다. 두 번째 검색어는 사용자별 계열을 제외하는데, 그렇지 않으면 목록이 거의 같은 항목으로 채워집니다.
+privilege:SeDebugPrivilege
프로세스가 다른 어떤 프로세스든 열 수 있게 해 주는 권한입니다. 합법적인 서비스 몇 개가 이것을 요청하며, 사용 중인 컴퓨터에서는 어느 것인지 알아 둘 가치가 있습니다.
+trigger:any status:stopped
무언가 잘못되어서가 아니라 아직 아무도 요청하지 않았기 때문에 중지되어 있습니다. 이것들이 무엇인지 아는 것이 첫 번째 목록이 더 이상 불안하지 않게 되는 방법입니다.
+컴퓨터 자신에게, 잘 동작하던 때에 대해 물어보세요.
+컴퓨터가 운영에 들어가는 날 스냅샷을 만드세요. 그러면 이것이 실행되어야 하는가는 모든 것이 동작하던 때 이것이 실행 중이었는가가 됩니다. 기사 속 컴퓨터가 아니라 당신의 컴퓨터에 대한 질문입니다.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... 일주일, 패치, 또는 사고 이후
+bws snapshot diff C:\baselines\web01.json --live
+ 구성은 실행 상태와 따로 보고되므로, 답은 우연히 떠 있는 서비스 마흔 개가 아니라 누군가 바꾼 시작 유형입니다.
+ 드리프트에 대한 컴퓨터 감사 +이 도구의 모든 중지는 먼저 계획을 보여 줍니다. 단계, 함께 내려가는 것, 그리고 그중 하나가 컴퓨터가 없이는 동작하지 않는 것일 때의 경고입니다. 그런 것의 목록은 일곱 개로 이루어진 시작용 목록입니다. RPC의 두 부분과 DCOM 실행기, 계정 관리자, 키 격리, 세션 관리자, 플러그 앤 플레이이며, 원격 데스크톱은 들어 있지 않으므로 원격 세션에서는 계획을 읽으세요.
+Het eerlijke antwoord is dat niemand het u kan zeggen, en elke lijst die dat beweert beschrijft een machine die niet de uwe is. Wat wel kan worden beantwoord is smaller en veel nuttiger: wat klopt er niet op deze machine, en wat is er anders dan toen het werkte.
+start:auto !status:running
Windows is verteld deze te starten en ze draaien niet. Op een gezonde machine is dit een korte lijst - een paar items die laat starten en weer stoppen. Al het andere is een blik waard.
+mismatch:running
Configuratie en toestand zijn het oneens. Meestal heeft iemand het uitgeschakeld zonder te stoppen, en de volgende herstart wordt een verrassing.
+file:missing
Een verwijdering die de registratie heeft laten staan. Onschadelijk totdat iets het probeert te starten, en een aanwijzing over wat er vroeger op deze machine stond.
+signed:no peruser:no
Op zichzelf geen bewijs van iets, en de juiste plek om te beginnen met lezen. De tweede term laat de families per gebruiker weg, die de lijst anders vullen met bijna-duplicaten.
+privilege:SeDebugPrivilege
Een bevoegdheid waarmee een proces elk ander proces kan openen. Een handvol legitieme services vraagt erom, en het is de moeite waard te weten welke op uw machine.
+trigger:any status:stopped
Gestopt omdat niets er nog om heeft gevraagd, niet omdat er iets mis is. Weten welke dit zijn is hoe de eerste lijst ophoudt alarmerend te zijn.
+Vraag de machine zelf, toen het werkte.
+Maak een momentopname de dag dat de machine in gebruik gaat. Dan wordt hoort dit te draaien tot draaide dit toen alles werkte - een vraag over uw machine en niet over een machine in een artikel.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... een week, een patch of een incident later
+bws snapshot diff C:\baselines\web01.json --live
+ Configuratie wordt los van de uitvoeringstoestand gemeld, dus het antwoord is geen veertig services die toevallig draaien - het is het opstarttype dat iemand heeft gewijzigd.
+ Een machine controleren op drift +Elke stop in dit hulpmiddel toont eerst zijn plan: de stappen, wat er mee neergaat, en een waarschuwing wanneer een ervan iets is waar de machine niet zonder kan. De lijst daarvan is een startlijst van zeven - de twee helften van RPC en de DCOM-starter, de accountbeheerder, sleutelisolatie, de sessiebeheerder en plug-and-play - en Extern bureaublad staat er niet op, dus lees het plan bij een sessie op afstand.
+ +Răspunsul sincer este că nimeni nu vi-l poate spune, iar orice listă care pretinde asta descrie o mașină care nu este a dumneavoastră. Ceea ce se poate răspunde este mai îngust și mult mai util: ce nu se potrivește pe această mașină și ce este diferit față de când funcționa.
+start:auto !status:running
Windows a primit ordin să pornească acestea și nu rulează. Pe o mașină sănătoasă aceasta este o listă scurtă - câteva intrări care pornesc târziu și se opresc din nou. Orice altceva merită o privire.
+mismatch:running
Configurația și starea nu concordă. De obicei cineva l-a dezactivat fără să-l oprească, iar următoarea repornire va fi o surpriză.
+file:missing
O dezinstalare care a lăsat înregistrarea în urmă. Inofensivă până când ceva încearcă să-l pornească și un indiciu despre ce se afla pe această mașină.
+signed:no peruser:no
Nu este dovada a nimic singură și este locul potrivit de unde să începeți să citiți. Al doilea termen elimină familiile pe utilizator, care altfel umplu lista cu aproape-duplicate.
+privilege:SeDebugPrivilege
Un privilegiu care permite unui proces să deschidă oricare altul. Câteva servicii legitime îl cer și merită să știți care dintre ele o fac pe mașina dumneavoastră.
+trigger:any status:stopped
Oprit pentru că încă nimic nu l-a cerut, și nu pentru că ceva este greșit. A ști care sunt acestea este felul în care prima listă încetează să mai fie alarmantă.
+Întrebați mașina însăși, de când funcționa.
+Faceți un instantaneu în ziua în care mașina intră în serviciu. Atunci ar trebui să ruleze asta devine rula asta când totul funcționa - o întrebare despre mașina dumneavoastră și nu despre o mașină dintr-un articol.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... o săptămână, o actualizare sau un incident mai târziu
+bws snapshot diff C:\baselines\web01.json --live
+ Configurația este raportată separat de starea de rulare, deci răspunsul nu este patruzeci de servicii care se întâmplă să fie pornite - este tipul de pornire pe care l-a schimbat cineva.
+ Auditarea unei mașini pentru derivă +Fiecare oprire din acest instrument își arată mai întâi planul: pașii, ce cade odată cu ei și un avertisment când unul dintre ei este ceva fără de care mașina nu funcționează. Lista acestora este o listă de pornire de șapte - cele două jumătăți ale RPC și lansatorul DCOM, managerul de conturi, izolarea cheilor, managerul de sesiuni și plug and play - iar Remote Desktop nu este pe ea, deci într-o sesiune la distanță citiți planul.
+ +Честный ответ - никто не может вам этого сказать, и каждый список, который на это претендует, описывает машину, которая не ваша. Ответить можно на более узкий и гораздо более полезный вопрос: что не сходится на этой машине и что отличается от того, как было, когда всё работало.
+start:auto !status:running
Windows велели запустить эти службы, а они не работают. На здоровой машине это короткий список - пара записей, которые стартуют поздно и снова останавливаются. Всё остальное стоит проверить.
+mismatch:running
Конфигурация и состояние расходятся. Обычно кто-то отключил её, не остановив, и следующая перезагрузка станет сюрпризом.
+file:missing
Удаление, оставившее регистрацию. Безвредно, пока что-то не попробует её запустить, и подсказка о том, что раньше было на этой машине.
+signed:no peruser:no
Само по себе ничего не доказывает и является правильным местом, с которого стоит начать чтение. Второй терм отбрасывает семейства для каждого пользователя, которые иначе заполняют список почти одинаковыми записями.
+privilege:SeDebugPrivilege
Привилегия, позволяющая процессу открыть любой другой. Горстка законных служб просит её, и стоит знать, какие именно на вашей машине.
+trigger:any status:stopped
Остановлено, потому что их пока ничто не запрашивало, а не потому что что-то не так. Знать, какие это, - способ сделать так, чтобы первый список перестал тревожить.
+Спросите саму машину, когда она работала.
+Сделайте снимок в день ввода машины в эксплуатацию. Тогда должно ли это работать превращается в работало ли это, когда всё функционировало - вопрос о вашей машине, а не о машине из статьи.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... неделю, исправление или инцидент спустя
+bws snapshot diff C:\baselines\web01.json --live
+ Конфигурация сообщается отдельно от состояния выполнения, поэтому ответ - не сорок служб, которые случайно работают, а тип запуска, который кто-то изменил.
+ Аудит машины на дрейф +Каждая остановка в этом инструменте сначала показывает свой план: шаги, что падает вместе с ними и предупреждение, когда одна из них - то, без чего машина не работает. Список таких - стартовый, из семи: две половины RPC и средство запуска DCOM, диспетчер учётных записей, изоляция ключей, диспетчер сеансов и Plug and Play - и Удалённого рабочего стола в нём нет, поэтому в удалённом сеансе читайте план.
+ +Dürüst yanıt şu ki bunu size kimse söyleyemez ve öyle olduğunu iddia eden her liste sizin olmayan bir makineyi anlatır. Yanıtlanabilecek şey daha dar ve çok daha yararlı: bu makinede neyin tutmadığı ve çalışırken olandan neyin farklı olduğu.
+start:auto !status:running
Windows'a bunları başlatması söylendi ve çalışmıyorlar. Sağlıklı bir makinede bu kısa bir listedir - geç başlayıp yine duran birkaç öğe. Bunun dışındaki her şeye bir bakmaya değer.
+mismatch:running
Yapılandırma ve durum uyuşmuyor. Genellikle biri onu durdurmadan devre dışı bırakmıştır ve bir sonraki yeniden başlatma bir sürpriz olur.
+file:missing
Kaydı geride bırakan bir kaldırma. Bir şey onu başlatmaya çalışana kadar zararsız ve bu makinede eskiden ne olduğuna dair bir ipucu.
+signed:no peruser:no
Tek başına bir şeyin kanıtı değil ve okumaya başlamak için doğru yer. İkinci terim, listeyi aksi halde neredeyse aynı öğelerle dolduracak kullanıcı başına aileleri atar.
+privilege:SeDebugPrivilege
Bir işlemin diğer herhangi birini açmasına izin veren bir ayrıcalık. Bir avuç meşru hizmet onu ister ve makinenizde hangilerinin istediğini bilmeye değer.
+trigger:any status:stopped
Bir şey yanlış olduğu için değil, henüz hiçbir şey onları istemediği için durmuş. Bunların hangileri olduğunu bilmek, ilk listenin ürkütücü olmaktan çıkma yoludur.
+Makinenin kendisine sorun, çalışırken.
+Makinenin hizmete girdiği gün bir anlık görüntü alın. O zaman bu çalışıyor olmalı mı, her şey çalışırken bu çalışıyor muydu olur - bir makale içindeki bir makine hakkında değil, sizin makineniz hakkında bir soru.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... bir hafta, bir yama ya da bir olay sonra
+bws snapshot diff C:\baselines\web01.json --live
+ Yapılandırma çalışma durumundan ayrı bildirilir; bu yüzden yanıt tesadüfen açık olan kırk hizmet değil, birinin değiştirdiği başlangıç türüdür.
+ Bir makineyi sapma için denetleme +Bu araçtaki her durdurma önce planını gösterir: adımları, onlarla birlikte nelerin indiğini ve biri makinenin onsuz çalışmadığı bir şeyse bir uyarı. Bunların listesi yedilik bir başlangıç listesidir - RPC'nin iki yarısı ve DCOM başlatıcısı, hesap yöneticisi, anahtar yalıtımı, oturum yöneticisi ve tak-çalıştır - ve Uzak Masaüstü listede yok, dolayısıyla uzak bir oturumda planı okuyun.
+ +Чесна відповідь - ніхто не може вам цього сказати, а кожен список, що на це претендує, описує машину, яка не ваша. Відповісти можна на вужче й набагато корисніше запитання: що не сходиться на цій машині і що відрізняється від того, як було, коли все працювало.
+start:auto !status:running
Windows наказано запустити ці служби, а вони не працюють. На здоровій машині це короткий список - пара записів, які стартують пізно й знову зупиняються. Усе інше варто перевірити.
+mismatch:running
Конфігурація й стан розходяться. Зазвичай хтось вимкнув її, не зупинивши, і наступне перезавантаження стане сюрпризом.
+file:missing
Видалення, що залишило реєстрацію. Нешкідливе, доки щось не спробує її запустити, і підказка про те, що раніше було на цій машині.
+signed:no peruser:no
Само по собі нічого не доводить і є правильним місцем, з якого варто почати читання. Другий термін відкидає сімейства для кожного користувача, які інакше заповнюють список майже однаковими записами.
+privilege:SeDebugPrivilege
Привілей, що дозволяє процесу відкрити будь-який інший. Жменька законних служб його просить, і варто знати, які саме на вашій машині.
+trigger:any status:stopped
Зупинено, бо їх поки ніщо не запитувало, а не тому, що щось не так. Знати, які це, - спосіб зробити так, щоб перший список перестав тривожити.
+Спитайте саму машину, коли вона працювала.
+Зробіть знімок у день введення машини в експлуатацію. Тоді чи має це працювати перетворюється на чи працювало це, коли все функціонувало - запитання про вашу машину, а не про машину зі статті.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... через тиждень, виправлення чи інцидент
+bws snapshot diff C:\baselines\web01.json --live
+ Конфігурація повідомляється окремо від стану виконання, тож відповідь - не сорок служб, що випадково працюють, а тип запуску, який хтось змінив.
+ Аудит машини на дрейф +Кожна зупинка в цьому інструменті спершу показує свій план: кроки, що падає разом із ними, і попередження, коли один із них - те, без чого машина не працює. Список таких - стартовий, із семи: дві половини RPC і засіб запуску DCOM, диспетчер облікових записів, ізоляція ключів, диспетчер сеансів і Plug and Play - і Віддаленого робочого стола в ньому немає, тому у віддаленому сеансі читайте план.
+ +Câu trả lời trung thực là không ai nói cho bạn được, và mọi danh sách tự nhận làm được đều đang mô tả một máy không phải của bạn. Điều có thể trả lời hẹp hơn và hữu ích hơn nhiều: điều gì không khớp trên máy này, và điều gì khác so với lúc nó còn hoạt động.
+start:auto !status:running
Windows được bảo khởi động những dịch vụ này và chúng không chạy. Trên một máy khỏe mạnh đây là một danh sách ngắn - vài mục khởi động muộn rồi lại dừng. Bất cứ thứ gì khác đều đáng xem.
+mismatch:running
Cấu hình và trạng thái không khớp. Thường là ai đó đã vô hiệu hóa nó mà không dừng nó, và lần khởi động lại tới sẽ là một bất ngờ.
+file:missing
Một lần gỡ cài đặt để lại phần đăng ký. Vô hại cho đến khi có thứ cố khởi động nó, và là manh mối về những gì từng có trên máy này.
+signed:no peruser:no
Bản thân nó không chứng minh được gì, và là chỗ đúng để bắt đầu đọc. Thành phần thứ hai loại bỏ các họ theo người dùng, vốn sẽ lấp danh sách bằng những mục gần như trùng.
+privilege:SeDebugPrivilege
Một đặc quyền cho phép một tiến trình mở bất kỳ tiến trình nào khác. Một số ít dịch vụ hợp lệ yêu cầu nó, và đáng biết là những dịch vụ nào trên máy của bạn.
+trigger:any status:stopped
Dừng vì chưa có gì yêu cầu chúng, chứ không phải vì có gì sai. Biết chúng là những dịch vụ nào chính là cách danh sách đầu tiên thôi gây lo ngại.
+Hỏi chính cái máy, khi nó còn hoạt động.
+Chụp một bản vào ngày máy được đưa vào hoạt động. Khi đó cái này có nên chạy không trở thành cái này có chạy khi mọi thứ còn hoạt động không - một câu hỏi về máy của bạn chứ không phải về một cái máy trong một bài báo.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... một tuần, một bản vá, hay một sự cố sau
+bws snapshot diff C:\baselines\web01.json --live
+ Cấu hình được báo riêng với trạng thái chạy, nên câu trả lời không phải bốn mươi dịch vụ tình cờ đang chạy - mà là kiểu khởi động mà ai đó đã đổi.
+ Kiểm toán một máy để tìm sai lệch +Mỗi lệnh dừng trong công cụ này hiển thị kế hoạch của nó trước: các bước, những gì bị kéo theo, và một cảnh báo khi một trong số đó là thứ mà máy không hoạt động nếu thiếu. Danh sách các dịch vụ ấy là một danh sách khởi đầu gồm bảy - hai nửa của RPC và trình khởi chạy DCOM, trình quản lý tài khoản, cô lập khóa, trình quản lý phiên và plug and play - và Remote Desktop không có trong đó, nên khi qua một phiên từ xa, hãy đọc kế hoạch.
+ +诚实的回答是没人能告诉你,而每一份声称能告诉你的清单,描述的都是另一台不是你的计算机。能够回答的是一个更窄、也有用得多的问题:这台计算机上有什么对不上,以及与它正常工作时相比有什么不同。
+start:auto !status:running
Windows 被告知要启动这些服务,而它们没有在运行。在健康的计算机上这是一份很短的清单:几个启动较晚、随后又停止的条目。其他任何内容都值得看一眼。
+mismatch:running
配置与状态不一致。通常是有人禁用了它却没有停止它,下一次重启会带来意外。
+file:missing
卸载后遗留了注册信息。在有东西尝试启动它之前是无害的,也是关于这台计算机上曾经有过什么的线索。
+signed:no peruser:no
它本身不能证明任何事,却是开始阅读的合适起点。第二个检索词会去掉按用户的服务族,否则它们会让列表里充满近似重复的条目。
+privilege:SeDebugPrivilege
一种让进程能够打开任何其他进程的特权。少数合法的服务会请求它,值得知道你的计算机上是哪几个。
+trigger:any status:stopped
它们处于停止状态,是因为还没有东西请求它们,而不是因为出了什么问题。知道这些是哪些,就是让第一份清单不再令人担忧的办法。
+询问计算机本身,在它正常工作的时候。
+在计算机投入使用的那一天生成一个快照。这样,这个应该运行吗就变成了在一切正常时,这个在运行吗:一个关于你的计算机的问题,而不是关于一篇文章里那台计算机的问题。
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... 一周、一次补丁或一次事件之后
+bws snapshot diff C:\baselines\web01.json --live
+ 配置与运行状态分开报告,所以答案不是四十个恰好在运行的服务,而是某人更改过的启动类型。
+ 审计计算机的漂移 +这个工具中的每一次停止都会先展示它的计划:各个步骤、随之关闭的内容,以及当其中之一是计算机离不开的东西时的警告。这样的清单是一份七项的入门清单:RPC 的两个部分和 DCOM 启动器、账户管理器、密钥隔离、会话管理器以及即插即用,其中没有远程桌面,所以通过远程会话操作时,请阅读计划。
+誠實的回答是沒人能告訴你,而每一份聲稱能告訴你的清單,描述的都是另一台不是你的電腦。能夠回答的是一個更窄、也有用得多的問題:這台電腦上有什麼對不上,以及與它正常運作時相比有什麼不同。
+start:auto !status:running
Windows 被告知要啟動這些服務,而它們沒有在執行。在健康的電腦上這是一份很短的清單:幾個啟動較晚、隨後又停止的項目。其他任何內容都值得看一眼。
+mismatch:running
組態與狀態不一致。通常是有人停用了它卻沒有停止它,下一次重新啟動會帶來意外。
+file:missing
解除安裝後遺留了登錄資訊。在有東西嘗試啟動它之前是無害的,也是關於這台電腦上曾經有過什麼的線索。
+signed:no peruser:no
它本身不能證明任何事,卻是開始閱讀的合適起點。第二個搜尋詞會去掉依使用者的服務族,否則它們會讓清單裡充滿近似重複的項目。
+privilege:SeDebugPrivilege
一種讓處理程序能夠開啟任何其他處理程序的特殊權限。少數合法的服務會要求它,值得知道你的電腦上是哪幾個。
+trigger:any status:stopped
它們處於停止狀態,是因為還沒有東西要求它們,而不是因為出了什麼問題。知道這些是哪些,就是讓第一份清單不再令人擔憂的辦法。
+詢問電腦本身,在它正常運作的時候。
+在電腦投入使用的那一天產生一個快照。這樣,這個應該執行嗎就變成了在一切正常時,這個在執行嗎:一個關於你的電腦的問題,而不是關於一篇文章裡那台電腦的問題。
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... 一週、一次修補程式或一次事件之後
+bws snapshot diff C:\baselines\web01.json --live
+ 組態與執行狀態分開回報,所以答案不是四十個恰好在執行的服務,而是某人變更過的啟動類型。
+ 稽核電腦的漂移 +這個工具中的每一次停止都會先展示它的計畫:各個步驟、隨之關閉的內容,以及當其中之一是電腦離不開的東西時的警告。這樣的清單是一份七項的入門清單:RPC 的兩個部分和 DCOM 啟動器、帳戶管理員、金鑰隔離、工作階段管理員以及隨插即用,其中沒有遠端桌面,所以透過遠端工作階段操作時,請閱讀計畫。
+