--exit-code, denn Drift zu finden ist wofür dieses Werkzeug da ist, und sie zu finden ist kein Fehler.",
+
+ "switch.query": "Die Liste mit der Abfragesprache eingrenzen.",
+ "switch.signatures": "Lesen, wer jede Programmdatei signiert hat und ob Windows ihr vertraut. Über einen ganzen Rechner mehrere Sekunden, daher aus, solange nicht danach gefragt wird - und eine Abfrage zu Signaturen schaltet es von selbst ein.",
+ "switch.memory": "Lesen, was der Prozess jedes laufenden Eintrags verbraucht. Standardmäßig aus, weil es eine Messung und keine Einstellung ist: Eine Sekunde später ist sie anders.",
+ "switch.required-by": "Lesen, welche Einträge ausfallen, wenn einer angehalten wird, direkt von Windows erfragt und nicht aus dem abgeleitet, was alle angeben. Ein Aufruf pro Eintrag, daher aus, solange nicht danach gefragt wird. show und snapshot create lesen es jedes Mal.",
+ "switch.follow-network": "Das Werkzeug überhaupt über diesen Rechner hinaus greifen lassen - ein Startpfad auf der Freigabe von jemand anderem und ein Zertifikat, das dieser Rechner noch nicht hat. Aus Sicherheitsgründen standardmäßig aus: Eine nicht erreichbare Freigabe kostet einundzwanzig Sekunden und authentifiziert sich als der, der es ausgeführt hat, und ein Zertifikat zu holen ist eine Verbindung zu einem Dritten mitten in einer gewöhnlichen Auflistung. Ohne es wird eine Signatur gegen das geprüft, was hier ist, und ein Ergebnis, das durch Nichtnachsehen entstanden sein könnte, wird als ungelesen gemeldet und nicht als Urteil.",
+ "switch.force": "Bei kill den Prozess sofort beenden, ohne höflich zu fragen - die Vorschau zeigt dann einen Schritt statt zwei. Bei snapshot create einen bereits vorhandenen Snapshot ersetzen - eine Datei, die kein Snapshot ist, wird nie ersetzt.",
+ "switch.restart": "Bei kill den Eintrag zurückbringen, sobald der Prozess weg ist, samt allem, was ihn teilte.",
+ "switch.stop": "Bei start-type und nur neben disabled den Eintrag im selben Plan anhalten, sobald die Einstellung geschrieben ist. Ein Starttyp ändert den nächsten Start und jetzt nichts, daher läuft ein laufender Eintrag, der auf deaktiviert gesetzt wird, ohne ihn weiter.",
+ "switch.full": "Bei show auch die Felder ausgeben, die wirklich leer sind. Ein Feld, das niemand lesen konnte, wird in jedem Fall ausgegeben.",
+ "switch.components": "Bei license aus dem Hinweis jede Komponente in dieser ausführbaren Datei machen, mit Version, Lizenz und Herkunft. Dieselbe Menge, die die neben dem Download veröffentlichte Stückliste trägt, weil beide aus einem Register erzeugt werden.",
+ "switch.json": "Dasselbe Dokument, maschinenlesbar, auf der Standardausgabe.",
+ "switch.note": "Wofür der Snapshot erstellt wurde, in der Datei aufbewahrt.",
+ "switch.exit-code": "Mit Code 5 enden, wenn sich die Konfiguration unterscheidet - ein Eintrag hinzugefügt oder entfernt, oder einer anders eingerichtet. Der Laufzustand allein zählt nicht. Standardmäßig aus, damit ein Skript, das nur die Unterschiede ausgegeben haben will, nicht darüber stolpert, welche zu finden.",
+ "switch.live": "Die Datei mit diesem Rechner vergleichen, wie er jetzt ist, statt mit einer zweiten Datei.",
+ "switch.timing": "Wie lange jeder Teil des Lesens gedauert hat, auf der Standardfehlerausgabe.",
+ "switch.dry-run": "Den Plan ausgeben und nichts ändern. Es ist derselbe Plan, den eine Ausführung abarbeitet - es gibt keinen zweiten Codepfad für den Ernstfall.",
+ "switch.dependents": "Die Dienste, die ausfallen würden, als eigene Schritte in den Plan aufnehmen.",
+ "switch.timeout": "Wie lange ein Schritt ohne Fortschritt dauern darf, bevor er aufgegeben wird, jedes Mal neu gezählt, wenn der Dienst Fortschritt meldet. Sechzig Sekunden, sofern Sie nichts anderes sagen. Ein Dienst, der weiter Fortschritt meldet, wird beobachtet, so lange es dauert. Das Ablaufen ist das Ende des Beobachtens und kein Fehler, und der Bericht sagt, wo der Eintrag zurückgelassen wurde.",
+
+ "field.name": "der Dienstname, unter dem Windows ihn kennt",
+ "field.display": "der Anzeigename, wie dieses Windows ihn schreibt",
+ "field.description": "was der Eintrag über sich selbst sagt",
+ "field.type": "was für ein Eintrag es ist",
+ "field.peruser": "ob es eine der Familien pro Benutzer ist, von denen Windows je Sitzung eine Kopie anlegt",
+ "field.status": "was er gerade tut",
+ "field.start": "was der Manager beim nächsten Start mit ihm tut",
+ "field.account": "das Konto, unter dem er läuft, wie der Manager es schreibt",
+ "field.pid": "der Prozess, in dem er läuft",
+ "field.trigger": "eine Bedingung, die ihn startet oder beendet",
+ "field.path": "die Befehlszeile, die der Manager startet",
+ "field.file": "ob die Datei, die er ausführt, auf dem Datenträger liegt",
+ "field.signed": "was Windows von der Signatur der Datei hält, ohne die Sperrung zu prüfen",
+ "field.publisher": "wer die Datei signiert hat - nur durch eine vertrauenswürdige Signatur bewiesen",
+ "field.privilege": "ein Privileg, das der Eintrag verlangt",
+ "field.dependson": "was dieser braucht",
+ "field.requiredby": "was ausfällt, wenn dieser anhält",
+ "field.sidtype": "der Typ der Dienst-SID",
+ "field.sddl": "der Sicherheitsdeskriptor als Text",
+ "field.memory": "was sein Prozess verbraucht",
+ "field.mismatch": "Konfiguration und Zustand, die nicht zusammenpassen",
+
+ "field.open.name": "Text",
+ "field.open.display": "Text",
+ "field.open.description": "Text",
+ "field.open.account": "Text, z. B. localsystem",
+ "field.open.pid": "eine Zahl: 1234, >1000, 100-200",
+ "field.open.path": "Text",
+ "field.open.publisher": "Text",
+ "field.open.privilege": "Text, z. B. SeDebugPrivilege",
+ "field.open.dependson": "ein Dienstname",
+ "field.open.requiredby": "ein Dienstname",
+ "field.open.sddl": "Text",
+ "field.open.memory": "eine Größe mit Einheit: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "es gibt einen Wert, egal welchen",
+ "reserved.none": "es gibt wirklich keinen Wert - der Eintrag hat keinen",
+ "reserved.unreadable": "das Werkzeug konnte dieses Feld nicht lesen oder hat es nicht gelesen, und das ist eine Frage, die services.msc nicht einmal stellen kann"
+}
diff --git a/site/i18n/es.json b/site/i18n/es.json
new file mode 100644
index 0000000..a204eca
--- /dev/null
+++ b/site/i18n/es.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": "Saltar al contenido",
+ "chrome.nav": "Sitio",
+ "chrome.language": "Idioma",
+
+ "chrome.footer.product": "Producto",
+ "chrome.footer.guides": "Guías",
+ "chrome.footer.project": "Proyecto",
+ "chrome.footer.source": "Código fuente en GitHub",
+ "chrome.footer.releases": "Versiones",
+ "chrome.footer.issues": "Seguimiento de incidencias",
+ "chrome.footer.security": "Informar de un problema de seguridad",
+ "chrome.footer.support": "Apoyar el proyecto",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Publicado bajo la Licencia Pública General de GNU, versión 3. Creado con un flujo de trabajo asistido por IA.",
+ "chrome.legal.trademark": "{{product}} no está afiliado a Microsoft, ni respaldado ni patrocinado por Microsoft. Windows es una marca del grupo de empresas de Microsoft, y el nombre se usa aquí solo para decir qué administra la herramienta.",
+ "chrome.legal.privacy": "Este sitio no establece cookies, no ejecuta scripts y no carga nada de ningún otro sitio.",
+
+ "table.head.code": "Código",
+ "table.head.meaning": "Significado",
+ "table.head.switch": "Opción",
+ "table.head.what": "Qué hace",
+ "table.head.where": "Dónde actúa",
+ "table.head.field": "Campo",
+ "table.head.asks": "Pregunta por",
+ "table.head.values": "Valores",
+
+ "exit.ok": "Hecho, y todo llegó adonde iba.",
+ "exit.runtime": "La herramienta falló: no pudo hacer lo que se le pidió, por una razón que tiene que ver con la herramienta y no con el plan.",
+ "exit.usage": "La línea de comandos era incorrecta. A un comando mal escrito se le ofrece el que probablemente quería.",
+ "exit.incomplete": "El plan era bueno, se ejecutó, y algo de él no llegó adonde iba: el administrador rechazó, o la sesión no tenía derechos sobre ello.",
+ "exit.interrupted": "Alguien detuvo la ejecución a mano. Distinto de cero aunque cada paso hubiera llegado, para que un script envolvente no trate una ejecución interrumpida como limpia.",
+ "exit.differences": "Se ejecutó una comparación y encontró la configuración desviada: una entrada añadida o eliminada, o una configurada de otro modo. El estado de ejecución por sí solo no es deriva. Solo con --exit-code, porque encontrar deriva es para lo que sirve esta herramienta, y encontrarla no es un fallo.",
+
+ "switch.query": "Acotar el listado con el lenguaje de consulta.",
+ "switch.signatures": "Leer quién firmó cada ejecutable y si Windows confía en él. Varios segundos en todo un equipo, así que está desactivado salvo que se pida, y una consulta sobre firmas lo activa por sí sola.",
+ "switch.memory": "Leer lo que usa el proceso de cada entrada en ejecución. Desactivado por defecto porque es una medición y no un ajuste: un segundo después es distinta.",
+ "switch.required-by": "Leer qué entradas dejan de funcionar si una se detiene, preguntado directamente a Windows en lugar de deducido de lo que declara cada una. Una llamada por entrada, así que está desactivado salvo que se pida. show y snapshot create lo leen siempre.",
+ "switch.follow-network": "Dejar que la herramienta salga de este equipo, sea como sea: una ruta de lanzamiento que vive en el recurso compartido de otra persona, y un certificado que este equipo aún no tiene. Desactivado por defecto por seguridad: un recurso compartido inalcanzable cuesta veintiún segundos y se autentica como quien lo ejecutó, y obtener un certificado es una conexión con un tercero en medio de un listado corriente. Sin él, una firma se comprueba contra lo que hay aquí, y un resultado que pudo deberse a no mirar se informa como no leído y no como un veredicto.",
+ "switch.force": "En kill, terminar el proceso de inmediato sin pedirlo con cortesía: la vista previa muestra entonces un paso en lugar de dos. En snapshot create, sustituir una instantánea que ya existe; un archivo que no es una instantánea nunca se sustituye.",
+ "switch.restart": "En kill, devolver la entrada a su sitio una vez desaparecido el proceso, junto con todo lo que lo compartía.",
+ "switch.stop": "En start-type, y solo junto a disabled, detener la entrada en el mismo plan una vez escrito el ajuste. Un tipo de inicio cambia el próximo arranque y nada ahora, así que sin esta opción una entrada en ejecución configurada como deshabilitada sigue ejecutándose.",
+ "switch.full": "En show, imprimir también los campos realmente vacíos. Un campo que nadie pudo leer se imprime en cualquier caso.",
+ "switch.components": "En license, convertir el aviso en cada componente de este ejecutable con su versión, su licencia y su procedencia. El mismo conjunto que lleva la lista de materiales publicada junto a la descarga, porque ambos se generan desde un único registro.",
+ "switch.json": "El mismo documento, legible por máquina, por la salida estándar.",
+ "switch.note": "Para qué se tomó la instantánea, guardado dentro del archivo.",
+ "switch.exit-code": "Terminar con el código 5 cuando la configuración difiere: una entrada añadida o eliminada, o una configurada de otro modo. El estado de ejecución por sí solo no cuenta. Desactivado por defecto, para que un script que solo quiere imprimir las diferencias no tropiece por encontrar alguna.",
+ "switch.live": "Comparar el archivo con este equipo tal como está ahora, en lugar de con un segundo archivo.",
+ "switch.timing": "Cuánto tardó cada parte de la lectura, por el error estándar.",
+ "switch.dry-run": "Imprimir el plan y no cambiar nada. Es el mismo plan que ejecuta una ejecución: no hay un segundo camino de código para la ejecución real.",
+ "switch.dependents": "Poner en el plan, como pasos propios, los servicios que dejarían de funcionar.",
+ "switch.timeout": "Cuánto puede durar un paso sin progreso antes de abandonarlo, contado de nuevo cada vez que el servicio informa de progreso. Sesenta segundos salvo que diga otra cosa. Un servicio que sigue informando de progreso se vigila todo el tiempo que haga falta. Agotarse es el final de la vigilancia y no un fallo, y el informe dice dónde quedó la entrada.",
+
+ "field.name": "el nombre del servicio, por el que lo identifica Windows",
+ "field.display": "el nombre para mostrar, como lo escribe este Windows",
+ "field.description": "lo que la entrada dice de sí misma",
+ "field.type": "qué clase de entrada es",
+ "field.peruser": "si es una de las familias por usuario de las que Windows hace una copia por sesión",
+ "field.status": "lo que está haciendo ahora mismo",
+ "field.start": "lo que hace el administrador con ella en el próximo arranque",
+ "field.account": "la cuenta con la que se ejecuta, como la escribe el administrador",
+ "field.pid": "el proceso en el que se ejecuta",
+ "field.trigger": "una condición que la inicia o la detiene",
+ "field.path": "la línea de comandos que lanza el administrador",
+ "field.file": "si el archivo que ejecuta está en el disco",
+ "field.signed": "lo que Windows piensa de la firma del archivo, sin comprobar la revocación",
+ "field.publisher": "quién firmó el archivo: solo demostrado por una firma de confianza",
+ "field.privilege": "un privilegio que pide la entrada",
+ "field.dependson": "lo que necesita esta",
+ "field.requiredby": "lo que deja de funcionar si esta se detiene",
+ "field.sidtype": "el tipo de SID del servicio",
+ "field.sddl": "el descriptor de seguridad, como texto",
+ "field.memory": "lo que usa su proceso",
+ "field.mismatch": "configuración y estado que no concuerdan",
+
+ "field.open.name": "texto",
+ "field.open.display": "texto",
+ "field.open.description": "texto",
+ "field.open.account": "texto, p. ej. localsystem",
+ "field.open.pid": "un número: 1234, >1000, 100-200",
+ "field.open.path": "texto",
+ "field.open.publisher": "texto",
+ "field.open.privilege": "texto, p. ej. SeDebugPrivilege",
+ "field.open.dependson": "un nombre de servicio",
+ "field.open.requiredby": "un nombre de servicio",
+ "field.open.sddl": "texto",
+ "field.open.memory": "un tamaño con unidad: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "hay un valor, sea cual sea",
+ "reserved.none": "realmente no hay ningún valor: la entrada no tiene ninguno",
+ "reserved.unreadable": "la herramienta no pudo leer este campo, o no lo ha leído, lo que es una pregunta que services.msc ni siquiera puede hacer"
+}
diff --git a/site/i18n/fr.json b/site/i18n/fr.json
new file mode 100644
index 0000000..5088862
--- /dev/null
+++ b/site/i18n/fr.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": "Aller au contenu",
+ "chrome.nav": "Site",
+ "chrome.language": "Langue",
+
+ "chrome.footer.product": "Produit",
+ "chrome.footer.guides": "Guides",
+ "chrome.footer.project": "Projet",
+ "chrome.footer.source": "Code source sur GitHub",
+ "chrome.footer.releases": "Versions",
+ "chrome.footer.issues": "Suivi des tickets",
+ "chrome.footer.security": "Signaler un problème de sécurité",
+ "chrome.footer.support": "Soutenir le projet",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Publié sous la licence publique générale GNU, version 3. Réalisé avec un flux de travail assisté par IA.",
+ "chrome.legal.trademark": "{{product}} n'est ni affilié à Microsoft, ni approuvé, ni parrainé par Microsoft. Windows est une marque du groupe de sociétés Microsoft, et le nom n'est utilisé ici que pour dire ce que l'outil gère.",
+ "chrome.legal.privacy": "Ce site ne dépose aucun cookie, n'exécute aucun script et ne charge rien depuis ailleurs.",
+
+ "table.head.code": "Code",
+ "table.head.meaning": "Signification",
+ "table.head.switch": "Option",
+ "table.head.what": "Ce qu'elle fait",
+ "table.head.where": "Où elle agit",
+ "table.head.field": "Champ",
+ "table.head.asks": "Interroge",
+ "table.head.values": "Valeurs",
+
+ "exit.ok": "Terminé, et tout est arrivé là où cela devait aller.",
+ "exit.runtime": "L'outil a échoué - il n'a pas pu faire ce qui lui était demandé, pour une raison qui tient à l'outil et non au plan.",
+ "exit.usage": "La ligne de commande était erronée. Une commande mal orthographiée se voit proposer celle que vous vouliez probablement.",
+ "exit.incomplete": "Le plan était bon, il s'est exécuté, et quelque chose dedans n'est pas arrivé là où cela devait aller - le gestionnaire a refusé, ou la session n'y avait pas droit.",
+ "exit.interrupted": "Quelqu'un a arrêté l'exécution à la main. Non nul même si chaque étape était arrivée, de sorte qu'un script enveloppant ne traite pas une exécution interrompue comme propre.",
+ "exit.differences": "Une comparaison s'est exécutée et a trouvé la configuration dérivée - une entrée ajoutée ou supprimée, ou une entrée configurée autrement. L'état d'exécution seul n'est pas une dérive. Seulement avec --exit-code, car trouver une dérive est ce pour quoi cet outil existe, et la trouver n'est pas un échec.",
+
+ "switch.query": "Affiner la liste avec le langage de requête.",
+ "switch.signatures": "Lire qui a signé chaque exécutable et si Windows lui fait confiance. Plusieurs secondes sur toute une machine, donc désactivé sauf demande - et une requête sur les signatures l'active d'elle-même.",
+ "switch.memory": "Lire ce que consomme le processus de chaque entrée en marche. Désactivé par défaut parce que c'est une mesure et non un réglage : elle est différente une seconde plus tard.",
+ "switch.required-by": "Lire quelles entrées cessent de fonctionner si l'une est arrêtée, demandé directement à Windows plutôt que déduit de ce que chacun déclare. Un appel par entrée, donc désactivé sauf demande. show et snapshot create le lisent à chaque fois.",
+ "switch.follow-network": "Laisser l'outil sortir de cette machine, quoi que ce soit - un chemin de lancement situé sur le partage de quelqu'un d'autre, et un certificat que cette machine n'a pas déjà. Désactivé par défaut par sécurité : un partage injoignable coûte vingt et une secondes et s'authentifie comme celui qui a lancé l'outil, et récupérer un certificat est une connexion à un tiers au milieu d'un simple listage. Sans lui, une signature est vérifiée contre ce qui est ici, et un résultat qui pourrait venir d'un défaut de recherche est signalé comme non lu plutôt que comme un verdict.",
+ "switch.force": "Sur kill, terminer le processus tout de suite sans demander poliment - l'aperçu montre alors une étape au lieu de deux. Sur snapshot create, remplacer un instantané déjà présent - un fichier qui n'est pas un instantané n'est jamais remplacé.",
+ "switch.restart": "Sur kill, remettre l'entrée en route une fois le processus disparu, avec tout ce qui le partageait.",
+ "switch.stop": "Sur start-type, et seulement à côté de disabled, arrêter l'entrée dans le même plan une fois le réglage écrit. Un type de démarrage change le prochain démarrage et rien maintenant, donc sans cette option une entrée en marche réglée sur désactivé continue de tourner.",
+ "switch.full": "Sur show, afficher aussi les champs réellement vides. Un champ que personne n'a pu lire est affiché dans tous les cas.",
+ "switch.components": "Sur license, transformer la mention en chaque composant de cet exécutable avec sa version, sa licence et son origine. Le même ensemble que porte la nomenclature publiée à côté du téléchargement, parce que les deux sont produites depuis un seul registre.",
+ "switch.json": "Le même document, lisible par une machine, sur la sortie standard.",
+ "switch.note": "Ce pour quoi l'instantané a été pris, conservé dans le fichier.",
+ "switch.exit-code": "Se terminer par le code 5 quand la configuration diffère - une entrée ajoutée ou supprimée, ou une entrée configurée autrement. L'état d'exécution seul ne compte pas. Désactivé par défaut, pour qu'un script qui veut seulement les différences imprimées ne soit pas pris de court d'en trouver.",
+ "switch.live": "Comparer le fichier à cette machine telle qu'elle est maintenant, plutôt qu'à un second fichier.",
+ "switch.timing": "Combien de temps a pris chaque partie de la lecture, sur l'erreur standard.",
+ "switch.dry-run": "Afficher le plan et ne rien changer. C'est le même plan qu'exécute une vraie exécution - il n'y a pas de second chemin de code pour la vraie chose.",
+ "switch.dependents": "Mettre dans le plan les services qui cesseraient de fonctionner, comme des étapes à part entière.",
+ "switch.timeout": "Combien de temps une étape peut durer sans progrès avant d'être abandonnée, recompté à chaque fois que le service signale un progrès. Soixante secondes sauf indication contraire. Un service qui continue de signaler un progrès est surveillé aussi longtemps qu'il le faut. Le délai écoulé est la fin de la surveillance et non un échec, et le rapport dit où l'entrée a été laissée.",
+
+ "field.name": "le nom du service, celui par lequel Windows l'identifie",
+ "field.display": "le nom affiché, tel que ce Windows l'écrit",
+ "field.description": "ce que l'entrée dit d'elle-même",
+ "field.type": "quel genre d'entrée c'est",
+ "field.peruser": "si c'est l'une des familles par utilisateur dont Windows fait une copie par session",
+ "field.status": "ce qu'elle fait en ce moment",
+ "field.start": "ce que le gestionnaire en fait au prochain démarrage",
+ "field.account": "le compte sous lequel elle s'exécute, tel que le gestionnaire l'écrit",
+ "field.pid": "le processus dans lequel elle s'exécute",
+ "field.trigger": "une condition qui la démarre ou l'arrête",
+ "field.path": "la ligne de commande que le gestionnaire lance",
+ "field.file": "si le fichier qu'elle exécute est sur le disque",
+ "field.signed": "ce que Windows pense de la signature du fichier, sans vérifier la révocation",
+ "field.publisher": "qui a signé le fichier - prouvé seulement par une signature approuvée",
+ "field.privilege": "un privilège que l'entrée demande",
+ "field.dependson": "ce dont celle-ci a besoin",
+ "field.requiredby": "ce qui cesse de fonctionner si celle-ci s'arrête",
+ "field.sidtype": "le type de SID du service",
+ "field.sddl": "le descripteur de sécurité, sous forme de texte",
+ "field.memory": "ce que consomme son processus",
+ "field.mismatch": "une configuration et un état qui ne concordent pas",
+
+ "field.open.name": "texte",
+ "field.open.display": "texte",
+ "field.open.description": "texte",
+ "field.open.account": "texte, p. ex. localsystem",
+ "field.open.pid": "un nombre : 1234, >1000, 100-200",
+ "field.open.path": "texte",
+ "field.open.publisher": "texte",
+ "field.open.privilege": "texte, p. ex. SeDebugPrivilege",
+ "field.open.dependson": "un nom de service",
+ "field.open.requiredby": "un nom de service",
+ "field.open.sddl": "texte",
+ "field.open.memory": "une taille avec une unité : 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "il y a une valeur, quelle qu'elle soit",
+ "reserved.none": "il n'y a réellement aucune valeur - l'entrée n'en a pas",
+ "reserved.unreadable": "l'outil n'a pas pu lire ce champ, ou ne l'a pas lu, ce qui est une question que services.msc ne sait même pas poser"
+}
diff --git a/site/i18n/it.json b/site/i18n/it.json
new file mode 100644
index 0000000..f0444fd
--- /dev/null
+++ b/site/i18n/it.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": "Vai al contenuto",
+ "chrome.nav": "Sito",
+ "chrome.language": "Lingua",
+
+ "chrome.footer.product": "Prodotto",
+ "chrome.footer.guides": "Guide",
+ "chrome.footer.project": "Progetto",
+ "chrome.footer.source": "Codice sorgente su GitHub",
+ "chrome.footer.releases": "Versioni",
+ "chrome.footer.issues": "Tracker delle segnalazioni",
+ "chrome.footer.security": "Segnalare un problema di sicurezza",
+ "chrome.footer.support": "Sostenere il progetto",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Pubblicato con licenza GNU General Public License, versione 3. Realizzato con un flusso di lavoro assistito dall'IA.",
+ "chrome.legal.trademark": "{{product}} non è affiliato a Microsoft, né approvato né sponsorizzato da Microsoft. Windows è un marchio del gruppo di società Microsoft, e il nome è usato qui solo per dire cosa gestisce lo strumento.",
+ "chrome.legal.privacy": "Questo sito non imposta cookie, non esegue script e non carica nulla da nessun altro luogo.",
+
+ "table.head.code": "Codice",
+ "table.head.meaning": "Significato",
+ "table.head.switch": "Opzione",
+ "table.head.what": "Cosa fa",
+ "table.head.where": "Dove agisce",
+ "table.head.field": "Campo",
+ "table.head.asks": "Interroga su",
+ "table.head.values": "Valori",
+
+ "exit.ok": "Fatto, e tutto è arrivato dove doveva andare.",
+ "exit.runtime": "Lo strumento è fallito - non ha potuto fare ciò che gli era stato chiesto, per una ragione che riguarda lo strumento e non il piano.",
+ "exit.usage": "La riga di comando era sbagliata. A un comando scritto male viene offerto quello che probabilmente voleva.",
+ "exit.incomplete": "Il piano era buono, è stato eseguito, e qualcosa al suo interno non è arrivato dove doveva andare - il gestore ha rifiutato, o la sessione non aveva diritti su di esso.",
+ "exit.interrupted": "Qualcuno ha fermato l'esecuzione a mano. Diverso da zero anche se ogni passaggio era arrivato, così uno script che lo avvolge non tratta un'esecuzione interrotta come pulita.",
+ "exit.differences": "Un confronto è stato eseguito e ha trovato la configurazione alla deriva - una voce aggiunta o rimossa, o una impostata diversamente. Lo stato di esecuzione da solo non è deriva. Solo con --exit-code, perché trovare la deriva è ciò per cui serve questo strumento, e trovarla non è un fallimento.",
+
+ "switch.query": "Restringere l'elenco con il linguaggio di query.",
+ "switch.signatures": "Leggere chi ha firmato ogni eseguibile e se Windows si fida. Parecchi secondi su un'intera macchina, quindi è disattivato se non richiesto - e una query sulle firme lo attiva da sola.",
+ "switch.memory": "Leggere cosa usa il processo di ogni voce in esecuzione. Disattivato per impostazione predefinita perché è una misurazione e non un'impostazione: un secondo dopo è diversa.",
+ "switch.required-by": "Leggere quali voci smettono di funzionare se una viene fermata, chiesto direttamente a Windows anziché dedotto da ciò che ognuna dichiara. Una chiamata per voce, quindi disattivato se non richiesto. show e snapshot create lo leggono ogni volta.",
+ "switch.follow-network": "Lasciare che lo strumento esca da questa macchina, in qualsiasi modo - un percorso di avvio che vive sulla condivisione di qualcun altro, e un certificato che questa macchina non ha già. Disattivato per impostazione predefinita per sicurezza: una condivisione irraggiungibile costa ventuno secondi e si autentica come chi l'ha eseguito, e recuperare un certificato è una connessione a una terza parte nel mezzo di un normale elenco. Senza di esso una firma viene controllata contro ciò che c'è qui, e un risultato che potrebbe essere causato dal non aver guardato viene segnalato come non letto e non come un verdetto.",
+ "switch.force": "Su kill, terminare subito il processo senza chiedere con garbo - l'anteprima mostra allora un passaggio invece di due. Su snapshot create, sostituire uno snapshot già presente - un file che non è uno snapshot non viene mai sostituito.",
+ "switch.restart": "Su kill, rimettere la voce a posto una volta sparito il processo, insieme a tutto ciò che lo condivideva.",
+ "switch.stop": "Su start-type, e solo accanto a disabled, fermare la voce nello stesso piano una volta scritta l'impostazione. Un tipo di avvio cambia il prossimo avvio e nulla adesso, quindi senza di esso una voce in esecuzione impostata su disabilitato continua a girare.",
+ "switch.full": "Su show, stampare anche i campi davvero vuoti. Un campo che nessuno ha potuto leggere viene stampato comunque.",
+ "switch.components": "Su license, trasformare l'avviso in ogni componente di questo eseguibile con la sua versione, la sua licenza e la sua provenienza. Lo stesso insieme che porta la distinta dei materiali pubblicata accanto al download, perché entrambe sono prodotte da un unico registro.",
+ "switch.json": "Lo stesso documento, leggibile da una macchina, sullo standard output.",
+ "switch.note": "Per cosa è stato preso lo snapshot, conservato dentro il file.",
+ "switch.exit-code": "Terminare con il codice 5 quando la configurazione differisce - una voce aggiunta o rimossa, o una impostata diversamente. Lo stato di esecuzione da solo non conta. Disattivato per impostazione predefinita, così uno script che vuole solo le differenze stampate non inciampa nel trovarne.",
+ "switch.live": "Confrontare il file con questa macchina com'è adesso, anziché con un secondo file.",
+ "switch.timing": "Quanto è durata ogni parte della lettura, sullo standard error.",
+ "switch.dry-run": "Stampare il piano e non cambiare nulla. È lo stesso piano che esegue un'esecuzione - non esiste un secondo percorso di codice per l'esecuzione vera.",
+ "switch.dependents": "Mettere nel piano, come passaggi a sé, i servizi che smetterebbero di funzionare.",
+ "switch.timeout": "Quanto può durare un passaggio senza progressi prima che venga abbandonato, contato di nuovo ogni volta che il servizio segnala un progresso. Sessanta secondi a meno che si dica altro. Un servizio che continua a segnalare progressi viene osservato per tutto il tempo necessario. Scadere è la fine dell'osservazione e non un fallimento, e il rapporto dice dove è stata lasciata la voce.",
+
+ "field.name": "il nome del servizio, quello con cui Windows lo identifica",
+ "field.display": "il nome visualizzato, come lo scrive questo Windows",
+ "field.description": "ciò che la voce dice di sé",
+ "field.type": "che tipo di voce è",
+ "field.peruser": "se è una delle famiglie per utente di cui Windows fa una copia per sessione",
+ "field.status": "cosa sta facendo in questo momento",
+ "field.start": "cosa fa il gestore con essa al prossimo avvio",
+ "field.account": "l'account con cui gira, come lo scrive il gestore",
+ "field.pid": "il processo in cui gira",
+ "field.trigger": "una condizione che la avvia o la ferma",
+ "field.path": "la riga di comando che il gestore avvia",
+ "field.file": "se il file che esegue è sul disco",
+ "field.signed": "cosa pensa Windows della firma del file, senza controllare la revoca",
+ "field.publisher": "chi ha firmato il file - dimostrato solo da una firma affidabile",
+ "field.privilege": "un privilegio che la voce chiede",
+ "field.dependson": "di cosa ha bisogno questa",
+ "field.requiredby": "cosa smette di funzionare se questa si ferma",
+ "field.sidtype": "il tipo di SID del servizio",
+ "field.sddl": "il descrittore di sicurezza, come testo",
+ "field.memory": "cosa usa il suo processo",
+ "field.mismatch": "configurazione e stato che non concordano",
+
+ "field.open.name": "testo",
+ "field.open.display": "testo",
+ "field.open.description": "testo",
+ "field.open.account": "testo, ad es. localsystem",
+ "field.open.pid": "un numero: 1234, >1000, 100-200",
+ "field.open.path": "testo",
+ "field.open.publisher": "testo",
+ "field.open.privilege": "testo, ad es. SeDebugPrivilege",
+ "field.open.dependson": "un nome di servizio",
+ "field.open.requiredby": "un nome di servizio",
+ "field.open.sddl": "testo",
+ "field.open.memory": "una dimensione con unità: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "c'è un valore, qualunque sia",
+ "reserved.none": "non c'è davvero alcun valore - la voce non ne ha",
+ "reserved.unreadable": "lo strumento non ha potuto leggere questo campo, o non lo ha letto, il che è una domanda che services.msc non sa nemmeno porre"
+}
diff --git a/site/i18n/pt-br.json b/site/i18n/pt-br.json
new file mode 100644
index 0000000..3c5bdee
--- /dev/null
+++ b/site/i18n/pt-br.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": "Ir para o conteúdo",
+ "chrome.nav": "Site",
+ "chrome.language": "Idioma",
+
+ "chrome.footer.product": "Produto",
+ "chrome.footer.guides": "Guias",
+ "chrome.footer.project": "Projeto",
+ "chrome.footer.source": "Código-fonte no GitHub",
+ "chrome.footer.releases": "Versões",
+ "chrome.footer.issues": "Rastreador de problemas",
+ "chrome.footer.security": "Relatar um problema de segurança",
+ "chrome.footer.support": "Apoiar o projeto",
+
+ "chrome.legal.licence": "Copyright (C) 2026 DonislawDev. Publicado sob a Licença Pública Geral GNU, versão 3. Feito com um fluxo de trabalho assistido por IA.",
+ "chrome.legal.trademark": "O {{product}} não é afiliado, endossado nem patrocinado pela Microsoft. Windows é uma marca do grupo de empresas Microsoft, e o nome é usado aqui apenas para dizer o que a ferramenta gerencia.",
+ "chrome.legal.privacy": "Este site não define cookies, não executa scripts e não carrega nada de nenhum outro lugar.",
+
+ "table.head.code": "Código",
+ "table.head.meaning": "Significado",
+ "table.head.switch": "Opção",
+ "table.head.what": "O que faz",
+ "table.head.where": "Onde atua",
+ "table.head.field": "Campo",
+ "table.head.asks": "Pergunta sobre",
+ "table.head.values": "Valores",
+
+ "exit.ok": "Feito, e tudo chegou aonde ia.",
+ "exit.runtime": "A ferramenta falhou - não conseguiu fazer o que foi pedido, por um motivo que é da ferramenta e não do plano.",
+ "exit.usage": "A linha de comando estava errada. A um comando digitado errado é oferecido o que você provavelmente quis dizer.",
+ "exit.incomplete": "O plano era bom, foi executado, e algo nele não chegou aonde ia - o gerenciador recusou, ou a sessão não tinha direitos sobre aquilo.",
+ "exit.interrupted": "Alguém parou a execução à mão. Diferente de zero mesmo que cada etapa tenha chegado, para que um script em volta não trate uma execução interrompida como limpa.",
+ "exit.differences": "Uma comparação rodou e encontrou a configuração desviada - uma entrada adicionada ou removida, ou uma configurada de outro jeito. O estado de execução sozinho não é deriva. Somente com --exit-code, porque encontrar deriva é para o que esta ferramenta serve, e encontrá-la não é uma falha.",
+
+ "switch.query": "Restringir a listagem com a linguagem de consulta.",
+ "switch.signatures": "Ler quem assinou cada executável e se o Windows confia nele. Vários segundos em uma máquina inteira, então fica desligado a menos que seja pedido - e uma consulta sobre assinaturas o liga sozinha.",
+ "switch.memory": "Ler o que o processo de cada entrada em execução está usando. Desligado por padrão porque é uma medição e não uma configuração: um segundo depois ela é diferente.",
+ "switch.required-by": "Ler quais entradas deixam de funcionar se uma for parada, perguntado diretamente ao Windows em vez de deduzido do que cada uma declara. Uma chamada por entrada, então fica desligado a menos que seja pedido. show e snapshot create o leem toda vez.",
+ "switch.follow-network": "Deixar a ferramenta sair desta máquina, de qualquer modo - um caminho de lançamento que vive no compartilhamento de outra pessoa, e um certificado que esta máquina ainda não tem. Desligado por padrão por segurança: um compartilhamento inalcançável custa vinte e um segundos e se autentica como quem executou, e buscar um certificado é uma conexão com um terceiro no meio de uma listagem comum. Sem ele, uma assinatura é verificada contra o que há aqui, e um resultado que pode ter sido causado por não olhar é informado como não lido e não como um veredito.",
+ "switch.force": "No kill, encerrar o processo na hora sem pedir com educação - a pré-visualização mostra então uma etapa em vez de duas. No snapshot create, substituir um instantâneo que já existe - um arquivo que não é um instantâneo nunca é substituído.",
+ "switch.restart": "No kill, trazer a entrada de volta depois que o processo some, junto com tudo o que o dividia.",
+ "switch.stop": "No start-type, e só ao lado de disabled, parar a entrada no mesmo plano depois que a configuração é gravada. Um tipo de inicialização muda a próxima inicialização e nada agora, então sem ele uma entrada em execução configurada como desabilitada continua rodando.",
+ "switch.full": "No show, imprimir também os campos realmente vazios. Um campo que ninguém conseguiu ler é impresso de qualquer jeito.",
+ "switch.components": "No license, transformar o aviso em cada componente dentro deste executável com sua versão, sua licença e sua origem. O mesmo conjunto que a lista de materiais publicada ao lado do download traz, porque as duas são geradas de um único registro.",
+ "switch.json": "O mesmo documento, legível por máquina, na saída padrão.",
+ "switch.note": "Para que o instantâneo foi feito, guardado dentro do arquivo.",
+ "switch.exit-code": "Terminar com o código 5 quando a configuração difere - uma entrada adicionada ou removida, ou uma configurada de outro jeito. O estado de execução sozinho não conta. Desligado por padrão, para que um script que só quer as diferenças impressas não tropece em encontrar algumas.",
+ "switch.live": "Comparar o arquivo com esta máquina como está agora, em vez de com um segundo arquivo.",
+ "switch.timing": "Quanto tempo levou cada parte da leitura, no erro padrão.",
+ "switch.dry-run": "Imprimir o plano e não mudar nada. É o mesmo plano que uma execução roda - não existe um segundo caminho de código para a execução de verdade.",
+ "switch.dependents": "Colocar no plano, como etapas próprias, os serviços que deixariam de funcionar.",
+ "switch.timeout": "Quanto tempo uma etapa pode ficar sem progresso antes de ser abandonada, contado de novo toda vez que o serviço informa progresso. Sessenta segundos, a menos que você diga outra coisa. Um serviço que continua informando progresso é observado pelo tempo que for preciso. Esgotar o prazo é o fim da observação e não uma falha, e o relatório diz onde a entrada foi deixada.",
+
+ "field.name": "o nome do serviço, aquele pelo qual o Windows o identifica",
+ "field.display": "o nome de exibição, como este Windows o escreve",
+ "field.description": "o que a entrada diz sobre si mesma",
+ "field.type": "que tipo de entrada é",
+ "field.peruser": "se é uma das famílias por usuário de que o Windows faz uma cópia por sessão",
+ "field.status": "o que está fazendo agora",
+ "field.start": "o que o gerenciador faz com ela na próxima inicialização",
+ "field.account": "a conta sob a qual ela roda, como o gerenciador a escreve",
+ "field.pid": "o processo em que ela está rodando",
+ "field.trigger": "uma condição que a inicia ou a para",
+ "field.path": "a linha de comando que o gerenciador inicia",
+ "field.file": "se o arquivo que ela executa está no disco",
+ "field.signed": "o que o Windows pensa da assinatura do arquivo, sem verificar a revogação",
+ "field.publisher": "quem assinou o arquivo - comprovado apenas por uma assinatura confiável",
+ "field.privilege": "um privilégio que a entrada pede",
+ "field.dependson": "do que esta precisa",
+ "field.requiredby": "o que deixa de funcionar se esta parar",
+ "field.sidtype": "o tipo de SID do serviço",
+ "field.sddl": "o descritor de segurança, como texto",
+ "field.memory": "o que o processo dela está usando",
+ "field.mismatch": "configuração e estado que discordam",
+
+ "field.open.name": "texto",
+ "field.open.display": "texto",
+ "field.open.description": "texto",
+ "field.open.account": "texto, p. ex. localsystem",
+ "field.open.pid": "um número: 1234, >1000, 100-200",
+ "field.open.path": "texto",
+ "field.open.publisher": "texto",
+ "field.open.privilege": "texto, p. ex. SeDebugPrivilege",
+ "field.open.dependson": "um nome de serviço",
+ "field.open.requiredby": "um nome de serviço",
+ "field.open.sddl": "texto",
+ "field.open.memory": "um tamanho com unidade: 500MB, >1GB, 100MB-1GB",
+
+ "reserved.any": "há um valor, seja qual for",
+ "reserved.none": "realmente não há valor nenhum - a entrada não tem",
+ "reserved.unreadable": "a ferramenta não conseguiu ler este campo, ou não o leu, o que é uma pergunta que o services.msc nem sabe fazer"
+}
diff --git a/site/pages/404/de.html b/site/pages/404/de.html
new file mode 100644
index 0000000..7c602ca
--- /dev/null
+++ b/site/pages/404/de.html
@@ -0,0 +1,30 @@
+
+
+
+
+
+Die Adresse passt zu nichts auf dieser Website. Dafür wurde nichts gelöscht - Adressen ändern sich hier nicht, denn eine verschobene Seite würde jeden Link zerbrechen, der je auf sie zeigte.
+ +Zwei eigenständige ausführbare Dateien oder ein Installer.
Jedes Feld und jeder Wert, nach dem Sie suchen können.
Jeder Schalter und jeder Exit-Code.
Was sich seit gestern auf diesem Rechner geändert hat.
Auch das, was das Werkzeug absichtlich verweigert.
Alles liegt auf GitHub unter der GPL-3.0.
La dirección no coincide con nada de este sitio. No se borró nada para que ocurriera: aquí las direcciones no cambian, porque una página movida rompería todos los enlaces que alguna vez apuntaron a ella.
+ +Dos ejecutables autónomos, o un instalador.
Cada campo y cada valor por los que puede buscar.
Cada opción y cada código de salida.
Qué ha cambiado en este equipo desde ayer.
Incluido lo que la herramienta rechaza por diseño.
Todo está en GitHub bajo GPL-3.0.
L'adresse ne correspond à rien sur ce site. Rien n'a été supprimé pour en arriver là - les adresses ne changent pas ici, car une page déplacée casserait tous les liens qui y ont jamais pointé.
+ +Deux exécutables autonomes, ou un installeur.
Chaque champ et chaque valeur sur lesquels chercher.
Chaque option et chaque code de sortie.
Ce qui a changé sur cette machine depuis hier.
Y compris ce que l'outil refuse par conception.
Tout est sur GitHub sous GPL-3.0.
L'indirizzo non corrisponde a nulla in questo sito. Non è stato cancellato nulla perché ciò accadesse - qui gli indirizzi non cambiano, perché una pagina spostata romperebbe ogni link che vi abbia mai puntato.
+ +Due eseguibili autonomi, o un programma di installazione.
Ogni campo e ogni valore su cui cercare.
Ogni opzione e ogni codice di uscita.
Cosa è cambiato su questa macchina da ieri.
Compreso ciò che lo strumento rifiuta per scelta progettuale.
Tutto è su GitHub con licenza GPL-3.0.
O endereço não corresponde a nada neste site. Nada foi apagado para isso acontecer - aqui os endereços não mudam, porque uma página movida quebraria todo link que já apontou para ela.
+ +Dois executáveis autônomos, ou um instalador.
Cada campo e cada valor pelos quais pesquisar.
Cada opção e cada código de saída.
O que mudou nesta máquina desde ontem.
Inclusive o que a ferramenta recusa por projeto.
Tudo está no GitHub sob a GPL-3.0.
Ein Audit ist keine Liste dessen, was auf dem Rechner ist. Es ist der Unterschied zwischen dem, was auf dem Rechner ist, und dem, was sein sollte - und kein gewöhnliches Windows hält die zweite Hälfte fest.
+Ein Snapshot bei der Bereitstellung und ein Vergleich mit dem Rechner heute Nacht. Die Konfiguration wird getrennt von dem gemeldet, was nur gestartet oder angehalten wurde, sodass der eine Starttyp, den jemand geändert hat, nicht unter vierzig Diensten untergeht, die zufällig laufen.
+bws snapshot diff baseline.json --live
Machen Sie auf jedem einen Snapshot und vergleichen Sie die beiden Dateien - irgendwo, ohne dass einer der Rechner vor Ort ist. Die Dateien tragen den Rechnernamen und das Konto, das sie erstellt hat.
+bws snapshot diff staging.json production.json
Abfragen, die die Formen finden, die einen Blick wert sind: ein Dienst, dessen Programmdatei fehlt, einer, der nicht signiert ist, einer, der läuft, obwohl er deaktiviert ist, einer, der Debugrechte verlangt.
+file:missing, signed:no, mismatch:running
# der Tag, an dem der Rechner in Betrieb geht
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# jede Nacht, aus einer geplanten Aufgabe
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - keine Konfigurationsdrift
+# 5 - die Konfiguration ist abgedriftet, und drift.json sagt, was
+# 3 - es lief und konnte nicht alles lesen, die Antwort ist also unvollständig
+ Exit-Code 5 macht daraus ein Audit statt eines Berichts, den niemand liest: Die Aufgabe schweigt, bis der Rechner abdriftet, und in der Nacht, in der er es tut, wird jemand alarmiert.
Erstellen Sie die Baseline in einer Sitzung mit erhöhten Rechten. Ohne Administratorrechte listet der Manager weniger Einträge und lehnt mehr von dem ab, was er listet. Der Snapshot hält fest, ob das Konto, das ihn erstellt hat, ein Administrator war, sodass der Vergleich das sagen kann, statt Einträge als entfernt zu melden, die niemand entfernt hat - aber eine Baseline, der die Hälfte des Rechners fehlt, ist trotzdem eine Baseline, der die Hälfte des Rechners fehlt.
+git diff ihn liest. Ein Prüfer, der dieses Werkzeug nicht hat, kann die Datei trotzdem lesen, und eine Versionsverwaltung beantwortet das Wann bereits.Una auditoría no es una lista de lo que hay en el equipo. Es la diferencia entre lo que hay en el equipo y lo que debía haber, y ningún Windows de serie registra la segunda mitad.
+Una instantánea tomada al desplegar y una comparación con el equipo esta noche. La configuración se informa aparte de lo que simplemente se inició o se detuvo, de modo que el único tipo de inicio que alguien cambió no queda enterrado bajo cuarenta servicios que casualmente están en marcha.
+bws snapshot diff baseline.json --live
Tome una instantánea en cada uno y compare los dos archivos, en cualquier parte, sin que ninguno de los equipos esté presente. Los archivos llevan el nombre del equipo y la cuenta que los tomó.
+bws snapshot diff staging.json production.json
Consultas que encuentran las formas que merece la pena mirar: un servicio cuyo ejecutable ha desaparecido, uno sin firmar, uno en marcha aunque está deshabilitado, uno que pide derechos de depuración.
+file:missing, signed:no, mismatch:running
# el día en que el equipo entra en servicio
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# cada noche, desde una tarea programada
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - sin deriva de configuración
+# 5 - la configuración se desvió, y drift.json dice en qué
+# 3 - se ejecutó y no pudo leerlo todo, así que la respuesta es parcial
+ El código de salida 5 es lo que convierte esto en una auditoría y no en un informe que nadie lee: la tarea guarda silencio hasta que el equipo se desvía, y la noche en que lo hace, alguien recibe un aviso.
Tome la línea base desde una sesión con privilegios elevados. Sin derechos de administrador el administrador lista menos entradas y rechaza más de las que lista. La instantánea registra si la cuenta que la tomó era administrador, de modo que la comparación puede decirlo en lugar de informar como eliminadas entradas que nadie eliminó, pero una línea base a la que le falta la mitad del equipo sigue siendo una línea base a la que le falta la mitad del equipo.
+git diff la lee. Un auditor que no tenga esta herramienta puede leer el archivo igualmente, y un sistema de control de versiones ya responde al cuándo.Un audit n'est pas une liste de ce qui se trouve sur la machine. C'est la différence entre ce qui s'y trouve et ce qui devait s'y trouver - et aucun Windows standard n'enregistre la seconde moitié.
+Un instantané pris au déploiement, et une comparaison avec la machine cette nuit. La configuration est signalée à part de ce qui a simplement démarré ou s'est arrêté, de sorte que le seul type de démarrage que quelqu'un a changé n'est pas enterré sous quarante services qui se trouvent tourner.
+bws snapshot diff baseline.json --live
Prenez un instantané sur chacune et comparez les deux fichiers - n'importe où, sans qu'aucune des deux machines soit présente. Les fichiers portent le nom de la machine et le compte qui les a pris.
+bws snapshot diff staging.json production.json
Des requêtes qui trouvent les formes qui valent un coup d'œil : un service dont l'exécutable a disparu, un service non signé, un service en marche bien que désactivé, un service qui demande des droits de débogage.
+file:missing, signed:no, mismatch:running
# le jour où la machine entre en service
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# chaque nuit, depuis une tâche planifiée
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - aucune dérive de configuration
+# 5 - la configuration a dérivé, et drift.json dit en quoi
+# 3 - elle a tourné et n'a pas pu tout lire, la réponse est donc partielle
+ Le code de sortie 5 est ce qui fait de ceci un audit plutôt qu'un rapport que personne ne lit : la tâche est silencieuse jusqu'à ce que la machine dérive, et la nuit où cela arrive, quelqu'un est alerté.
Prenez la référence depuis une session avec élévation. Sans droits d'administrateur, le gestionnaire liste moins d'entrées et en refuse davantage parmi celles qu'il liste. L'instantané enregistre si le compte qui l'a pris était un administrateur, de sorte que la comparaison peut le dire au lieu de signaler comme supprimées des entrées que personne n'a supprimées - mais une référence à laquelle manque la moitié de la machine reste une référence à laquelle manque la moitié de la machine.
+git diff le lit. Un auditeur qui n'a pas cet outil peut quand même lire le fichier, et un système de gestion de versions répond déjà au quand.Un audit non è un elenco di ciò che c'è sulla macchina. È la differenza tra ciò che c'è sulla macchina e ciò che doveva esserci - e nessun Windows di serie registra la seconda metà.
+Uno snapshot preso alla distribuzione e un confronto con la macchina stanotte. La configurazione è segnalata a parte rispetto a ciò che si è semplicemente avviato o fermato, così l'unico tipo di avvio che qualcuno ha cambiato non è sepolto sotto quaranta servizi che capita siano in esecuzione.
+bws snapshot diff baseline.json --live
Prenda uno snapshot su ciascuna e confronti i due file - ovunque, senza che nessuna delle due macchine sia presente. I file portano il nome della macchina e l'account che li ha presi.
+bws snapshot diff staging.json production.json
Query che trovano le forme che vale la pena guardare: un servizio il cui eseguibile è sparito, uno non firmato, uno in esecuzione benché disabilitato, uno che chiede diritti di debug.
+file:missing, signed:no, mismatch:running
# il giorno in cui la macchina entra in servizio
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# ogni notte, da un'attività pianificata
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - nessuna deriva di configurazione
+# 5 - la configurazione è andata alla deriva, e drift.json dice come
+# 3 - è girato e non ha potuto leggere tutto, quindi la risposta è parziale
+ Il codice di uscita 5 è ciò che fa di questo un audit invece di un rapporto che nessuno legge: l'attività tace finché la macchina non va alla deriva, e la notte in cui lo fa, qualcuno viene avvisato.
Prenda la base di riferimento da una sessione con privilegi elevati. Senza diritti di amministratore il gestore elenca meno voci e rifiuta di più tra quelle che elenca. Lo snapshot registra se l'account che lo ha preso era un amministratore, così il confronto può dirlo invece di segnalare come rimosse voci che nessuno ha rimosso - ma una base di riferimento a cui manca metà della macchina resta una base di riferimento a cui manca metà della macchina.
+git diff lo legge. Un revisore che non ha questo strumento può comunque leggere il file, e un sistema di controllo di versione risponde già al quando.Uma auditoria não é uma lista do que há na máquina. É a diferença entre o que há na máquina e o que deveria haver - e nenhum Windows de fábrica registra a segunda metade.
+Um instantâneo feito na implantação e uma comparação com a máquina esta noite. A configuração é informada à parte do que apenas iniciou ou parou, de modo que o único tipo de inicialização que alguém mudou não fique enterrado sob quarenta serviços que por acaso estão em execução.
+bws snapshot diff baseline.json --live
Faça um instantâneo em cada uma e compare os dois arquivos - em qualquer lugar, sem nenhuma das duas máquinas presente. Os arquivos trazem o nome da máquina e a conta que os fez.
+bws snapshot diff staging.json production.json
Consultas que encontram as formas que merecem um olhar: um serviço cujo executável sumiu, um sem assinatura, um em execução embora desabilitado, um que pede direitos de depuração.
+file:missing, signed:no, mismatch:running
# o dia em que a máquina entra em serviço
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# toda noite, a partir de uma tarefa agendada
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - sem deriva de configuração
+# 5 - a configuração se desviou, e drift.json diz o quê
+# 3 - rodou e não conseguiu ler tudo, então a resposta é parcial
+ O código de saída 5 é o que faz disto uma auditoria em vez de um relatório que ninguém lê: a tarefa fica em silêncio até a máquina se desviar, e na noite em que isso acontece, alguém é avisado.
Faça a linha de base em uma sessão com privilégios elevados. Sem direitos de administrador o gerenciador lista menos entradas e recusa mais das que lista. O instantâneo registra se a conta que o fez era administradora, de modo que a comparação pode dizer isso em vez de informar como removidas entradas que ninguém removeu - mas uma linha de base sem metade da máquina continua sendo uma linha de base sem metade da máquina.
+git diff o lê. Um auditor que não tenha esta ferramenta ainda pode ler o arquivo, e um sistema de controle de versão já responde ao quando.Jeder Befehl, jeder Schalter und jeder Exit-Code von bws, Version {{version}}. bws --help ist die maßgebliche Quelle und ist länger - diese Seite zeigt dieselbe Oberfläche, so angeordnet, dass man sie lesen kann.
Elf Befehle. snapshot ist ein Substantiv und nimmt ein Wort danach. tool ist ebenfalls ein Substantiv und listet für sich allein die Tools auf.
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
+ Bei einem falsch geschriebenen Befehl wird der angeboten, den Sie wahrscheinlich meinten, und der Lauf endet mit Code 2, statt etwas Ähnliches zu tun, als Sie verlangt haben.
$ bws lst
+There is no command lst. Did you mean list?
+ list und showlist ist der ganze Rechner, eingegrenzt durch --query. show ist ein Eintrag mit allem, was darüber bekannt ist - Signatur, Privilegien, Sicherheitsdeskriptor und Speicher, alles bei jedem Aufruf gelesen, weil das bei einem einzelnen Eintrag etwa sechzig Millisekunden kostet, über den ganzen Rechner dagegen eine Sekunde. Felder, die wirklich leer sind, werden weggelassen, es sei denn, Sie übergeben --full. Ein Feld, das niemand lesen konnte, wird in jedem Fall ausgegeben, weil es wegzulassen wie eine Antwort aussähe.
stop, start und restartJeder baut einen Plan und führt ihn aus. --dry-run gibt den Plan aus und ändert nichts, --dependents nimmt die Dienste, die ausfallen würden, als eigene Schritte hinein, und --timeout sagt, wie lange ein Schritt ohne Fortschritt dauern darf. Treiber werden abgelehnt und nicht versucht, weil das Beenden eines Kerneltreibers ohne Neustart oft nicht umkehrbar ist.
kill - für einen Dienst, der sich nicht beenden lässtEs bittet den Dienst, sich zu beenden, und beendet den Prozess dahinter nur, wenn das nicht klappt, sodass ein Eintrag, der von selbst anhält, nie beendet wird. Das Beenden eines Prozesses reißt jeden anderen Dienst, der in diesem Prozess lebt, mit, ob er zuvor angehalten hat oder nicht, und die Vorschau nennt sie und nennt den Prozess mit seiner Nummer. --force überspringt den höflichen Schritt, und die Vorschau zeigt dann einen Schritt statt zwei. --restart bringt danach alles zurück.
Windows schreibt diese Idee anders. --force bei Stop-Service bedeutet "auch wenn etwas davon abhängt", was hier --dependents tut. Deshalb ist dies ein eigener Befehl und kein Schalter bei stop.
start-type - eine Einstellung, kein ZugEr sagt, was der Manager beim nächsten Start mit einem Eintrag tut, und ohne --stop bewegt er nichts: Ein Eintrag, der läuft, läuft weiter, einer, der angehalten ist, bleibt angehalten, und der Plan sagt das. disabled verdient ein Innehalten, weil es den Manager daran hindert, den Eintrag überhaupt zu starten, auch auf Anforderung für etwas anderes, das ihn braucht. delayed ist automatisch, etwas nach den anderen automatischen Einträgen gestartet - das Wort, nach dem start:delayed in einer Abfrage fragt - und Windows lehnt es für einen Eintrag in einer Ladereihenfolgegruppe ab, was der Plan sagt, bevor etwas geschieht. Jeder der vier schreibt, ob der Eintrag verzögert startet, wie es sc.exe tut. --stop, nur neben disabled, hält den Eintrag im selben Plan an, sobald die Einstellung geschrieben ist.
snapshot create und snapshot diffcreate liest immer Signaturen und Hashes, weil ein Snapshot aufbewahrt und später verglichen wird und einer ohne sie gegen einen mit ihnen so verglichen würde, als hätte sich der Rechner verändert. diff sagt, was sich beim Übergang von der ersten Datei zur zweiten geändert hat, oder mit --live von einer Datei zu diesem Rechner. Die Snapshot-Seite hat das Format und die Begründung.
history - wer es geändert hat, aus dem SystemprotokollÄnderungen des Starttyps und Installationen aus dem Systemprotokoll, die neuesten zuerst, mit dem Konto, das Windows festgehalten hat. Die erste Zeile sagt, wie weit das Protokoll zurückreicht und ob es gelöscht wurde, denn ein Verlauf ist nur so lang wie das Protokoll. Mit einem Namen sind es die Änderungen des Starttyps dieses Dienstes - Installationen werden nur ohne Namen aufgelistet, weil Windows eine Installation unter dem Anzeigenamen und nie unter dem Dienstnamen festhält. Ein Konto wird genannt, wo dieser Rechner es selbst benennen kann, und sonst als seine SID gezeigt, und Starttypen erscheinen in den Worten, die Windows geschrieben hat.
+tool - fertige Antworten auf häufige ProblemeDieselben Tools, die das Fenster auf seinem Reiter Tools zeigt. bws tool listet sie auf, und bws tool fix listet die Schnellreparaturen auf: printer, sound, indexing und search, jeweils ein Neustart eines Windows-Dienstes samt dem, was davon abhängt, ausgewählt, weil die Fehlerbehebungsseiten von Microsoft selbst ihn vorschlagen. bws tool fix printer ist genau bws restart Spooler --dependents - derselbe Plan, dieselbe Ausgabe und dieselben Exit-Codes - und wie jeder Befehl hier, der etwas ändert, fragt es nicht vorher, daher ist --dry-run der Weg, vor der Ausführung nachzusehen.
license - was in der heruntergeladenen Datei stecktEs liest überhaupt nichts - keinen Dienstmanager, keinen Datenträger, kein Netzwerk - und antwortet aus einem Register, das in die ausführbare Datei einkompiliert ist. --components macht aus dem Hinweis jede Komponente mit Version, Lizenz und Herkunft. Dieselbe Menge, die die neben dem Download veröffentlichte Stückliste trägt, weil beide aus einem Register erzeugt werden, und der Grund, warum sich das lohnt: Das Programm ist eine eigenständige Datei, daneben gibt es also nichts, was ein Scanner lesen könnte.
Die folgenden Pläne wurden mit --dry-run gegen das Programm geprüft, das diese Seite beschreibt. Ein Befehl, der etwas ändert, fragt nicht vorher, daher ist --dry-run der Weg, vor der Ausführung nachzusehen. Spooler steht für irgendeinen Dienst - setzen Sie den Namen Ihres eigenen ein.
bws list jeder Dienst und Treiber auf diesem Rechner
+bws list --query "start:auto !status:running" was laufen sollte und nicht läuft
+bws list --query "status:running" --memory was der Prozess jedes laufenden Eintrags verbraucht
+bws show Spooler alles, was über einen Eintrag bekannt ist
+bws show Spooler --full auch die Felder, die wirklich leer sind
+ bws restart Spooler --dry-run der Plan und sonst nichts
+bws restart Spooler --dependents zusammen mit dem neu starten, was davon abhängt
+bws stop Spooler --dependents --timeout 120 zwei Minuten pro Schritt ohne Fortschritt erlauben
+bws start-type WSearch delayed --dry-run etwas nach den anderen automatischen Einträgen starten
+bws start-type Spooler disabled --stop deaktivieren und in einem Plan anhalten
+ bws kill Spooler --dry-run der Prozess und jeder Dienst, der in ihm lebt
+bws kill Spooler --restart den Prozess nur beenden, wenn ein Stopp scheitert, dann alles zurückbringen
+bws kill Spooler --force --dry-run ein Schritt statt zwei: der Prozess sofort beendet
+ bws snapshot create before.json --note "before the patch" den Rechner einfrieren, mit einer Notiz in der Datei
+bws snapshot diff before.json after.json zwei Dateien - zwei Tage oder zwei Rechner
+bws snapshot diff before.json --live die Datei gegen diesen Rechner, wie er jetzt ist
+bws snapshot diff before.json --live --exit-code dasselbe, endet mit 5, wenn die Konfiguration abgedriftet ist
+ bws history jede Änderung des Starttyps und jede Installation, die das Systemprotokoll enthält
+bws history Spooler die Änderungen des Starttyps eines Dienstes
+bws history --json dasselbe als Dokument, mit Protokoll und Änderungen
+ bws tool die vorhandenen Tools
+bws tool fix die Schnellreparaturen und der Dienst hinter jeder
+bws tool fix sound --dry-run der Plan für den Neustart der beiden Audiodienste
+bws tool fix printer den Druckerspooler samt dem, was davon abhängt, neu starten
+ bws license --components jede Komponente, ihre Version, ihre Lizenz und ihre Herkunft
+bws --version die Version dieser ausführbaren Datei
+ # die Einträge, die laufen sollten und nicht laufen, als Objekte
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# die unsignierten Dateien, in eine Tabelle
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# was ein Dienst braucht
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# eine nächtliche Prüfung, die nach dem Exit-Code verzweigt
+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 ein zweiter Befehl nur, wenn der erste nicht sauber endete
+bws restart Spooler || echo the restart did not end cleanly
+
+rem in einer Batchdatei mit eingeschalteter verzögerter Erweiterung braucht das ! einen Zirkumflex
+bws list --query "start:auto ^!status:running"
+ {{switch_count}} davon. Die dritte Spalte nennt die Befehle, zu denen jeder gehört - ein Schalter, der an einen Befehl übergeben wird, der damit nichts anfangen kann, ist ein Fehler mit dieser Liste darin, statt einer stillschweigend ignorierten Option.
+ {{table:switches}} +{{exit_code_count}} Enden, und jedes davon ist für ein Skript etwas anderes zu tun. Daten gehen auf die Standardausgabe und alles andere auf die Standardfehlerausgabe, sodass bws list --json | jq funktioniert und eine Warnung nie in Ihrem JSON landet.
Jedes JSON-Dokument ist reines ASCII: Ein Buchstabe außerhalb davon wird als sechszeichige Escape-Sequenz geschrieben, die jeder JSON-Leser wieder in den Buchstaben zurückverwandelt, sodass bws list --json > file.json gültiges UTF-8 ist und | ConvertFrom-Json es richtig liest, welche Codepage die Konsole auch hat. Im Text, den ein Mensch liest, wird ein Zeichen, das das Terminal bewegen statt etwas drucken würde - ein Tabulator, ein Zeilenumbruch, eine Escape-Sequenz, eine Richtungsüberschreibung - als sein Codepunkt gezeigt, <U+001B>.
-- beendet die Schalter, sodass auch ein Dienst, dessen Name mit einem Bindestrich beginnt, benannt werden kann: bws show -- -odd. Die Befehlszeilen, die Ihnen das Werkzeug reicht, sind für PowerShell geschrieben: Ein Name mit Leerzeichen kommt in doppelte Anführungszeichen, die cmd genauso liest, und ein Name, den PowerShell darin erweitern würde, wie MSSQL$SQLEXPRESS, kommt in einfache Anführungszeichen.
Strg+C hat drei Stufen, und jede sagt, was die nächste kostet. Die erste hört auf, vorwärts zu gehen, und stellt trotzdem wieder her, was genommen wurde, die zweite lässt die Dinge, wie sie sind, und gibt trotzdem den Bericht aus, die dritte beendet den Prozess. Ein von Hand gestoppter Lauf endet mit 4, auch wenn jeder Schritt noch ankam.
Das Schließen des Konsolenfensters zählt als erstes Strg+C. Windows gibt einem Programm danach fünf Sekunden, und in ihnen hört dieses auf, vorwärts zu gehen, und stellt wieder her, was es heruntergefahren hat. Abmelden und Herunterfahren beenden es ohne jede Warnung, auf die es reagieren könnte, und eine abgebrochene Remotesitzung kann das auch.
+Die Form, für die dieses Werkzeug gebaut wurde: den Rechner einfrieren, wenn er als gut bekannt ist, und dann jede Nacht fragen, ob er es noch ist.
+# der Tag, an dem der Rechner in Betrieb geht
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# jede Nacht, aus einer geplanten Aufgabe
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - keine Konfigurationsdrift
+# 5 - die Konfiguration ist abgedriftet, und drift.json sagt, was
+# 3 - es lief und konnte nicht alles lesen, die Antwort ist also unvollständig
+ Das Fenster ist die andere Hälfte derselben Engine: {{archive_window}} enthält es, und die Download-Seite sagt, was jedes Archiv ist.
BetterWindowsServices.exe nimmt ein Argument, das für einen Menschen gedacht ist: --catalogue öffnet ein Entwicklerblatt, das jede Komponente des Fensters in jedem Zustand zeigt und nichts von Ihrem Rechner liest. Ein zweites, --carry, ist die Art, wie ein Fenster das, was es zeigte, an die Kopie von sich übergibt, als die es sich als Administrator neu startet. Niemand tippt es, und alles darin, was dieses Fenster nicht hätte schreiben können, wird abgelehnt.
Cada comando, cada opción y cada código de salida de bws, versión {{version}}. bws --help es la referencia autorizada y es más larga: esta página es la misma superficie, dispuesta para leerse.
Once comandos. snapshot es un sustantivo y admite una palabra después. tool también lo es y, por sí solo, lista las herramientas.
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
+ A un comando mal escrito se le ofrece el que probablemente quería, y la ejecución termina con el código 2 en lugar de hacer algo parecido a lo que pidió.
$ bws lst
+There is no command lst. Did you mean list?
+ list y showlist es todo el equipo, acotado por --query. show es una entrada con todo lo que se sabe de ella: la firma, los privilegios, el descriptor de seguridad y la memoria, todo leído cada vez, porque sobre una sola entrada eso cuesta unos sesenta milisegundos mientras que sobre todo el equipo cuesta un segundo. Los campos realmente vacíos se omiten salvo que pase --full. Un campo que nadie pudo leer se imprime en cualquier caso, porque omitirlo parecería una respuesta.
stop, start y restartCada uno construye un plan y lo ejecuta. --dry-run imprime el plan y no cambia nada, --dependents pone en él los servicios que dejarían de funcionar como pasos propios, y --timeout dice cuánto puede durar un paso sin progreso. Los controladores se rechazan en lugar de intentarse, porque detener un controlador del núcleo a menudo no es reversible sin reiniciar.
kill: para un servicio que no se detienePide al servicio que se detenga y termina el proceso que hay detrás solo si eso no funciona, de modo que una entrada que se detiene por sí sola nunca se termina. Terminar un proceso se lleva consigo a todo otro servicio que vive en él, se hubiera detenido antes o no, y la vista previa los nombra y nombra el proceso por su número. --force omite el paso cortés y la vista previa muestra entonces un paso en lugar de dos. --restart lo devuelve todo a su sitio después.
Windows escribe esta idea de otra manera. --force en Stop-Service significa "aunque algo dependa de él", que es lo que aquí hace --dependents. Por eso este es un comando propio y no una opción de stop.
start-type: un ajuste, no un movimientoDice qué hará el administrador con una entrada en el próximo arranque, y sin --stop no mueve nada: una entrada que se está ejecutando sigue ejecutándose, una detenida sigue detenida, y el plan lo dice. disabled es el que merece una pausa, porque impide que el administrador inicie la entrada en absoluto, incluso a petición de otra cosa que la necesite. delayed es automático, iniciado un poco después de las demás entradas automáticas (la palabra por la que pregunta start:delayed en una consulta), y Windows lo rechaza para una entrada de un grupo de orden de carga, lo que el plan dice antes de que ocurra nada. Cada uno de los cuatro escribe si la entrada se inicia tarde, como hace sc.exe. --stop, solo junto a disabled, detiene la entrada en el mismo plan una vez escrito el ajuste.
snapshot create y snapshot diffcreate lee siempre las firmas y los hashes, porque una instantánea se conserva y se compara más tarde, y una sin ellos comparada con una que los tiene se trataría como si el equipo hubiera cambiado. diff dice qué cambió al pasar del primer archivo al segundo, o de un archivo a este equipo con --live. La página de instantáneas tiene el formato y el razonamiento.
history: quién lo cambió, a partir del registro del sistemaCambios de tipo de inicio e instalaciones del registro del sistema, los más recientes primero, con la cuenta que registró Windows. La primera línea dice hasta dónde llega el registro y si se borró, porque un historial es tan largo como el registro. Con un nombre son los cambios de tipo de inicio de ese servicio: las instalaciones se listan solo sin nombre, porque Windows registra una instalación bajo el nombre para mostrar y nunca bajo el nombre del servicio. Una cuenta se nombra donde este equipo puede nombrarla por sí mismo y se muestra como su SID en caso contrario, y los tipos de inicio vienen con las palabras que escribió Windows.
+tool: respuestas ya hechas a problemas comunesLas mismas herramientas que la ventana muestra en su pestaña Tools. bws tool las lista y bws tool fix lista las reparaciones rápidas: printer, sound, indexing y search, cada una un reinicio de un servicio de Windows junto con lo que depende de él, elegidas porque las propias páginas de solución de problemas de Microsoft lo sugieren. bws tool fix printer es exactamente bws restart Spooler --dependents: el mismo plan, la misma salida y los mismos códigos de salida, y como todo comando aquí que cambia algo no pregunta antes, así que --dry-run es la forma de mirar antes de que se ejecute.
license: qué hay dentro del archivo que descargóNo lee nada en absoluto (ni administrador de servicios, ni disco, ni red) y responde desde un registro compilado en el ejecutable. --components convierte el aviso en cada componente con su versión, su licencia y su procedencia. El mismo conjunto que lleva la lista de materiales publicada junto a la descarga, porque ambos se generan desde un único registro, y la razón por la que merece la pena: el programa es un archivo autónomo, así que no hay nada a su lado que un escáner pueda leer.
Los planes de abajo se comprobaron con --dry-run contra el programa que describe esta página. Un comando que cambia algo no pregunta antes, así que --dry-run es la forma de mirar antes de que se ejecute. Spooler representa cualquier servicio: ponga en su lugar el nombre del suyo.
bws list cada servicio y controlador de este equipo
+bws list --query "start:auto !status:running" lo que debería estar en marcha y no lo está
+bws list --query "status:running" --memory lo que usa el proceso de cada entrada en ejecución
+bws show Spooler todo lo que se sabe de una entrada
+bws show Spooler --full también los campos realmente vacíos
+ bws restart Spooler --dry-run el plan, y nada más
+bws restart Spooler --dependents reiniciarlo junto con lo que depende de él
+bws stop Spooler --dependents --timeout 120 permitir dos minutos por paso sin progreso
+bws start-type WSearch delayed --dry-run iniciarlo un poco después de las demás entradas automáticas
+bws start-type Spooler disabled --stop deshabilitarlo y detenerlo en un solo plan
+ bws kill Spooler --dry-run el proceso, y cada servicio que vive en él
+bws kill Spooler --restart terminar el proceso solo si falla una detención, y luego devolverlo todo a su sitio
+bws kill Spooler --force --dry-run un paso en lugar de dos: el proceso terminado de inmediato
+ bws snapshot create before.json --note "before the patch" congelar el equipo, con una nota guardada dentro
+bws snapshot diff before.json after.json dos archivos: dos días, o dos equipos
+bws snapshot diff before.json --live el archivo frente a este equipo tal como está ahora
+bws snapshot diff before.json --live --exit-code lo mismo, terminando con 5 si la configuración se desvió
+ bws history cada cambio de tipo de inicio e instalación que contiene el registro del sistema
+bws history Spooler los cambios de tipo de inicio de un servicio
+bws history --json lo mismo como documento, con registro y cambios
+ bws tool las herramientas que hay
+bws tool fix las reparaciones rápidas, y el servicio que hay detrás de cada una
+bws tool fix sound --dry-run el plan para reiniciar los dos servicios de audio
+bws tool fix printer reiniciar el Print Spooler con lo que depende de él
+ bws license --components cada componente, su versión, su licencia y su procedencia
+bws --version la versión de este ejecutable
+ # las entradas que deberían estar en marcha y no lo están, como objetos
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# los archivos sin firmar, a una hoja de cálculo
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# lo que necesita un servicio
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# una comprobación nocturna que se bifurca según el código de salida
+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 un segundo comando solo cuando el primero no terminó limpiamente
+bws restart Spooler || echo the restart did not end cleanly
+
+rem en un archivo por lotes con la expansión retardada activada, el ! necesita un acento circunflejo
+bws list --query "start:auto ^!status:running"
+ {{switch_count}} en total. La tercera columna son los comandos a los que pertenece cada una: una opción pasada a un comando que no la usa es un error con esa lista dentro, en lugar de un indicador ignorado en silencio.
+ {{table:switches}} +{{exit_code_count}} finales, y cada uno es algo distinto que un script debe hacer. Los datos van a la salida estándar y todo lo demás al error estándar, de modo que bws list --json | jq funciona y una advertencia nunca acaba en su JSON.
Todo documento JSON es ASCII puro: una letra fuera de él se escribe como una secuencia de escape de seis caracteres que todo lector de JSON vuelve a convertir en la letra, de modo que bws list --json > file.json es UTF-8 válido y | ConvertFrom-Json lo lee bien sea cual sea la página de códigos de la consola. En el texto que lee una persona, un carácter que movería el terminal en lugar de imprimirse (un tabulador, un salto de línea, una secuencia de escape, una anulación de dirección) se muestra como su punto de código, <U+001B>.
-- termina las opciones, de modo que un servicio cuyo nombre empieza por un guion aún puede nombrarse: bws show -- -odd. Las líneas de comandos que la herramienta le entrega están escritas para PowerShell: un nombre con espacio va entre comillas dobles, que cmd lee igual, y un nombre que PowerShell expandiría dentro, como MSSQL$SQLEXPRESS, va entre comillas simples.
Ctrl+C tiene tres niveles, y cada uno dice lo que cuesta el siguiente. El primero deja de avanzar y aun así devuelve lo que se había tomado, el segundo deja las cosas como están y aun así imprime el informe, el tercero termina el proceso. Una ejecución detenida a mano termina con 4 aunque cada paso hubiera llegado.
Cerrar la ventana de la consola cuenta como el primer Ctrl+C. Windows concede cinco segundos a un programa después de eso, y en ellos este deja de avanzar y devuelve lo que había derribado. Cerrar sesión y apagar lo terminan sin ningún aviso al que pudiera reaccionar, y una sesión remota interrumpida puede hacer lo mismo.
+La forma para la que se construyó esta herramienta: congelar el equipo cuando se sabe que está bien, y preguntar cada noche si lo sigue estando.
+# el día en que el equipo entra en servicio
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# cada noche, desde una tarea programada
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - sin deriva de configuración
+# 5 - la configuración se desvió, y drift.json dice en qué
+# 3 - se ejecutó y no pudo leerlo todo, así que la respuesta es parcial
+ La ventana es la otra mitad del mismo motor: {{archive_window}} la contiene, y la página de descarga dice qué es cada archivo.
BetterWindowsServices.exe admite un argumento pensado para una persona: --catalogue abre una hoja de desarrollador que muestra cada componente de la ventana en cada estado y no lee nada de su equipo. Un segundo, --carry, es la forma en que una ventana entrega lo que mostraba a la copia de sí misma que reinicia como administrador. Nadie lo escribe, y se rechaza todo lo que contenga que esa ventana no pudiera haber escrito.
Chaque commande, chaque option et chaque code de sortie de bws, version {{version}}. bws --help fait foi et est plus long - cette page est la même surface, mise en forme pour être lue.
Onze commandes. snapshot est un nom et prend un mot après lui. tool est aussi un nom, et seul il liste les outils.
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
+ Une commande mal orthographiée se voit proposer celle que vous vouliez probablement, et l'exécution se termine avec le code 2 au lieu de faire quelque chose de proche de ce que vous avez demandé.
$ bws lst
+There is no command lst. Did you mean list?
+ list et showlist est la machine entière, affinée par --query. show est une entrée avec tout ce qu'on en sait - la signature, les privilèges, le descripteur de sécurité et la mémoire, tout lu à chaque fois, car sur une seule entrée cela coûte environ soixante millisecondes alors que sur la machine entière cela coûte une seconde. Les champs réellement vides sont omis sauf si vous passez --full. Un champ que personne n'a pu lire est affiché dans tous les cas, car l'omettre ressemblerait à une réponse.
stop, start et restartChacune construit un plan et l'exécute. --dry-run affiche le plan et ne change rien, --dependents y met les services qui cesseraient de fonctionner comme des étapes à part entière, et --timeout dit combien de temps une étape peut durer sans progrès. Les pilotes sont refusés plutôt que tentés, car arrêter un pilote du noyau n'est souvent pas réversible sans redémarrage.
kill - pour un service qui ne s'arrête pasElle demande au service de s'arrêter et termine le processus qui le porte seulement si cela ne marche pas, de sorte qu'une entrée qui s'arrête d'elle-même n'est jamais terminée. Terminer un processus emporte avec lui tout autre service qui y vit, qu'il se soit arrêté avant ou non, et l'aperçu les nomme et nomme le processus par son numéro. --force saute l'étape polie et l'aperçu montre alors une étape au lieu de deux. --restart remet tout en route ensuite.
Windows écrit cette idée autrement. --force sur Stop-Service veut dire « même si quelque chose en dépend », ce que fait ici --dependents. C'est pourquoi c'est une commande à part entière et non une option de stop.
start-type - un réglage, pas un mouvementElle dit ce que le gestionnaire fera d'une entrée au prochain démarrage, et sans --stop elle ne déplace rien : une entrée qui tourne continue de tourner, une entrée arrêtée reste arrêtée, et le plan le dit. disabled mérite qu'on s'y arrête, car il empêche le gestionnaire de démarrer l'entrée tout court, y compris à la demande pour quelque chose d'autre qui en a besoin. delayed est automatique, démarré un peu après les autres entrées automatiques - le mot que start:delayed interroge dans une requête - et Windows le refuse pour une entrée appartenant à un groupe d'ordre de chargement, ce que le plan dit avant que quoi que ce soit n'arrive. Chacune des quatre écrit si l'entrée démarre tard, comme le fait sc.exe. --stop, à côté de disabled seulement, arrête l'entrée dans le même plan une fois le réglage écrit.
snapshot create et snapshot diffcreate lit toujours les signatures et les hachages, car un instantané est conservé et comparé plus tard, et un instantané sans eux comparé à un autre avec eux serait traité comme si la machine avait changé. diff dit ce qui a changé en passant du premier fichier au second, ou d'un fichier à cette machine avec --live. La page des instantanés donne le format et le raisonnement.
history - qui l'a changé, d'après le journal SystèmeLes changements de type de démarrage et les installations tirés du journal Système, les plus récents d'abord, avec le compte que Windows a enregistré. La première ligne dit jusqu'où remonte le journal et s'il a été effacé, car un historique n'est aussi long que le journal. Avec un nom, ce sont les changements de type de démarrage de ce service - les installations ne sont listées que sans nom, car Windows enregistre une installation sous le nom affiché et jamais sous le nom du service. Un compte est nommé là où cette machine peut le nommer d'elle-même et affiché sous forme de SID sinon, et les types de démarrage viennent dans les mots que Windows a écrits.
+tool - des réponses toutes faites aux problèmes courantsLes mêmes outils que la fenêtre montre sur son onglet Tools. bws tool les liste et bws tool fix liste les réparations rapides : printer, sound, indexing et search, chacune le redémarrage d'un service Windows avec ce qui en dépend, choisies parce que les pages de dépannage de Microsoft elles-mêmes le suggèrent. bws tool fix printer est exactement bws restart Spooler --dependents - le même plan, la même sortie et les mêmes codes de sortie - et comme toute commande ici qui change quelque chose, il ne demande pas d'abord, donc --dry-run est le moyen de regarder avant l'exécution.
license - ce qu'il y a dans le fichier téléchargéElle ne lit rien du tout - ni gestionnaire de services, ni disque, ni réseau - et répond depuis un registre compilé dans l'exécutable. --components transforme la mention en chaque composant avec sa version, sa licence et son origine. Le même ensemble que porte la nomenclature publiée à côté du téléchargement, parce que les deux sont produites depuis un seul registre, et c'est la raison pour laquelle cela vaut la peine : le programme est un fichier autonome, il n'y a donc rien à côté qu'un scanner puisse lire.
Les plans ci-dessous ont été vérifiés avec --dry-run contre le programme que décrit cette page. Une commande qui change quelque chose ne demande pas d'abord, donc --dry-run est le moyen de regarder avant l'exécution. Spooler représente n'importe quel service - mettez à sa place le nom du vôtre.
bws list chaque service et pilote de cette machine
+bws list --query "start:auto !status:running" ce qui devrait tourner et ne tourne pas
+bws list --query "status:running" --memory ce que consomme le processus de chaque entrée en marche
+bws show Spooler tout ce qu'on sait d'une entrée
+bws show Spooler --full aussi les champs réellement vides
+ bws restart Spooler --dry-run le plan, et rien d'autre
+bws restart Spooler --dependents le redémarrer avec ce qui en dépend
+bws stop Spooler --dependents --timeout 120 autoriser deux minutes par étape sans progrès
+bws start-type WSearch delayed --dry-run le démarrer un peu après les autres entrées automatiques
+bws start-type Spooler disabled --stop le désactiver et l'arrêter en un seul plan
+ bws kill Spooler --dry-run le processus, et chaque service qui y vit
+bws kill Spooler --restart terminer le processus seulement si un arrêt échoue, puis tout remettre en route
+bws kill Spooler --force --dry-run une étape au lieu de deux : le processus terminé aussitôt
+ bws snapshot create before.json --note "before the patch" figer la machine, avec une note conservée dedans
+bws snapshot diff before.json after.json deux fichiers - deux jours, ou deux machines
+bws snapshot diff before.json --live le fichier contre cette machine telle qu'elle est maintenant
+bws snapshot diff before.json --live --exit-code pareil, se terminant par 5 si la configuration a dérivé
+ bws history chaque changement de type de démarrage et installation que contient le journal Système
+bws history Spooler les changements de type de démarrage d'un service
+bws history --json la même chose sous forme de document, avec le journal et les changements
+ bws tool les outils qui existent
+bws tool fix les réparations rapides, et le service derrière chacune
+bws tool fix sound --dry-run le plan de redémarrage des deux services audio
+bws tool fix printer redémarrer le spouleur d'impression avec ce qui en dépend
+ bws license --components chaque composant, sa version, sa licence et son origine
+bws --version la version de cet exécutable
+ # les entrées qui devraient tourner et ne tournent pas, sous forme d'objets
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# les fichiers non signés, dans un tableur
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# ce dont un service a besoin
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# une vérification nocturne qui se branche sur le code de sortie
+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 une seconde commande seulement si la première ne s'est pas terminée proprement
+bws restart Spooler || echo the restart did not end cleanly
+
+rem dans un fichier batch avec l'expansion différée activée, le ! a besoin d'un accent circonflexe
+bws list --query "start:auto ^!status:running"
+ {{switch_count}} au total. La troisième colonne donne les commandes auxquelles chacune appartient - une option passée à une commande qui n'en a pas l'usage est une erreur avec cette liste dedans, plutôt qu'un indicateur ignoré en silence.
+ {{table:switches}} +{{exit_code_count}} fins, et chacune est une chose différente à faire pour un script. Les données vont sur la sortie standard et tout le reste sur l'erreur standard, de sorte que bws list --json | jq fonctionne et qu'un avertissement n'atterrit jamais dans votre JSON.
Tout document JSON est de l'ASCII pur : une lettre hors de l'ASCII est écrite comme une séquence d'échappement de six caractères que tout lecteur JSON retransforme en lettre, de sorte que bws list --json > file.json est de l'UTF-8 valide et que | ConvertFrom-Json le lit correctement quelle que soit la page de codes de la console. Dans le texte qu'une personne lit, un caractère qui déplacerait le terminal au lieu de s'imprimer - une tabulation, un saut de ligne, une séquence d'échappement, un forçage de direction - est affiché sous la forme de son point de code, <U+001B>.
-- termine les options, de sorte qu'un service dont le nom commence par un tiret peut quand même être nommé : bws show -- -odd. Les lignes de commande que l'outil vous remet sont écrites pour PowerShell : un nom contenant une espace va entre guillemets doubles, que cmd lit de la même façon, et un nom que PowerShell développerait à l'intérieur, comme MSSQL$SQLEXPRESS, va entre guillemets simples.
Ctrl+C a trois niveaux, chacun disant ce que coûte le suivant. Le premier cesse d'avancer et remet quand même en place ce qui a été pris, le deuxième laisse les choses en l'état et imprime quand même le rapport, le troisième termine le processus. Une exécution arrêtée à la main se termine par 4 même si chaque étape était arrivée.
Fermer la fenêtre de la console compte comme le premier Ctrl+C. Windows donne cinq secondes à un programme après cela, et pendant ce temps celui-ci cesse d'avancer et remet en place ce qu'il avait arrêté. Se déconnecter et éteindre le terminent sans aucun avertissement auquel il pourrait réagir, et une session distante interrompue peut le faire aussi.
+La forme pour laquelle cet outil a été conçu : figer la machine quand elle est réputée saine, puis demander chaque nuit si elle l'est encore.
+# le jour où la machine entre en service
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# chaque nuit, depuis une tâche planifiée
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - aucune dérive de configuration
+# 5 - la configuration a dérivé, et drift.json dit en quoi
+# 3 - elle a tourné et n'a pas pu tout lire, la réponse est donc partielle
+ La fenêtre est l'autre moitié du même moteur : {{archive_window}} la contient, et la page de téléchargement dit ce qu'est chaque archive.
BetterWindowsServices.exe prend un argument destiné à une personne : --catalogue ouvre une feuille de développeur montrant chaque composant de la fenêtre dans chaque état, et ne lit rien sur votre machine. Un second, --carry, est la façon dont une fenêtre transmet ce qu'elle montrait à la copie d'elle-même qu'elle relance en administrateur. Personne ne le tape, et tout ce qu'il contient que cette fenêtre n'aurait pas pu écrire est refusé.
Ogni comando, ogni opzione e ogni codice di uscita di bws, versione {{version}}. bws --help è la fonte autorevole ed è più lunga - questa pagina è la stessa superficie, disposta per essere letta.
Undici comandi. snapshot è un sostantivo e vuole una parola dopo di sé. Anche tool lo è, e da solo elenca gli strumenti.
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
+ A un comando scritto male viene offerto quello che probabilmente voleva, e l'esecuzione termina con il codice 2 invece di fare qualcosa di simile a ciò che ha chiesto.
$ bws lst
+There is no command lst. Did you mean list?
+ list e showlist è l'intera macchina, ristretta da --query. show è una voce con tutto ciò che se ne sa - la firma, i privilegi, il descrittore di sicurezza e la memoria, tutto letto ogni volta, perché su una sola voce costa circa sessanta millisecondi mentre sull'intera macchina costa un secondo. I campi davvero vuoti vengono omessi a meno che passi --full. Un campo che nessuno ha potuto leggere viene stampato comunque, perché ometterlo sembrerebbe una risposta.
stop, start e restartCiascuno costruisce un piano e lo esegue. --dry-run stampa il piano e non cambia nulla, --dependents vi inserisce come passaggi a sé i servizi che smetterebbero di funzionare, e --timeout dice quanto può durare un passaggio senza progressi. I driver vengono rifiutati anziché tentati, perché fermare un driver del kernel spesso non è reversibile senza un riavvio.
kill - per un servizio che non si fermaChiede al servizio di fermarsi e termina il processo che lo ospita solo se questo non funziona, così una voce che si ferma da sola non viene mai terminata. Terminare un processo porta con sé ogni altro servizio che vive in quel processo, si fosse fermato prima o no, e l'anteprima li nomina e nomina il processo con il suo numero. --force salta il passaggio cortese e l'anteprima mostra allora un passaggio invece di due. --restart rimette tutto a posto dopo.
Windows scrive questa idea in modo diverso. --force su Stop-Service significa "anche se qualcosa ne dipende", che è ciò che qui fa --dependents. Per questo è un comando a sé e non un'opzione di stop.
start-type - un'impostazione, non una mossaDice cosa farà il gestore con una voce al prossimo avvio, e senza --stop non muove nulla: una voce in esecuzione continua a girare, una ferma resta ferma, e il piano lo dice. disabled è quella su cui fermarsi, perché impedisce al gestore di avviare la voce del tutto, anche su richiesta per qualcos'altro che ne ha bisogno. delayed è automatico, avviato un poco dopo le altre voci automatiche - la parola su cui start:delayed interroga in una query - e Windows lo rifiuta per una voce in un gruppo di ordine di caricamento, cosa che il piano dice prima che accada qualsiasi cosa. Ciascuno dei quattro scrive se la voce parte in ritardo, come fa sc.exe. --stop, solo accanto a disabled, ferma la voce nello stesso piano una volta scritta l'impostazione.
snapshot create e snapshot diffcreate legge sempre firme e hash, perché uno snapshot viene conservato e confrontato dopo, e uno senza di essi confrontato con uno che li ha sarebbe trattato come se la macchina fosse cambiata. diff dice cosa è cambiato passando dal primo file al secondo, o da un file a questa macchina con --live. La pagina degli snapshot ha il formato e il ragionamento.
history - chi l'ha cambiato, dal registro di sistemaModifiche del tipo di avvio e installazioni dal registro di sistema, le più recenti per prime, con l'account che Windows ha registrato. La prima riga dice fin dove arriva il registro e se è stato cancellato, perché una cronologia è lunga quanto il registro. Con un nome sono le modifiche del tipo di avvio di quel servizio - le installazioni sono elencate solo senza nome, perché Windows registra un'installazione sotto il nome visualizzato e mai sotto il nome del servizio. Un account è nominato dove questa macchina sa nominarlo da sola e mostrato come SID altrimenti, e i tipi di avvio arrivano con le parole che Windows ha scritto.
+tool - risposte pronte a problemi comuniGli stessi strumenti che la finestra mostra nella sua scheda Tools. bws tool li elenca e bws tool fix elenca le correzioni rapide: printer, sound, indexing e search, ciascuna il riavvio di un servizio Windows insieme a ciò che ne dipende, scelte perché le stesse pagine di risoluzione dei problemi di Microsoft lo suggeriscono. bws tool fix printer è esattamente bws restart Spooler --dependents - lo stesso piano, lo stesso output e gli stessi codici di uscita - e come ogni comando qui che cambia qualcosa non chiede prima, quindi --dry-run è il modo di guardare prima che venga eseguito.
license - cosa c'è dentro il file scaricatoNon legge nulla - né gestore dei servizi, né disco, né rete - e risponde da un registro compilato nell'eseguibile. --components trasforma l'avviso in ogni componente con la sua versione, la sua licenza e la sua provenienza. Lo stesso insieme che porta la distinta dei materiali pubblicata accanto al download, perché entrambe sono prodotte da un unico registro, e il motivo per cui ne vale la pena: il programma è un file autonomo, quindi accanto non c'è nulla che uno scanner possa leggere.
I piani qui sotto sono stati verificati con --dry-run sul programma che questa pagina descrive. Un comando che cambia qualcosa non chiede prima, quindi --dry-run è il modo di guardare prima che venga eseguito. Spooler sta per qualsiasi servizio - metta al suo posto il nome del suo.
bws list ogni servizio e driver di questa macchina
+bws list --query "start:auto !status:running" ciò che dovrebbe essere attivo e non lo è
+bws list --query "status:running" --memory cosa usa il processo di ogni voce in esecuzione
+bws show Spooler tutto ciò che si sa di una voce
+bws show Spooler --full anche i campi davvero vuoti
+ bws restart Spooler --dry-run il piano, e nient'altro
+bws restart Spooler --dependents riavviarlo insieme a ciò che ne dipende
+bws stop Spooler --dependents --timeout 120 consentire due minuti per passaggio senza progressi
+bws start-type WSearch delayed --dry-run avviarlo un poco dopo le altre voci automatiche
+bws start-type Spooler disabled --stop disabilitarlo e fermarlo in un unico piano
+ bws kill Spooler --dry-run il processo, e ogni servizio che vive al suo interno
+bws kill Spooler --restart terminare il processo solo se un arresto fallisce, poi rimettere tutto a posto
+bws kill Spooler --force --dry-run un passaggio invece di due: il processo terminato subito
+ bws snapshot create before.json --note "before the patch" congelare la macchina, con una nota conservata dentro
+bws snapshot diff before.json after.json due file - due giorni, o due macchine
+bws snapshot diff before.json --live il file contro questa macchina com'è adesso
+bws snapshot diff before.json --live --exit-code lo stesso, terminando con 5 se la configurazione è andata alla deriva
+ bws history ogni modifica del tipo di avvio e installazione che il registro di sistema contiene
+bws history Spooler le modifiche del tipo di avvio di un servizio
+bws history --json lo stesso come documento, con registro e modifiche
+ bws tool gli strumenti che ci sono
+bws tool fix le correzioni rapide, e il servizio dietro ciascuna
+bws tool fix sound --dry-run il piano per riavviare i due servizi audio
+bws tool fix printer riavviare lo Spooler di stampa con ciò che ne dipende
+ bws license --components ogni componente, la sua versione, la sua licenza e la sua provenienza
+bws --version la versione di questo eseguibile
+ # le voci che dovrebbero essere attive e non lo sono, come oggetti
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# i file non firmati, in un foglio di calcolo
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# di cosa ha bisogno un servizio
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# un controllo notturno che si ramifica sul codice di uscita
+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 un secondo comando solo quando il primo non è terminato in modo pulito
+bws restart Spooler || echo the restart did not end cleanly
+
+rem in un file batch con l'espansione ritardata attiva, il ! ha bisogno di un accento circonflesso
+bws list --query "start:auto ^!status:running"
+ {{switch_count}} in tutto. La terza colonna indica i comandi a cui appartiene ciascuna - un'opzione passata a un comando che non sa che farsene è un errore con quell'elenco dentro, anziché un flag ignorato in silenzio.
+ {{table:switches}} +{{exit_code_count}} conclusioni, e ognuna è una cosa diversa che uno script deve fare. I dati vanno sullo standard output e tutto il resto sullo standard error, così bws list --json | jq funziona e un avviso non finisce mai nel suo JSON.
Ogni documento JSON è ASCII puro: una lettera fuori da esso viene scritta come una sequenza di escape di sei caratteri che ogni lettore JSON riconverte nella lettera, così bws list --json > file.json è UTF-8 valido e | ConvertFrom-Json lo legge correttamente qualunque sia la tabella codici della console. Nel testo che una persona legge, un carattere che sposterebbe il terminale invece di stamparsi - una tabulazione, un'interruzione di riga, una sequenza di escape, una sovrascrittura di direzione - viene mostrato come il suo punto di codice, <U+001B>.
-- termina le opzioni, così un servizio il cui nome inizia con un trattino può comunque essere nominato: bws show -- -odd. Le righe di comando che lo strumento Le consegna sono scritte per PowerShell: un nome con uno spazio va tra virgolette doppie, che cmd legge allo stesso modo, e un nome che PowerShell espanderebbe al loro interno, come MSSQL$SQLEXPRESS, va tra virgolette singole.
Ctrl+C ha tre livelli, e ciascuno dice quanto costa il successivo. Il primo smette di andare avanti e rimette comunque a posto ciò che era stato preso, il secondo lascia le cose come stanno e stampa comunque il rapporto, il terzo termina il processo. Un'esecuzione fermata a mano termina con 4 anche se ogni passaggio era arrivato.
Chiudere la finestra della console conta come il primo Ctrl+C. Windows dà cinque secondi a un programma dopo di che, e in quelli questo smette di andare avanti e rimette a posto ciò che aveva fermato. Disconnettersi e spegnere lo terminano senza alcun avviso a cui potrebbe reagire, e una sessione remota caduta può fare lo stesso.
+La forma per cui questo strumento è stato costruito: congelare la macchina quando è nota come buona, poi chiedere ogni notte se lo è ancora.
+# il giorno in cui la macchina entra in servizio
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# ogni notte, da un'attività pianificata
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - nessuna deriva di configurazione
+# 5 - la configurazione è andata alla deriva, e drift.json dice come
+# 3 - è girato e non ha potuto leggere tutto, quindi la risposta è parziale
+ La finestra è l'altra metà dello stesso motore: {{archive_window}} la contiene, e la pagina di download dice cos'è ciascun archivio.
BetterWindowsServices.exe accetta un argomento pensato per una persona: --catalogue apre un foglio per sviluppatori che mostra ogni componente della finestra in ogni stato e non legge nulla dalla sua macchina. Un secondo, --carry, è il modo in cui una finestra passa ciò che mostrava alla copia di sé che riavvia come amministratore. Nessuno lo digita, e tutto ciò che contiene che quella finestra non avrebbe potuto scrivere viene rifiutato.
Cada comando, cada opção e cada código de saída do bws, versão {{version}}. O bws --help é a fonte autorizada e é mais longo - esta página é a mesma superfície, organizada para ser lida.
Onze comandos. O snapshot é um substantivo e recebe uma palavra depois dele. O tool também é, e sozinho lista as ferramentas.
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
+ A um comando digitado errado é oferecido o que você provavelmente quis dizer, e a execução termina com o código 2 em vez de fazer algo parecido com o que você pediu.
$ bws lst
+There is no command lst. Did you mean list?
+ list e showO list é a máquina inteira, restringida por --query. O show é uma entrada com tudo o que se sabe sobre ela - a assinatura, os privilégios, o descritor de segurança e a memória, tudo lido a cada vez, porque em uma só entrada isso custa cerca de sessenta milissegundos, enquanto na máquina inteira custa um segundo. Campos realmente vazios são omitidos, a menos que você passe --full. Um campo que ninguém conseguiu ler é impresso de qualquer jeito, porque omiti-lo pareceria uma resposta.
stop, start e restartCada um constrói um plano e o executa. --dry-run imprime o plano e não muda nada, --dependents coloca nele os serviços que deixariam de funcionar como etapas próprias, e --timeout diz quanto tempo uma etapa pode ficar sem progresso. Drivers são recusados em vez de tentados, porque parar um driver de kernel muitas vezes não é reversível sem reiniciar.
kill - para um serviço que não paraEle pede ao serviço que pare e encerra o processo por trás dele somente se isso não funcionar, de modo que uma entrada que para sozinha nunca é encerrada. Encerrar um processo leva consigo todos os outros serviços que vivem nele, tenham parado antes ou não, e a pré-visualização os nomeia e nomeia o processo pelo número. --force pula a etapa educada e a pré-visualização mostra então uma etapa em vez de duas. --restart traz tudo de volta depois.
O Windows escreve esta ideia de forma diferente. --force no Stop-Service significa "mesmo que algo dependa dele", que é o que o --dependents faz aqui. É por isso que este é um comando próprio e não uma opção do stop.
start-type - uma configuração, não um movimentoDiz o que o gerenciador fará com uma entrada na próxima inicialização, e sem --stop não move nada: uma entrada que está em execução continua em execução, uma parada continua parada, e o plano diz isso. disabled é o que merece uma pausa, porque impede o gerenciador de iniciar a entrada, inclusive sob demanda para outra coisa que precise dela. delayed é automático, iniciado um pouco depois das outras entradas automáticas - a palavra que start:delayed pergunta em uma consulta - e o Windows o recusa para uma entrada em um grupo de ordem de carga, o que o plano diz antes de qualquer coisa acontecer. Cada um dos quatro grava se a entrada inicia tarde, como o sc.exe faz. --stop, só ao lado de disabled, para a entrada no mesmo plano depois que a configuração é gravada.
snapshot create e snapshot diffO create sempre lê assinaturas e hashes, porque um instantâneo é guardado e comparado depois, e um sem eles comparado com um que os tem seria tratado como se a máquina tivesse mudado. O diff diz o que mudou indo do primeiro arquivo para o segundo, ou de um arquivo para esta máquina com --live. A página de instantâneos traz o formato e o raciocínio.
history - quem mudou, pelo log do SistemaMudanças de tipo de inicialização e instalações do log do Sistema, as mais recentes primeiro, com a conta que o Windows registrou. A primeira linha diz até onde o log alcança e se foi limpo, porque um histórico é tão longo quanto o log. Com um nome, são as mudanças de tipo de inicialização daquele serviço - instalações só são listadas sem nome, porque o Windows registra uma instalação sob o nome de exibição e nunca sob o nome do serviço. Uma conta é nomeada onde esta máquina consegue nomeá-la por conta própria e mostrada como SID caso contrário, e os tipos de inicialização vêm nas palavras que o Windows escreveu.
+tool - respostas prontas para problemas comunsAs mesmas ferramentas que a janela mostra na aba Tools. O bws tool as lista e o bws tool fix lista as correções rápidas: printer, sound, indexing e search, cada uma uma reinicialização de um serviço do Windows junto com o que depende dele, escolhidas porque as próprias páginas de solução de problemas da Microsoft sugerem isso. O bws tool fix printer é exatamente bws restart Spooler --dependents - o mesmo plano, a mesma saída e os mesmos códigos de saída - e, como todo comando aqui que muda algo, não pergunta antes, então --dry-run é o jeito de olhar antes de executar.
license - o que há dentro do arquivo que você baixouNão lê nada - nem gerenciador de serviços, nem disco, nem rede - e responde a partir de um registro compilado no executável. --components transforma o aviso em cada componente com sua versão, sua licença e sua origem. O mesmo conjunto que a lista de materiais publicada ao lado do download traz, porque as duas são geradas de um único registro, e o motivo pelo qual vale a pena: o programa é um arquivo autônomo, então não há nada ao lado dele para um scanner ler.
Os planos abaixo foram conferidos com --dry-run contra o programa que esta página descreve. Um comando que muda algo não pergunta antes, então --dry-run é o jeito de olhar antes de executar. Spooler representa qualquer serviço - coloque no lugar dele o nome do seu.
bws list cada serviço e driver desta máquina
+bws list --query "start:auto !status:running" o que deveria estar no ar e não está
+bws list --query "status:running" --memory o que o processo de cada entrada em execução usa
+bws show Spooler tudo o que se sabe sobre uma entrada
+bws show Spooler --full também os campos realmente vazios
+ bws restart Spooler --dry-run o plano, e nada mais
+bws restart Spooler --dependents reiniciá-lo junto com o que depende dele
+bws stop Spooler --dependents --timeout 120 permitir dois minutos por etapa sem progresso
+bws start-type WSearch delayed --dry-run iniciá-lo um pouco depois das outras entradas automáticas
+bws start-type Spooler disabled --stop desabilitá-lo e pará-lo em um só plano
+ bws kill Spooler --dry-run o processo, e cada serviço que vive nele
+bws kill Spooler --restart encerrar o processo só se uma parada falhar, depois trazer tudo de volta
+bws kill Spooler --force --dry-run uma etapa em vez de duas: o processo encerrado na hora
+ bws snapshot create before.json --note "before the patch" congelar a máquina, com uma nota guardada dentro
+bws snapshot diff before.json after.json dois arquivos - dois dias, ou duas máquinas
+bws snapshot diff before.json --live o arquivo contra esta máquina como está agora
+bws snapshot diff before.json --live --exit-code o mesmo, terminando com 5 se a configuração se desviou
+ bws history cada mudança de tipo de inicialização e instalação que o log do Sistema guarda
+bws history Spooler as mudanças de tipo de inicialização de um serviço
+bws history --json o mesmo como documento, com log e mudanças
+ bws tool as ferramentas que existem
+bws tool fix as correções rápidas, e o serviço por trás de cada uma
+bws tool fix sound --dry-run o plano para reiniciar os dois serviços de áudio
+bws tool fix printer reiniciar o Spooler de Impressão com o que depende dele
+ bws license --components cada componente, sua versão, sua licença e sua origem
+bws --version a versão deste executável
+ # as entradas que deveriam estar no ar e não estão, como objetos
+bws list --query "start:auto !status:running" --json | ConvertFrom-Json | Select-Object serviceName, displayName, status
+
+# os arquivos sem assinatura, para uma planilha
+bws list --query "signed:no" --json | ConvertFrom-Json | Select-Object serviceName, binaryPath | Export-Csv unsigned.csv -NoTypeInformation
+
+# de que um serviço precisa
+(bws show Spooler --json | ConvertFrom-Json).dependsOn
+
+# uma verificação noturna que se ramifica pelo código de saída
+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 um segundo comando só quando o primeiro não terminou limpo
+bws restart Spooler || echo the restart did not end cleanly
+
+rem em um arquivo em lote com expansão atrasada ligada, o ! precisa de um acento circunflexo
+bws list --query "start:auto ^!status:running"
+ {{switch_count}} no total. A terceira coluna traz os comandos a que cada uma pertence - uma opção passada a um comando que não tem uso para ela é um erro com essa lista dentro, em vez de uma flag ignorada em silêncio.
+ {{table:switches}} +{{exit_code_count}} desfechos, e cada um é uma coisa diferente para um script fazer. Os dados vão para a saída padrão e todo o resto para o erro padrão, de modo que bws list --json | jq funciona e um aviso nunca cai no seu JSON.
Todo documento JSON é ASCII puro: uma letra fora dele é escrita como uma sequência de escape de seis caracteres que todo leitor de JSON converte de volta na letra, de modo que bws list --json > file.json é UTF-8 válido e | ConvertFrom-Json o lê direito seja qual for a página de código do console. No texto que uma pessoa lê, um caractere que moveria o terminal em vez de ser impresso - uma tabulação, uma quebra de linha, uma sequência de escape, uma substituição de direção - é mostrado como seu ponto de código, <U+001B>.
-- encerra as opções, de modo que um serviço cujo nome começa com um hífen ainda pode ser nomeado: bws show -- -odd. As linhas de comando que a ferramenta entrega a você são escritas para o PowerShell: um nome com espaço vai entre aspas duplas, que o cmd lê do mesmo jeito, e um nome que o PowerShell expandiria dentro delas, como MSSQL$SQLEXPRESS, vai entre aspas simples.
O Ctrl+C tem três níveis, cada um dizendo o que o próximo custa. O primeiro para de avançar e ainda recoloca o que foi tirado, o segundo deixa as coisas como estão e ainda imprime o relatório, o terceiro encerra o processo. Uma execução parada à mão termina com 4 mesmo que cada etapa tenha chegado.
Fechar a janela do console conta como o primeiro Ctrl+C. O Windows dá cinco segundos a um programa depois disso, e neles este para de avançar e recoloca o que tinha derrubado. Fazer logoff e desligar o encerram sem nenhum aviso a que ele possa reagir, e uma sessão remota interrompida também pode.
+A forma para a qual esta ferramenta foi construída: congelar a máquina quando se sabe que está boa, depois perguntar toda noite se ainda está.
+# o dia em que a máquina entra em serviço
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# toda noite, a partir de uma tarefa agendada
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - sem deriva de configuração
+# 5 - a configuração se desviou, e drift.json diz o quê
+# 3 - rodou e não conseguiu ler tudo, então a resposta é parcial
+ A janela é a outra metade do mesmo motor: {{archive_window}} a contém, e a página de download diz o que é cada arquivo.
O BetterWindowsServices.exe aceita um argumento pensado para uma pessoa: --catalogue abre uma folha de desenvolvedor mostrando cada componente da janela em cada estado, e não lê nada da sua máquina. Um segundo, --carry, é como uma janela entrega o que estava mostrando à cópia de si mesma que reinicia como administrador. Ninguém o digita, e tudo nele que aquela janela não poderia ter escrito é recusado.
Version {{version}}. Die Archive brauchen keinen Installer und schreiben nichts in die Registrierung, und zum Ansehen sind keine Administratorrechte nötig. Ein signierter Installer bringt stattdessen beide Programme auf den ganzen Rechner. Kostenlos und quelloffen unter der GPL-3.0.
+ +| Datei | Was es ist |
|---|---|
{{archive_window}} | Das Fenster: BetterWindowsServices.exe, eine eigenständige ausführbare Datei mit eigener .NET-Laufzeit im Inneren |
{{archive_cli}} | Die Befehlszeile: bws.exe, eine eigenständige ausführbare Datei, für Skripte, geplante Aufgaben und CI |
{{archive_installer}} | Der Installer: beide Programme in Program Files für jedes Konto auf dem Rechner, das Fenster im Startmenü und bws im PATH des Rechners |
Nehmen Sie eines oder beide - es sind zwei Clients derselben Engine, und keiner braucht den anderen. Auf einem Server ist die Befehlszeile die kleinere der beiden und kann alles, was das Fenster kann.
+Der Installer enthält genau das, was die beiden Archive enthalten. Er installiert sich still mit msiexec /i {{archive_installer}} /qn, eine neuere Version wird über eine ältere installiert, und er beendet nichts, was läuft - schließen Sie also vor dem Upgrade das Fenster und jedes laufende bws, denn eine weiterlaufende Kopie kann mit einem Fehler anhalten. Die Deinstallation über Einstellungen, Apps entfernt die Programme, den Startmenüeintrag und den PATH-Eintrag und lässt Ihre eigenen Dateien in Ruhe.
Die ausführbaren Dateien tragen eine Authenticode-Signatur, sodass Windows den Herausgeber nennt, statt vor einem unbekannten zu warnen.
+Das Fenster hält eine eigene Datei - das Layout, in dem Sie die Liste verlassen haben - unter %APPDATA%\BetterWindowsServices. Ein Snapshot landet dort, wo Sie es bws snapshot create sagen, und im aktuellen Verzeichnis, wenn Sie nichts sagen.
Das Programm spricht Englisch. Das Fenster liest eine Sprachdatei, languages\gui.<Code>.json, die daneben liegt und nach der Sprache von Windows gewählt wird, ohne Schalter. Eine Übersetzung ist daher ein Beitrag, der sich ohne Neubau ergänzen lässt - CONTRIBUTING.md sagt, wie.
Dieses Werkzeug tut, was ein Administrator mit Diensten tut, und einiges davon ist das, worauf Sicherheitssoftware achtet.
+Es beendet und startet Dienste, es kann den Prozess hinter einem Dienst beenden, und es liest von jedem Dienst den Sicherheitsdeskriptor und die erforderlichen Privilegien. Ein EDR, der einen Prozess meldet, der svchost.exe beendet, macht seine Arbeit, und ein erzwungenes Beenden hier kann genau so aussehen.
Was es nicht tut, damit Sie die Aussage prüfen können: Es schleust nichts in einen Prozess ein, es packt oder verschleiert nichts, es installiert keinen Dienst und keinen Treiber und lässt nichts laufen, und es öffnet keine Netzwerkverbindung. Es ist quelloffen unter der GPL-3.0, und Sie können beide ausführbaren Dateien selbst bauen.
+Wenn Ihre Richtlinie eine Ausnahme braucht, nehmen Sie die beiden ausführbaren Dateien per Datei aus und nicht einen Ordner. Das Einzige, was Sie mit derselben Sorgfalt behandeln sollten wie das Werkzeug selbst, ist eine Snapshot-Datei: Sie beschreibt den ganzen Rechner.
+.NET-10-SDK, unter Windows.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Einige Tests lesen den echten Dienststeuerungs-Manager des Rechners, auf dem sie laufen, und vergleichen, was dieses Werkzeug sagt, mit dem, was sc.exe sagt. Sie sind schreibgeschützt. Die Einzeldatei-Programme, die die Releases enthalten, sind diese beiden Veröffentlichungen, jeweils eine Datei mit der Laufzeit im Inneren:
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
+ Sie landen als bws.exe und BetterWindowsServices.exe unter bin/Release/.../win-x64/publish/ des jeweiligen Projekts. Die .pdb-Dateien daneben sind Debugsymbole, und zum Ausführen braucht sie nichts.
Gemessen auf einem Rechner mit 810 Diensten. Ihre Werte werden abweichen - Anzahl der Dienste, Datenträger und Prozessor verschieben sie alle.
+braucht bws list, um den ganzen Rechner zu lesen.
vom Start des Fensters, bis die Liste auf dem Bildschirm steht.
für das Fenster - die Hälfte davon das Windows-Framework für die Oberfläche, noch bevor irgendein eigener Code dieses Werkzeugs läuft.
für die Befehlszeile auf demselben Rechner.
Versión {{version}}. Los archivos no necesitan instalador ni escriben nada en el Registro, y consultar no requiere derechos de administrador. Un instalador firmado coloca en su lugar ambos programas en todo el equipo. Libre y gratuito bajo GPL-3.0.
+ +| Archivo | Qué es |
|---|---|
{{archive_window}} | La ventana: BetterWindowsServices.exe, un ejecutable autónomo con su propio entorno de ejecución .NET dentro |
{{archive_cli}} | La línea de comandos: bws.exe, un ejecutable autónomo, para scripts, tareas programadas e integración continua |
{{archive_installer}} | El instalador: ambos programas en Program Files para todas las cuentas del equipo, la ventana en el menú Inicio y bws en el PATH del equipo |
Tome uno o ambos: son dos clientes del mismo motor y ninguno necesita al otro. En un servidor, la línea de comandos es la más pequeña de las dos y hace todo lo que hace la ventana.
+El instalador contiene exactamente lo que contienen los dos archivos. Se instala en silencio con msiexec /i {{archive_installer}} /qn, una versión más nueva se instala sobre una más antigua y no cierra nada de lo que se está ejecutando, así que cierre la ventana y cualquier bws en marcha antes de actualizar, porque una copia que siga abierta puede detenerse con un error. Desinstalar desde Configuración, Aplicaciones elimina los programas, la entrada del menú Inicio y la entrada del PATH, y deja intactos sus propios archivos.
Los ejecutables llevan una firma Authenticode, de modo que Windows nombra al editor en lugar de advertir de uno desconocido.
+La ventana guarda un archivo propio, la disposición en la que dejó la lista, en %APPDATA%\BetterWindowsServices. Una instantánea va donde usted le diga a bws snapshot create que la ponga, y al directorio actual cuando no lo hace.
El programa habla inglés. La ventana lee un archivo de idioma, languages\gui.<código>.json, colocado junto a ella y elegido según el idioma de Windows, sin ninguna opción. Una traducción es, por tanto, una contribución que se puede añadir sin recompilar: CONTRIBUTING.md explica cómo.
Esta herramienta hace lo que hace un administrador con los servicios, y parte de ello es lo que vigila el software de seguridad.
+Detiene e inicia servicios, puede terminar el proceso que hay detrás de uno y lee el descriptor de seguridad y los privilegios requeridos de cada servicio. Un EDR que marca un proceso que termina svchost.exe hace su trabajo, y una detención forzada aquí puede parecerse exactamente a eso.
Lo que no hace, para que pueda comprobar la afirmación: no inyecta nada en ningún proceso, no empaqueta ni ofusca nada, no instala ningún servicio ni controlador y no deja nada en ejecución, y no abre ninguna conexión de red. Es de código abierto bajo GPL-3.0 y puede compilar usted mismo ambos ejecutables.
+Si su política necesita una exclusión, excluya los dos ejecutables por archivo y no una carpeta. Lo único que merece el mismo cuidado que la propia herramienta es un archivo de instantánea: describe todo el equipo.
+SDK de .NET 10, en Windows.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Algunas pruebas leen el administrador de control de servicios real del equipo en el que se ejecutan y comparan lo que dice esta herramienta con lo que dice sc.exe. Son de solo lectura. Los ejecutables de un solo archivo que llevan las versiones son estas dos publicaciones, cada una un archivo con el entorno de ejecución dentro:
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
+ Aparecen como bws.exe y BetterWindowsServices.exe en bin/Release/.../win-x64/publish/ de cada proyecto. Los archivos .pdb que hay al lado son símbolos de depuración, y nada los necesita para ejecutarse.
Medido en un equipo con 810 servicios. Sus cifras serán distintas: el número de servicios, el disco y el procesador las mueven todas.
+para que bws list lea todo el equipo.
desde que se inicia la ventana hasta que la lista está en pantalla.
para la ventana: la mitad es el marco de interfaz de usuario de Windows, antes de que se ejecute ningún código propio de esta herramienta.
para la línea de comandos sobre el mismo equipo.
Version {{version}}. Les archives n'ont pas besoin d'installeur et n'écrivent rien dans le Registre, et consulter ne demande aucun droit d'administrateur. Un installeur signé place à la place les deux programmes sur toute la machine. Libre et gratuit sous GPL-3.0.
+ +| Fichier | Ce que c'est |
|---|---|
{{archive_window}} | La fenêtre : BetterWindowsServices.exe, un exécutable autonome avec son propre runtime .NET à l'intérieur |
{{archive_cli}} | La ligne de commande : bws.exe, un exécutable autonome, pour les scripts, les tâches planifiées et la CI |
{{archive_installer}} | L'installeur : les deux programmes dans Program Files pour chaque compte de la machine, la fenêtre dans le menu Démarrer et bws dans le PATH de la machine |
Prenez l'un ou l'autre, ou les deux - ce sont deux clients du même moteur et aucun n'a besoin de l'autre. Sur un serveur, la ligne de commande est la plus petite des deux et fait tout ce que fait la fenêtre.
+L'installeur contient exactement ce que contiennent les deux archives. Il s'installe en silence avec msiexec /i {{archive_installer}} /qn, une version plus récente s'installe par-dessus une plus ancienne, et il ne ferme rien de ce qui tourne - fermez donc la fenêtre et tout bws en cours avant la mise à jour, car une copie laissée en marche peut s'arrêter avec une erreur. La désinstallation depuis Paramètres, Applications supprime les programmes, l'entrée du menu Démarrer et l'entrée du PATH, et ne touche pas à vos propres fichiers.
Les exécutables portent une signature Authenticode, de sorte que Windows nomme l'éditeur au lieu d'avertir d'un éditeur inconnu.
+La fenêtre garde un fichier à elle - la disposition dans laquelle vous avez laissé la liste - sous %APPDATA%\BetterWindowsServices. Un instantané va là où vous dites à bws snapshot create de le mettre, et dans le répertoire courant quand vous ne dites rien.
Le programme parle anglais. La fenêtre lit un fichier de langue, languages\gui.<code>.json, placé à côté d'elle et choisi selon la langue de Windows, sans option. Une traduction est donc une contribution qui peut s'ajouter sans recompiler - CONTRIBUTING.md explique comment.
Cet outil fait ce que fait un administrateur avec les services, et une partie de cela est ce que surveillent les logiciels de sécurité.
+Il arrête et démarre des services, il peut terminer le processus derrière l'un d'eux, et il lit le descripteur de sécurité et les privilèges requis de chaque service. Un EDR qui signale un processus terminant svchost.exe fait son travail, et un arrêt forcé ici peut ressembler exactement à cela.
Ce qu'il ne fait pas, pour que vous puissiez vérifier l'affirmation : il n'injecte rien dans aucun processus, il ne compresse ni n'obfusque rien, il n'installe ni service ni pilote et ne laisse rien en marche, et il n'ouvre aucune connexion réseau. Il est libre sous GPL-3.0 et vous pouvez compiler vous-même les deux exécutables.
+Si votre politique exige une exclusion, excluez les deux exécutables par fichier plutôt qu'un dossier. La seule chose à traiter avec le même soin que l'outil lui-même est un fichier d'instantané : il décrit la machine entière.
+SDK .NET 10, sous Windows.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Certains tests lisent le vrai gestionnaire de contrôle des services de la machine sur laquelle ils tournent et comparent ce que dit cet outil avec ce que dit sc.exe. Ils sont en lecture seule. Les exécutables à fichier unique que contiennent les versions sont ces deux publications, chacune un fichier avec le runtime à l'intérieur :
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
+ Ils atterrissent sous les noms bws.exe et BetterWindowsServices.exe dans bin/Release/.../win-x64/publish/ de chaque projet. Les fichiers .pdb à côté sont des symboles de débogage, et rien n'en a besoin pour s'exécuter.
Mesuré sur une machine de 810 services. Vos chiffres seront différents - le nombre de services, le disque et le processeur les font tous varier.
+pour que bws list lise toute la machine.
du lancement de la fenêtre à la liste affichée à l'écran.
pour la fenêtre - la moitié étant le framework d'interface utilisateur de Windows, avant qu'aucun code propre à cet outil ne s'exécute.
pour la ligne de commande sur la même machine.
Versione {{version}}. Gli archivi non richiedono un programma di installazione e non scrivono nulla nel Registro, e consultare non richiede diritti di amministratore. Un programma di installazione firmato mette invece entrambi i programmi su tutta la macchina. Libero e gratuito con licenza GPL-3.0.
+ +| File | Che cos'è |
|---|---|
{{archive_window}} | La finestra: BetterWindowsServices.exe, un eseguibile autonomo con il proprio runtime .NET all'interno |
{{archive_cli}} | La riga di comando: bws.exe, un eseguibile autonomo, per script, attività pianificate e CI |
{{archive_installer}} | Il programma di installazione: entrambi i programmi in Program Files per ogni account della macchina, la finestra nel menu Start e bws nel PATH della macchina |
Ne prenda uno o entrambi - sono due client dello stesso motore e nessuno dei due ha bisogno dell'altro. Su un server, la riga di comando è la più piccola delle due e fa tutto ciò che fa la finestra.
+Il programma di installazione contiene esattamente ciò che contengono i due archivi. Si installa in modo silenzioso con msiexec /i {{archive_installer}} /qn, una versione più recente si installa sopra una più vecchia e non chiude nulla di ciò che è in esecuzione - chiuda quindi la finestra e qualsiasi bws in esecuzione prima di aggiornare, perché una copia lasciata attiva può fermarsi con un errore. La disinstallazione da Impostazioni, App rimuove i programmi, la voce del menu Start e la voce del PATH, e lascia stare i suoi file.
Gli eseguibili portano una firma Authenticode, così Windows nomina l'editore invece di avvertire di uno sconosciuto.
+La finestra tiene un file suo - la disposizione in cui ha lasciato l'elenco - in %APPDATA%\BetterWindowsServices. Uno snapshot va dove dice a bws snapshot create di metterlo, e nella cartella corrente quando non lo dice.
Il programma parla inglese. La finestra legge un file di lingua, languages\gui.<codice>.json, posto accanto a essa e scelto in base alla lingua di Windows, senza alcuna opzione. Una traduzione è quindi un contributo che si può aggiungere senza ricompilare - CONTRIBUTING.md spiega come.
Questo strumento fa ciò che fa un amministratore con i servizi, e parte di questo è ciò che il software di sicurezza tiene d'occhio.
+Ferma e avvia servizi, può terminare il processo dietro uno di essi e legge il descrittore di sicurezza e i privilegi richiesti di ogni servizio. Un EDR che segnala un processo che termina svchost.exe fa il suo lavoro, e un arresto forzato qui può assomigliare esattamente a quello.
Ciò che non fa, così che possa verificare l'affermazione: non inietta nulla in alcun processo, non comprime né offusca nulla, non installa alcun servizio né driver e non lascia nulla in esecuzione, e non apre alcuna connessione di rete. È open source con licenza GPL-3.0 e può compilare da sé entrambi gli eseguibili.
+Se la sua policy richiede un'esclusione, escluda i due eseguibili per file anziché una cartella. L'unica cosa da trattare con la stessa cura dello strumento stesso è un file di snapshot: descrive l'intera macchina.
+SDK .NET 10, su Windows.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Alcuni test leggono il vero gestore di controllo dei servizi della macchina su cui girano e confrontano ciò che dice questo strumento con ciò che dice sc.exe. Sono di sola lettura. Gli eseguibili a file singolo che le versioni portano sono queste due pubblicazioni, ciascuna un file con il runtime all'interno:
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
+ Finiscono come bws.exe e BetterWindowsServices.exe sotto bin/Release/.../win-x64/publish/ di ciascun progetto. I file .pdb accanto sono simboli di debug, e nulla ne ha bisogno per girare.
Misurato su una macchina con 810 servizi. I suoi numeri saranno diversi - il numero di servizi, il disco e il processore li spostano tutti.
+perché bws list legga l'intera macchina.
dall'avvio della finestra all'elenco sullo schermo.
per la finestra - metà dei quali è il framework dell'interfaccia utente di Windows, prima che giri qualsiasi codice proprio di questo strumento.
per la riga di comando sulla stessa macchina.
Versão {{version}}. Os arquivos compactados não precisam de instalador e não gravam nada no Registro, e consultar não exige direitos de administrador. Um instalador assinado coloca os dois programas na máquina toda, em vez disso. Livre e gratuito sob a GPL-3.0.
+ +| Arquivo | O que é |
|---|---|
{{archive_window}} | A janela: BetterWindowsServices.exe, um executável autônomo com seu próprio runtime .NET dentro |
{{archive_cli}} | A linha de comando: bws.exe, um executável autônomo, para scripts, tarefas agendadas e CI |
{{archive_installer}} | O instalador: os dois programas em Program Files para todas as contas da máquina, a janela no menu Iniciar e o bws no PATH da máquina |
Fique com um ou com os dois - são dois clientes do mesmo motor e nenhum precisa do outro. Em um servidor, a linha de comando é a menor das duas e faz tudo o que a janela faz.
+O instalador traz exatamente o que os dois arquivos compactados trazem. Ele se instala em modo silencioso com msiexec /i {{archive_installer}} /qn, uma versão mais nova se instala por cima de uma mais antiga, e ele não fecha nada do que está em execução - então feche a janela e qualquer bws em execução antes de atualizar, porque uma cópia deixada aberta pode parar com um erro. Desinstalar em Configurações, Aplicativos remove os programas, a entrada do menu Iniciar e a entrada do PATH, e deixa seus próprios arquivos em paz.
Os executáveis levam uma assinatura Authenticode, de modo que o Windows nomeia o editor em vez de avisar sobre um desconhecido.
+A janela guarda um arquivo próprio - o layout em que você deixou a lista - em %APPDATA%\BetterWindowsServices. Um instantâneo vai para onde você mandar o bws snapshot create colocá-lo, e para o diretório atual quando você não manda.
O programa fala inglês. A janela lê um arquivo de idioma, languages\gui.<código>.json, colocado ao lado dela e escolhido pelo idioma do Windows, sem nenhuma opção. Uma tradução é, portanto, uma contribuição que pode ser acrescentada sem recompilar - o CONTRIBUTING.md diz como.
Esta ferramenta faz o que um administrador faz com serviços, e parte disso é o que o software de segurança vigia.
+Ela para e inicia serviços, pode encerrar o processo por trás de um deles e lê o descritor de segurança e os privilégios exigidos de cada serviço. Um EDR que sinaliza um processo encerrando o svchost.exe está fazendo o seu trabalho, e uma parada forçada aqui pode parecer exatamente isso.
O que ela não faz, para que você possa conferir a afirmação: não injeta nada em nenhum processo, não empacota nem ofusca nada, não instala nenhum serviço nem driver e não deixa nada em execução, e não abre nenhuma conexão de rede. É de código aberto sob a GPL-3.0 e você mesmo pode compilar os dois executáveis.
+Se a sua política exigir uma exclusão, exclua os dois executáveis por arquivo e não uma pasta. A única coisa que merece o mesmo cuidado que a própria ferramenta é um arquivo de instantâneo: ele descreve a máquina inteira.
+SDK do .NET 10, no Windows.
+git clone {{repo}}
+cd BetterWindowsServices
+dotnet build BetterWindowsServices.slnx -c Release
+dotnet test BetterWindowsServices.slnx -c Release
+ Alguns testes leem o gerenciador de controle de serviços real da máquina em que rodam e comparam o que esta ferramenta diz com o que o sc.exe diz. São somente leitura. Os executáveis de arquivo único que as versões trazem são estas duas publicações, cada uma um arquivo com o runtime dentro:
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
+ Eles saem como bws.exe e BetterWindowsServices.exe em bin/Release/.../win-x64/publish/ de cada projeto. Os arquivos .pdb ao lado são símbolos de depuração, e nada precisa deles para executar.
Medido em uma máquina com 810 serviços. Os seus números serão diferentes - o número de serviços, o disco e o processador mexem em todos.
+para o bws list ler a máquina inteira.
do início da janela até a lista estar na tela.
para a janela - metade disso é o framework de interface de usuário do Windows, antes de qualquer código próprio desta ferramenta rodar.
para a linha de comando sobre a mesma máquina.
Ein Werkzeug, das etwas stillschweigend nicht abdeckt, ist schlechter als eines, das sagt, was es nicht kann. Auch die Grenzen stehen auf dieser Seite, in zwei Gruppen: was es absichtlich verweigert und was Windows tut und dieses Werkzeug so meldet, wie es ist.
+sc.exe, Get-Service oder services.msc?sc query und Get-Service sagen, was läuft. services.msc lässt Sie es ändern, Zeile für Zeile, ohne Möglichkeit, eine Frage zu stellen, und ohne Aufzeichnung danach. Dieses Werkzeug stellt die Frage (start:auto !status:running), zeigt den Plan, bevor es handelt, und hält einen Snapshot bereit, den Sie eine Woche später vergleichen können. Wo es bei einem Dienst von sc.exe abweicht, ist das ein Fehler - ein Teil der Testsuite führt beide aus und vergleicht sie Eintrag für Eintrag. Der längere Vergleich steht hier.
Nie. Keine Telemetrie, keine Updateprüfung, keine Absturzberichte, kein Konto, kein Client von irgendetwas. Das einzige Mal, dass es überhaupt ein Netzwerk berühren kann, ist, wenn Sie --follow-network übergeben: Dann darf es einen Startpfad auf der Freigabe eines anderen Rechners ansehen und Windows ein Zertifikat holen lassen, das dieser Rechner noch nicht hat - standardmäßig aus, und die Hilfe sagt, warum. Die Schaltflächen GitHub und Donate im Fenster und die Seite in seinem Menü Help geben beim Drücken jeweils eine feste Adresse an Ihren Browser weiter, und Ihr Browser ist es, der sich verbindet.
Zum Ansehen nein. Zum Ändern ja. Ohne sie zeigt der Manager weniger Einträge und lehnt mehr ab, und beide Hälften sagen das ganz oben, statt so zu tun, als wäre die Liste der ganze Rechner. Das Fenster bietet Restart as admin an. Es erhöht seine Rechte nie selbst.
+Ja, beides. GPL-3.0, ohne Bedingungen. Ein Snapshot, den Sie erstellen, ist Ihre Datei.
+Nicht von selbst. Nichts wird ohne einen Plan geändert, den Sie gesehen haben, Treiber werden abgelehnt, und ein Plan, der etwas stilllegen würde, das der Rechner braucht, sagt das. Wovor es Sie nicht schützen kann, ist, einen Plan auszuführen, den Sie nicht gelesen haben. Die Liste der Dienste, die der Rechner braucht, ist eine Startliste mit sieben Einträgen - die beiden Hälften von RPC und der DCOM-Starter, der Kontenmanager, die Schlüsselisolierung, der Sitzungsmanager und Plug and Play - und Remotedesktop steht nicht darauf, lesen Sie also in einer Remotesitzung den Plan.
+Nein. {{product}} ist ein unabhängiges Open-Source-Projekt und steht in keiner Verbindung zu Microsoft, wird nicht von Microsoft unterstützt und nicht von Microsoft gesponsert. Windows ist eine Marke der Microsoft-Unternehmensgruppe.
+Nein - das Programm spricht Englisch, und deshalb ist diese Seite übersetzt. Das Fenster liest eine Sprachdatei, languages\gui.<Code>.json, die neben der ausführbaren Datei liegt, und wählt sie nach der Sprache von Windows, ohne Schalter, sodass eine Übersetzung ein Beitrag ist, der sich ohne Neubau des Programms ergänzen lässt. Die Namen der Dienste in der Liste sind das, was Ihr Windows dazu sagt - in der Sprache, in der Ihr Windows eingerichtet ist.
Es ist dunkel und bleibt dunkel, was auch immer in Windows eingestellt ist, auch bei einem Kontrastdesign. Das ist geprüft und nicht angenommen - es behält seine eigenen Farben und bleibt lesbar, und es folgt dieser Einstellung nicht.
+3. Das Fenster bietet an, sich selbst als Administrator neu zu starten, und tut sonst nichts dazu..net-Ordner unter dem temporären Ordner des Kontos und lädt sie von dort. Mit Administratorrechten nutzt es stattdessen ProgramData\BetterWindowsServices auf dem Windows-Laufwerk - einen Ordner, den es so anlegt, dass nur Administratoren ihn ändern können, und bei jedem Start prüft. Kann dieser Ordner nicht angelegt werden oder können andere ihn ändern, startet das Fenster nicht und sagt, welcher Ordner und was zu tun ist. Der Umzug dorthin bedeutet, dass sich ein Fenster mit erhöhten Rechten ein zweites Mal selbst startet, was den Bruchteil einer Sekunde dauert, und jede Version lässt ihre Bibliotheken dort liegen (etwa 8 MB), bis jemand den Ordner löscht. Die Befehlszeile trägt keine solchen Bibliotheken und entpackt nichts.svchost gehostet wird, hat einen Startpfad, der den Host nennt, sodass die Datei ist da und wer sie signiert hat beide weniger aussagen als bei einem Dienst mit eigenem Prozess.Ein Problem gefunden oder einen Dienst, den dieses Werkzeug anders meldet als sc.exe? Der Issue-Tracker ist offen, und ein Vergleich der beiden ist das Nützlichste, was Sie dort einfügen können.
Una herramienta que deja de cubrir algo en silencio es peor que una que dice lo que no puede hacer. Los límites también están en esta página, en dos grupos: lo que rechaza por diseño y lo que hace Windows y esta herramienta informa tal cual.
+sc.exe, Get-Service o services.msc?sc query y Get-Service dicen qué se está ejecutando. services.msc permite cambiarlo, una fila cada vez, sin forma de hacer una pregunta y sin registro después. Esta herramienta hace la pregunta (start:auto !status:running), muestra el plan antes de actuar y guarda una instantánea que puede comparar una semana después. Cuando discrepa de sc.exe sobre un servicio, es un error: parte del conjunto de pruebas ejecuta ambos y los compara entrada por entrada. La comparación más larga está aquí.
Nunca. Sin telemetría, sin comprobación de actualizaciones, sin informes de fallos, sin cuenta, sin cliente de nada. La única vez que puede tocar una red es cuando se pasa --follow-network: entonces puede mirar una ruta de lanzamiento en el recurso compartido de otro equipo y dejar que Windows obtenga un certificado que este equipo aún no tiene; está desactivado por defecto y la ayuda dice por qué. Los botones GitHub y Donate de la ventana y la página de su menú Help entregan cada uno una dirección fija a su navegador al pulsarlos, y es su navegador el que se conecta.
Para consultar, no. Para cambiar, sí. Sin ellos el administrador muestra menos entradas y rechaza más, y ambas mitades lo dicen arriba en lugar de fingir que la lista es todo el equipo. La ventana ofrece Restart as admin. Nunca se eleva por sí misma.
+Sí a ambas. GPL-3.0, sin letra pequeña. Una instantánea que usted toma es su archivo.
+No por sí misma. No se cambia nada sin un plan que usted haya visto, los controladores se rechazan y un plan que derribaría algo que el equipo necesita lo dice. De lo que no puede protegerle es de ejecutar un plan que no leyó. La lista de servicios que el equipo necesita es una lista inicial de siete (las dos mitades de RPC y el iniciador de DCOM, el administrador de cuentas, el aislamiento de claves, el administrador de sesiones y Plug and Play), y el Escritorio remoto no está en ella, así que en una sesión remota, lea el plan.
+No. {{product}} es un proyecto de código abierto independiente y no está afiliado a Microsoft, ni respaldado ni patrocinado por Microsoft. Windows es una marca del grupo de empresas de Microsoft.
+No: el programa habla inglés, y por eso este sitio está traducido. La ventana lee un archivo de idioma, languages\gui.<código>.json, colocado junto al ejecutable y lo elige según el idioma de Windows, sin ninguna opción, de modo que una traducción es una contribución que se puede añadir sin recompilar el programa. Los nombres de los servicios de la lista son lo que dice su Windows: en el idioma en el que esté configurado.
Es oscura y sigue siéndolo cualquiera que sea la configuración de Windows, incluido un tema de alto contraste. Eso está comprobado y no supuesto: conserva sus propios colores y sigue siendo legible, y no sigue esa configuración.
+3. La ventana se ofrece a reiniciarse como administrador y no hace nada más al respecto..net bajo la carpeta temporal de la cuenta y las carga desde allí. Con derechos de administrador usa en su lugar ProgramData\BetterWindowsServices en la unidad de Windows: una carpeta que crea de modo que solo los administradores puedan modificarla, y que comprueba en cada inicio. Si esa carpeta no se puede crear, o si otros pueden modificarla, la ventana no se inicia y dice qué carpeta y qué hacer. Pasar allí significa que una ventana con privilegios elevados se inicia a sí misma una segunda vez, lo que tarda una fracción de segundo, y cada versión deja allí sus bibliotecas (unos 8 MB) hasta que alguien borra la carpeta. La línea de comandos no lleva tales bibliotecas y no descomprime nada.svchost tiene una ruta de lanzamiento que nombra al host, de modo que el archivo está ahí y quién lo firmó dicen ambos menos que para un servicio con proceso propio.¿Ha encontrado un problema, o un servicio que esta herramienta informa de forma distinta a sc.exe? El seguimiento de incidencias está abierto, y una diferencia entre ambos es lo más útil que puede pegar en él.
Un outil qui ne couvre pas quelque chose en silence est pire qu'un outil qui dit ce qu'il ne sait pas faire. Les limites sont aussi sur cette page, en deux groupes : ce qu'il refuse par conception, et ce que fait Windows et que cet outil rapporte tel quel.
+sc.exe, Get-Service ou services.msc ?sc query et Get-Service disent ce qui tourne. services.msc permet de le changer, une ligne à la fois, sans moyen de poser une question et sans trace ensuite. Cet outil pose la question (start:auto !status:running), montre le plan avant d'agir, et garde un instantané que vous pouvez comparer une semaine plus tard. Quand il n'est pas d'accord avec sc.exe sur un service, c'est un bogue - une partie de la suite de tests exécute les deux et les compare entrée par entrée. La comparaison plus longue est ici.
Jamais. Pas de télémétrie, pas de vérification de mise à jour, pas de rapport de plantage, pas de compte, pas de client de quoi que ce soit. La seule fois où il peut toucher un réseau, c'est quand vous passez --follow-network : il peut alors regarder un chemin de lancement sur le partage d'une autre machine et laisser Windows récupérer un certificat que cette machine n'a pas déjà - désactivé par défaut, et l'aide dit pourquoi. Les boutons GitHub et Donate de la fenêtre et la page de son menu Help transmettent chacun une adresse fixe à votre navigateur quand vous les pressez, et c'est votre navigateur qui se connecte.
Pour consulter, non. Pour modifier, oui. Sans eux, le gestionnaire montre moins d'entrées et en refuse davantage, et les deux moitiés le disent en haut au lieu de faire comme si la liste était la machine entière. La fenêtre propose Restart as admin. Elle ne s'élève jamais d'elle-même.
+Oui aux deux. GPL-3.0, sans condition cachée. Un instantané que vous prenez est votre fichier.
+Pas de lui-même. Rien n'est changé sans un plan que vous avez vu, les pilotes sont refusés, et un plan qui arrêterait quelque chose dont la machine a besoin le dit. Ce dont il ne peut pas vous protéger, c'est d'exécuter un plan que vous n'avez pas lu. La liste des services dont la machine a besoin est une liste de départ de sept - les deux moitiés de RPC et le lanceur DCOM, le gestionnaire de comptes, l'isolation des clés, le gestionnaire de session et le Plug and Play - et le Bureau à distance n'y figure pas, donc dans une session distante, lisez le plan.
+Non. {{product}} est un projet libre indépendant et n'est ni affilié à Microsoft, ni approuvé, ni parrainé par Microsoft. Windows est une marque du groupe de sociétés Microsoft.
+Non - le programme parle anglais, et c'est pour cela que ce site est traduit. La fenêtre lit un fichier de langue, languages\gui.<code>.json, placé à côté de l'exécutable et le choisit selon la langue de Windows, sans option, de sorte qu'une traduction est une contribution qui peut s'ajouter sans recompiler le programme. Les noms des services dans la liste sont ce que dit votre Windows - dans la langue dans laquelle votre Windows est configuré.
Elle est sombre et le reste quel que soit le réglage de Windows, y compris un thème à contraste élevé. C'est vérifié et non supposé - elle garde ses propres couleurs et reste lisible, et elle ne suit pas ce réglage.
+3. La fenêtre propose de se relancer en administrateur, et ne fait rien d'autre à ce sujet..net sous le dossier temporaire du compte et les charge de là. Avec des droits d'administrateur, elle utilise à la place ProgramData\BetterWindowsServices sur le lecteur Windows - un dossier qu'elle crée de façon que seuls les administrateurs puissent le modifier, et qu'elle vérifie à chaque démarrage. Si ce dossier ne peut pas être créé, ou si d'autres peuvent le modifier, la fenêtre ne démarre pas et dit quel dossier et que faire. S'y installer signifie qu'une fenêtre avec élévation se relance une seconde fois, ce qui prend une fraction de seconde, et chaque version y laisse ses bibliothèques (environ 8 Mo) jusqu'à ce que quelqu'un supprime le dossier. La ligne de commande ne porte aucune bibliothèque de ce genre et ne décompresse rien.svchost a un chemin de lancement qui nomme l'hôte, de sorte que le fichier est là et qui l'a signé disent tous deux moins que pour un service doté de son propre processus.Un problème trouvé, ou un service que cet outil rapporte autrement que sc.exe ? Le suivi des tickets est ouvert, et une comparaison entre les deux est ce qu'il y a de plus utile à y coller.
Uno strumento che non copre qualcosa in silenzio è peggio di uno che dice cosa non sa fare. Anche i limiti sono in questa pagina, in due gruppi: ciò che rifiuta per scelta progettuale e ciò che fa Windows e che questo strumento riporta così com'è.
+sc.exe, Get-Service o services.msc?sc query e Get-Service dicono cosa è in esecuzione. services.msc permette di cambiarlo, una riga alla volta, senza modo di porre una domanda e senza traccia dopo. Questo strumento pone la domanda (start:auto !status:running), mostra il piano prima di agire e conserva uno snapshot che può confrontare una settimana dopo. Dove non concorda con sc.exe su un servizio, è un bug - parte della suite di test esegue entrambi e li confronta voce per voce. Il confronto più lungo è qui.
Mai. Nessuna telemetria, nessun controllo degli aggiornamenti, nessuna segnalazione di arresti anomali, nessun account, nessun client di niente. L'unica volta che può toccare una rete è quando passa --follow-network: allora può guardare un percorso di avvio sulla condivisione di un'altra macchina e lasciare che Windows recuperi un certificato che questa macchina non ha già - disattivato per impostazione predefinita, e la guida dice perché. I pulsanti GitHub e Donate nella finestra e la pagina nel suo menu Help consegnano ciascuno un indirizzo fisso al browser quando li preme, ed è il browser a collegarsi.
Per guardare, no. Per cambiare, sì. Senza di essi il gestore mostra meno voci e rifiuta di più, ed entrambe le metà lo dicono in alto invece di far finta che l'elenco sia l'intera macchina. La finestra offre Restart as admin. Non si eleva mai da sola.
+Sì a entrambi. GPL-3.0, senza condizioni nascoste. Uno snapshot che prende è il suo file.
+Non da solo. Nulla viene cambiato senza un piano che ha visto, i driver vengono rifiutati e un piano che farebbe cadere qualcosa di cui la macchina ha bisogno lo dice. Ciò da cui non può proteggerla è l'esecuzione di un piano che non ha letto. L'elenco dei servizi di cui la macchina ha bisogno è un elenco iniziale di sette - le due metà di RPC e l'avviatore DCOM, il gestore degli account, l'isolamento delle chiavi, il gestore delle sessioni e Plug and Play - e Desktop remoto non c'è, quindi in una sessione remota, legga il piano.
+No. {{product}} è un progetto open source indipendente e non è affiliato a Microsoft, né approvato né sponsorizzato da Microsoft. Windows è un marchio del gruppo di società Microsoft.
+No - il programma parla inglese, ed è per questo che questo sito è tradotto. La finestra legge un file di lingua, languages\gui.<codice>.json, posto accanto all'eseguibile e lo sceglie in base alla lingua di Windows, senza alcuna opzione, così una traduzione è un contributo che si può aggiungere senza ricompilare il programma. I nomi dei servizi nell'elenco sono ciò che dice il suo Windows - nella lingua in cui il suo Windows è configurato.
È scura e resta scura qualunque sia l'impostazione di Windows, compreso un tema ad alto contrasto. È verificato e non presunto - mantiene i propri colori e resta leggibile, e non segue quell'impostazione.
+3. La finestra offre di riavviarsi come amministratore e non fa altro al riguardo..net sotto la cartella temporanea dell'account e le carica da lì. Con diritti di amministratore usa invece ProgramData\BetterWindowsServices sull'unità di Windows - una cartella che crea in modo che solo gli amministratori possano modificarla, e che controlla a ogni avvio. Se quella cartella non può essere creata, o se altri possono modificarla, la finestra non si avvia e dice quale cartella e cosa fare. Spostarsi lì significa che una finestra con privilegi elevati si avvia una seconda volta, il che richiede una frazione di secondo, e ogni versione vi lascia le proprie librerie (circa 8 MB) finché qualcuno non elimina la cartella. La riga di comando non porta tali librerie e non decomprime nulla.svchost ha un percorso di avvio che nomina l'host, così il file è presente e chi l'ha firmato dicono entrambi meno che per un servizio con un processo proprio.Ha trovato un problema, o un servizio che questo strumento riporta in modo diverso da sc.exe? Il tracker delle segnalazioni è aperto, e una differenza tra i due è la cosa più utile da incollarvi.
Uma ferramenta que deixa de cobrir algo em silêncio é pior do que uma que diz o que não consegue fazer. Os limites também estão nesta página, em dois grupos: o que ela recusa por projeto e o que o Windows faz e esta ferramenta informa como é.
+sc.exe, do Get-Service ou do services.msc?O sc query e o Get-Service dizem o que está em execução. O services.msc permite mudar isso, uma linha por vez, sem como fazer uma pergunta e sem registro depois. Esta ferramenta faz a pergunta (start:auto !status:running), mostra o plano antes de agir e guarda um instantâneo que você pode comparar uma semana depois. Onde ela discorda do sc.exe sobre um serviço, isso é um bug - parte do conjunto de testes executa os dois e os compara entrada por entrada. A comparação mais longa está aqui.
Nunca. Sem telemetria, sem verificação de atualização, sem relatório de falhas, sem conta, sem cliente de nada. A única vez em que pode tocar uma rede é quando você passa --follow-network: aí ele pode olhar um caminho de lançamento no compartilhamento de outra máquina e deixar o Windows buscar um certificado que esta máquina ainda não tem - desativado por padrão, e a ajuda diz por quê. Os botões GitHub e Donate da janela e a página do menu Help entregam cada um um endereço fixo ao seu navegador quando você os pressiona, e é o seu navegador que se conecta.
Para olhar, não. Para mudar, sim. Sem eles o gerenciador mostra menos entradas e recusa mais, e as duas metades dizem isso no topo em vez de fingir que a lista é a máquina inteira. A janela oferece Restart as admin. Ela nunca se eleva sozinha.
+Sim para os dois. GPL-3.0, sem pegadinhas. Um instantâneo que você faz é o seu arquivo.
+Não por si só. Nada é mudado sem um plano que você viu, drivers são recusados e um plano que derrubaria algo de que a máquina precisa diz isso. Do que ele não pode proteger você é de executar um plano que você não leu. A lista de serviços de que a máquina precisa é uma lista inicial de sete - as duas metades do RPC e o iniciador do DCOM, o gerenciador de contas, o isolamento de chaves, o gerenciador de sessões e o plug and play - e a Área de Trabalho Remota não está nela, então em uma sessão remota, leia o plano.
+Não. O {{product}} é um projeto de código aberto independente e não é afiliado, endossado nem patrocinado pela Microsoft. Windows é uma marca do grupo de empresas Microsoft.
+Não - o programa fala inglês, e é por isso que este site é traduzido. A janela lê um arquivo de idioma, languages\gui.<código>.json, colocado ao lado do executável e o escolhe pelo idioma do Windows, sem nenhuma opção, de modo que uma tradução é uma contribuição que pode ser acrescentada sem recompilar o programa. Os nomes dos serviços na lista são o que o seu Windows diz - no idioma em que o seu Windows está configurado.
Ela é escura e continua escura seja qual for a configuração do Windows, inclusive um tema de alto contraste. Isso é verificado e não presumido - ela mantém suas próprias cores e continua legível, e não segue essa configuração.
+3. A janela se oferece para reiniciar como administrador e não faz mais nada a respeito..net sob a pasta temporária da conta e as carrega de lá. Com direitos de administrador ela usa em vez disso ProgramData\BetterWindowsServices na unidade do Windows - uma pasta que ela cria de modo que só administradores possam alterá-la, e que verifica a cada inicialização. Se essa pasta não puder ser criada, ou se outros puderem alterá-la, a janela não inicia e diz qual pasta e o que fazer. Mudar para lá significa que uma janela com privilégios elevados inicia a si mesma uma segunda vez, o que leva uma fração de segundo, e cada versão deixa suas bibliotecas lá (cerca de 8 MB) até alguém apagar a pasta. A linha de comando não traz essas bibliotecas e não descompacta nada.svchost tem um caminho de lançamento que nomeia o host, de modo que o arquivo está lá e quem o assinou dizem ambos menos do que para um serviço com processo próprio.Encontrou um problema, ou um serviço que esta ferramenta informa de forma diferente do sc.exe? O rastreador de problemas está aberto, e uma diferença entre os dois é a coisa mais útil que você pode colar nele.
{{product}} ist services.msc, neu gebaut für alle, die Windows-Rechner administrieren - ein Fenster und eine Befehlszeile über einer gemeinsamen Engine. Stellen Sie dem Rechner eine Frage, statt achthundert Zeilen zu durchblättern. Sehen Sie, was eine Änderung bewirkt, bevor Sie irgendetwas bestätigen. Und das, was services.msc nie hatte: jeden Dienst in eine Datei einfrieren und eine Woche später fragen, was sich geändert hat.
+ bws-Zeile, die genau dasselbe verlangt. Das Programm spricht Englisch - das Fenster liest eine Sprachdatei, die daneben liegt, sodass eine Übersetzung ohne Neubau möglich ist.Eine echte Sitzung auf einem auf Polnisch installierten Windows - die Anzeigenamen kommen von Windows, deshalb stehen sie in dessen Sprache. Das Fenster selbst spricht Englisch.
+
+ services.msc hat sich seit Windows 2000 kaum verändertAdministratoren verbringen damit pro Woche Stunden und stoßen immer wieder an dieselben Wände.
+sc.exe aus dem Kopf oder die Registrierung.sc.exe hat eine Syntax aus den Neunzigern, und das Get-Service, das mit Windows in Windows PowerShell 5.1 kommt, zeigt weder das Konto, unter dem ein Dienst läuft, noch gar seine Beschreibung. PowerShell 7 zeigt beides und wird separat installiert.Process Hacker und System Informer zeigen eine reichhaltige Liste und können einen Prozess hart beenden, haben aber weder Audit noch Befehlszeile. sc.exe und PsService können alles und sagen nichts. Die *-Service-Cmdlets von PowerShell sind skriptfähig und oberflächlich.
Niemand verbindet eine durchsuchbare Liste, eine Vorschau vor jeder Änderung und ein Protokoll dessen, was sich im Lauf der Zeit geändert hat - und das Protokoll ist der Grund, dieses Werkzeug nach dem ersten Nachmittag auf einem Rechner zu behalten.
+ Der vollständige Vergleich +start:auto !status:running heißt was laufen sollte und nicht läuft. Eine Sprache, im Suchfeld und in bws list --query, mit den Feldern als Vorschlag während der Eingabe.
Jedes Beenden, Starten, Neustarten und jede Änderung des Starttyps wird samt den Diensten, die dabei mit heruntergehen, vorab angezeigt, und die Vorschau ist das, was ausgeführt wird.
bws snapshot create friert den Rechner in eine Datei ein, und bws snapshot diff sagt, was sich seither geändert hat, die Konfiguration getrennt von dem, was nur gestartet oder beendet wurde. bws history sagt anhand des Systemprotokolls, wer einen Starttyp geändert und wer einen Dienst installiert hat. Das Fenster erledigt alle drei unter Audit....
Der Reiter Tools und bws tool fix starten den Dienst hinter einem Drucker, der nicht druckt, einem verschwundenen Ton oder einer hängenden Suche samt allem, was davon abhängt, über denselben Plan wie alles andere neu.
Es fragt zuerst höflich und beendet den Prozess nur, wenn das fehlschlägt, und nennt dabei jeden anderen Dienst, der in ihm lebt.
services.msc verbirgtWer die Programmdatei signiert hat und ob Windows ihr vertraut, Trigger, Privilegien, den Sicherheitsdeskriptor, den Prozess und seinen Speicher. Als Spalten und als Kriterien für die Suche.
Ein Feld, das es nicht lesen konnte, wird als nicht gelesen gemeldet und nie als leer angezeigt. Ein Snapshot ohne Administratorrechte sagt das in der Datei selbst.
--json bei jedem Befehl, ein Exit-Code für jedes Ende und 5, wenn ein Vergleich Drift findet.
Entpacken und starten oder für den ganzen Rechner installieren. Kein .NET zu installieren, und es nimmt nie Kontakt zum Internet auf. Zum Lesen sind keine Administratorrechte nötig. GPL-3.0.
Ein Snapshot ist der ganze Rechner in einem Augenblick - jeder Dienst und jeder Treiber mit Starttyp, Konto, Startpfad, Hash und Signierer seiner Datei, Abhängigkeiten, Triggern, Privilegien und Sicherheitsdeskriptor. Er ist JSON mit einem Feld pro Zeile, sodass er in ein Repository passt und git diff ihn lesen kann.
$ 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 endet mit 5, wenn sich die Konfiguration unterscheidet, sodass eine geplante Aufgabe bei der Bereitstellung einen Snapshot machen und in der ersten Nacht, in der der Rechner abdriftet, jemanden alarmieren kann.Jede schreibende Operation baut zuerst einen Plan, und derselbe Plan ist die Vorschau, die Kaskade der abhängigen Dienste, die Ablehnung, bevor Sie etwas bestätigen, die Befehlszeile, die dasselbe verlangt, und der Weg zurück danach.
+$ 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 aus, und das sind die Schritte, in dieser Reihenfolge, mit denselben Gründen daneben. Es gibt keinen zweiten Codepfad für den Ernstfall.bws kill bittet den Dienst, sich zu beenden, und beendet seinen Prozess nur, wenn das nicht klappt, und nennt dabei jeden anderen Dienst, der in ihm lebt.Dieselbe Engine wie das Fenster, für Skripte, geplante Aufgaben und CI. Daten gehen auf die Standardausgabe und alles andere auf die Standardfehlerausgabe, sodass bws list --json | jq funktioniert und eine Warnung nie in Ihrem JSON landet.
bws list --query "start:auto !status:running" was laufen sollte und nicht läuft
+bws list --query "file:missing" Dienste, deren Programmdatei fehlt
+bws list --query "signed:no peruser:no" unsigniert, ohne die Kopien pro Sitzung
+bws show Spooler alles, was über einen Eintrag bekannt ist
+bws stop Winmgmt --dry-run --dependents was das Beenden mit herunterreißen würde
+bws kill Spooler --dry-run was das Beenden seines Prozesses mitnehmen würde
+bws start-type Spooler manual --dry-run was es bewirken würde, ihn von automatisch zu nehmen
+bws snapshot create before.json den Rechner vor einer Änderung einfrieren
+bws snapshot diff before.json --live --exit-code was sich seither geändert hat, 5 bei geänderter Konfiguration
+bws history Spooler wer seinen Starttyp geändert hat und wann
+bws tool fix printer --dry-run was die Schnellreparatur für einen hängenden Drucker täte
+ Jeder Befehl, jeder Schalter, jeder Exit-Code
+ Windows 10 1809 oder Windows Server 2019 und neuer, 64 Bit. Die Archive brauchen keinen Installer und schreiben nichts in die Registrierung, und zum Ansehen sind keine Administratorrechte nötig. Zum Ändern braucht es eine Sitzung mit erhöhten Rechten, und beide Hälften sagen das, statt still zu scheitern - das Fenster bietet Restart as admin an.
+| Datei | Was es ist |
|---|---|
{{archive_window}} | Das Fenster, eine eigenständige ausführbare Datei - kein .NET zu installieren |
{{archive_cli}} | Die Befehlszeile, eine eigenständige ausführbare Datei, für Skripte und CI |
{{archive_installer}} | Der Installer: beide Programme für jedes Konto auf dem Rechner, das Fenster im Startmenü und bws im PATH |
Die ausführbaren Dateien tragen eine Authenticode-Signatur, sodass Windows den Herausgeber nennt, statt vor einem unbekannten zu warnen.
+ +{{product}} es services.msc reconstruido para quienes administran equipos Windows: una ventana y una línea de comandos sobre un único motor. Haga una pregunta al equipo en lugar de recorrer ochocientas filas. Vea qué hará un cambio antes de pulsar nada. Y lo que services.msc nunca tuvo: congelar cada servicio en un archivo y, una semana después, preguntar qué cambió.
+ bws que pide exactamente lo mismo. El programa habla inglés: la ventana lee un archivo de idioma colocado junto a ella, así que es posible traducirla sin recompilar.Una sesión real, en un Windows instalado en polaco: los nombres para mostrar vienen de Windows, así que están en su idioma. La ventana en sí habla inglés.
+
+ services.msc apenas ha cambiado desde Windows 2000Los administradores pasan horas a la semana en él chocando con las mismas paredes.
+sc.exe de memoria, o el Registro.sc.exe tiene una sintaxis de los noventa, y el Get-Service que viene con Windows, en Windows PowerShell 5.1, no muestra la cuenta con la que se ejecuta un servicio, y mucho menos su descripción. PowerShell 7 muestra ambas y se instala por separado.Process Hacker y System Informer muestran una lista rica y pueden terminar un proceso a la fuerza, pero no tienen auditoría ni línea de comandos. sc.exe y PsService pueden hacerlo todo y no le dicen nada. Los cmdlets *-Service de PowerShell son programables y superficiales.
Nadie combina una lista en la que buscar, una vista previa antes de cada cambio y un registro de lo que cambió con el tiempo, y ese registro es la razón para conservar esta herramienta en un equipo pasada la primera tarde.
+ La comparación completa +start:auto !status:running significa lo que debería estar en marcha y no lo está. Un único lenguaje, en el cuadro de búsqueda y en bws list --query, con los campos sugeridos mientras escribe.
Cada detención, inicio, reinicio y cambio de tipo de inicio se previsualiza con los servicios que arrastra consigo, y la vista previa es lo que se ejecuta.
bws snapshot create congela el equipo en un archivo y bws snapshot diff dice qué cambió desde entonces, la configuración aparte de lo que simplemente se inició o se detuvo. bws history dice, a partir del registro del sistema, quién cambió un tipo de inicio y quién instaló un servicio. La ventana hace las tres cosas en Audit....
La pestaña Tools y bws tool fix reinician el servicio que hay detrás de una impresora que no imprime, un sonido que ha desaparecido o una búsqueda atascada, junto con lo que depende de él, mediante el mismo plan que todo lo demás.
Primero pide amablemente y termina el proceso solo si eso falla, nombrando cada otro servicio que vive en él.
services.msc ocultaQuién firmó el ejecutable y si Windows confía en él, desencadenadores, privilegios, el descriptor de seguridad, el proceso y su memoria. Como columnas y como criterios de búsqueda.
Un campo que no pudo leer se informa como no leído, nunca se muestra como vacío. Una instantánea tomada sin derechos de administrador lo dice dentro del propio archivo.
--json en cada comando, un código de salida para cada final y 5 cuando una comparación encuentra deriva.
Descomprima y ejecute, o instálelo para todo el equipo. Sin .NET que instalar, y nunca se conecta a Internet. Consultar no requiere derechos de administrador. GPL-3.0.
Una instantánea es el equipo entero en un momento dado: cada servicio y cada controlador, con su tipo de inicio, cuenta, ruta de lanzamiento, el hash y el firmante de su archivo, sus dependencias, desencadenadores, privilegios y descriptor de seguridad. Es JSON con un campo por línea, así que cabe en un repositorio y git diff lo lee.
$ 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 termina con 5 cuando la configuración difiere, de modo que una tarea programada puede tomar una instantánea en el despliegue y avisar a alguien la primera noche que el equipo se desvíe.Toda operación que escribe construye primero un plan, y ese mismo plan es la vista previa, la cascada de servicios dependientes, el rechazo antes de que pulse nada, la línea de comandos que pide lo mismo y el camino de vuelta después.
+$ 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 y esos son los pasos, en ese orden, con las mismas razones al lado. No hay un segundo camino de código para la ejecución real.bws kill pide al servicio que se detenga y termina su proceso solo si eso no funciona, nombrando cada otro servicio que vive en él.El mismo motor que la ventana, para scripts, tareas programadas e integración continua. Los datos van a la salida estándar y todo lo demás al error estándar, de modo que bws list --json | jq funciona y una advertencia nunca acaba en su JSON.
bws list --query "start:auto !status:running" lo que debería estar en marcha y no lo está
+bws list --query "file:missing" servicios cuyo ejecutable ha desaparecido
+bws list --query "signed:no peruser:no" sin firmar, sin las copias por sesión
+bws show Spooler todo lo que se sabe de una entrada
+bws stop Winmgmt --dry-run --dependents lo que arrastraría detenerlo
+bws kill Spooler --dry-run lo que se llevaría terminar su proceso
+bws start-type Spooler manual --dry-run lo que haría quitarlo del inicio automático
+bws snapshot create before.json congelar el equipo antes de un cambio
+bws snapshot diff before.json --live --exit-code qué ha cambiado desde entonces, 5 si la configuración cambió
+bws history Spooler quién cambió su tipo de inicio, y cuándo
+bws tool fix printer --dry-run lo que haría la reparación rápida de una impresora atascada
+ Cada comando, opción y código de salida
+ Windows 10 1809 o Windows Server 2019 y posteriores, de 64 bits. Los archivos no necesitan instalador ni escriben nada en el Registro, y consultar no requiere derechos de administrador. Cambiar cualquier cosa exige una sesión con privilegios elevados, y ambas mitades lo dicen en lugar de fallar en silencio: la ventana ofrece Restart as admin.
+| Archivo | Qué es |
|---|---|
{{archive_window}} | La ventana, un ejecutable autónomo: sin .NET que instalar |
{{archive_cli}} | La línea de comandos, un ejecutable autónomo, para scripts e integración continua |
{{archive_installer}} | El instalador: ambos programas para todas las cuentas del equipo, la ventana en el menú Inicio y bws en el PATH |
Los ejecutables llevan una firma Authenticode, de modo que Windows nombra al editor en lugar de advertir de uno desconocido.
+ +{{product}} est services.msc reconstruit pour celles et ceux qui administrent des machines Windows - une fenêtre et une ligne de commande sur un seul moteur. Posez une question à la machine au lieu de faire défiler huit cents lignes. Voyez ce qu'un changement va faire avant de valider quoi que ce soit. Et ce que services.msc n'a jamais eu : figer chaque service dans un fichier, et demander une semaine plus tard ce qui a changé.
+ bws qui demande exactement la même chose. Le programme parle anglais - la fenêtre lit un fichier de langue placé à côté d'elle, une traduction est donc possible sans recompilation.Une vraie session, sur un Windows installé en polonais - les noms affichés viennent de Windows, ils sont donc dans sa langue. La fenêtre elle-même parle anglais.
+
+
+
+ services.msc a à peine changé depuis Windows 2000Les administrateurs y passent des heures chaque semaine à se heurter aux mêmes murs.
+sc.exe de mémoire, ou le Registre.sc.exe a une syntaxe des années quatre-vingt-dix, et le Get-Service fourni avec Windows, dans Windows PowerShell 5.1, n'affiche pas le compte sous lequel un service s'exécute, encore moins sa description. PowerShell 7 affiche les deux et s'installe séparément.Process Hacker et System Informer affichent une liste riche et peuvent tuer un processus de force, mais n'ont ni audit ni ligne de commande. sc.exe et PsService peuvent tout faire et ne vous disent rien. Les cmdlets *-Service de PowerShell sont scriptables et superficielles.
Personne ne combine une liste où l'on peut chercher, un aperçu avant chaque changement et une trace de ce qui a changé au fil du temps - et cette trace est la raison de garder cet outil sur une machine après le premier après-midi.
+ La comparaison complète +start:auto !status:running veut dire ce qui devrait tourner et ne tourne pas. Un seul langage, dans le champ de recherche et dans bws list --query, avec les champs proposés pendant la saisie.
Chaque arrêt, démarrage, redémarrage et changement de type de démarrage est prévisualisé avec les services qu'il entraîne dans sa chute, et l'aperçu est ce qui s'exécute.
bws snapshot create fige la machine dans un fichier, et bws snapshot diff dit ce qui a changé depuis, la configuration à part de ce qui a simplement démarré ou s'est arrêté. bws history dit, d'après le journal Système, qui a changé un type de démarrage et qui a installé un service. La fenêtre fait les trois sous Audit....
L'onglet Tools et bws tool fix redémarrent le service derrière une imprimante qui n'imprime pas, un son disparu ou une recherche bloquée, avec ce qui en dépend, par le même plan que tout le reste.
Il demande poliment d'abord et ne termine le processus que si cela échoue, en nommant chaque autre service qui y vit.
services.msc cacheQui a signé l'exécutable et si Windows lui fait confiance, les déclencheurs, les privilèges, le descripteur de sécurité, le processus et sa mémoire. En colonnes, et comme critères de recherche.
Un champ qu'il n'a pas pu lire est signalé comme non lu, jamais affiché comme vide. Un instantané pris sans droits d'administrateur le dit dans le fichier lui-même.
--json sur chaque commande, un code de sortie pour chaque fin, et 5 quand une comparaison trouve une dérive.
Décompressez et lancez, ou installez-le pour toute la machine. Aucun .NET à installer, et il ne contacte jamais Internet. Consulter ne demande aucun droit d'administrateur. GPL-3.0.
Un instantané est la machine entière à un moment donné - chaque service et chaque pilote, avec son type de démarrage, son compte, son chemin de lancement, le hachage et le signataire de son fichier, ses dépendances, ses déclencheurs, ses privilèges et son descripteur de sécurité. C'est du JSON avec un champ par ligne, il entre donc dans un dépôt et git diff le lit.
$ 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 termine par 5 quand la configuration diffère, de sorte qu'une tâche planifiée peut prendre un instantané au déploiement et alerter quelqu'un la première nuit où la machine dérive.Toute opération qui écrit construit d'abord un plan, et ce même plan est l'aperçu, la cascade des services dépendants, le refus avant que vous validiez quoi que ce soit, la ligne de commande qui demande la même chose, et le chemin du retour ensuite.
+$ 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 et ce sont ces étapes, dans cet ordre, avec les mêmes raisons à côté. Il n'y a pas de second chemin de code pour la vraie exécution.bws kill demande au service de s'arrêter et ne termine son processus que si cela ne marche pas, en nommant chaque autre service qui y vit.Le même moteur que la fenêtre, pour les scripts, les tâches planifiées et la CI. Les données vont sur la sortie standard et tout le reste sur l'erreur standard, de sorte que bws list --json | jq fonctionne et qu'un avertissement n'atterrit jamais dans votre JSON.
bws list --query "start:auto !status:running" ce qui devrait tourner et ne tourne pas
+bws list --query "file:missing" les services dont l'exécutable a disparu
+bws list --query "signed:no peruser:no" non signés, sans les copies par session
+bws show Spooler tout ce qu'on sait d'une entrée
+bws stop Winmgmt --dry-run --dependents ce que son arrêt entraînerait
+bws kill Spooler --dry-run ce que la fin de son processus emporterait
+bws start-type Spooler manual --dry-run ce que ferait le retrait du démarrage automatique
+bws snapshot create before.json figer la machine avant un changement
+bws snapshot diff before.json --live --exit-code ce qui a changé depuis, 5 si la configuration a changé
+bws history Spooler qui a changé son type de démarrage, et quand
+bws tool fix printer --dry-run ce que ferait la réparation rapide d'une imprimante bloquée
+ Chaque commande, option et code de sortie
+ Windows 10 1809 ou Windows Server 2019 et ultérieurs, 64 bits. Les archives n'ont pas besoin d'installeur et n'écrivent rien dans le Registre, et consulter ne demande aucun droit d'administrateur. Modifier quoi que ce soit demande une session avec élévation, et les deux moitiés le disent au lieu d'échouer en silence - la fenêtre propose Restart as admin.
+| Fichier | Ce que c'est |
|---|---|
{{archive_window}} | La fenêtre, un exécutable autonome - aucun .NET à installer |
{{archive_cli}} | La ligne de commande, un exécutable autonome, pour les scripts et la CI |
{{archive_installer}} | L'installeur : les deux programmes pour chaque compte de la machine, la fenêtre dans le menu Démarrer et bws dans le PATH |
Les exécutables portent une signature Authenticode, de sorte que Windows nomme l'éditeur au lieu d'avertir d'un éditeur inconnu.
+ +{{product}} è services.msc ricostruito per chi amministra macchine Windows - una finestra e una riga di comando su un unico motore. Faccia una domanda alla macchina invece di scorrere ottocento righe. Veda cosa farà una modifica prima di premere qualsiasi cosa. E ciò che services.msc non ha mai avuto: congelare ogni servizio in un file e, una settimana dopo, chiedere cosa è cambiato.
+ bws che chiede esattamente la stessa cosa. Il programma parla inglese - la finestra legge un file di lingua posto accanto a essa, quindi una traduzione è possibile senza ricompilare.Una sessione reale, su un Windows installato in polacco - i nomi visualizzati vengono da Windows, quindi sono nella sua lingua. La finestra stessa parla inglese.
+
+ services.msc è cambiato appena dai tempi di Windows 2000Gli amministratori vi passano ore ogni settimana scontrandosi con gli stessi muri.
+sc.exe a memoria, oppure il Registro.sc.exe ha una sintassi degli anni Novanta, e il Get-Service fornito con Windows, in Windows PowerShell 5.1, non mostra l'account con cui gira un servizio, tanto meno la sua descrizione. PowerShell 7 mostra entrambi e si installa a parte.Process Hacker e System Informer mostrano un elenco ricco e possono terminare un processo con la forza, ma non hanno né audit né riga di comando. sc.exe e PsService possono fare tutto e non dicono nulla. I cmdlet *-Service di PowerShell sono automatizzabili e superficiali.
Nessuno combina un elenco in cui cercare, un'anteprima prima di ogni modifica e una traccia di ciò che è cambiato nel tempo - e la traccia è il motivo per tenere questo strumento su una macchina dopo il primo pomeriggio.
+ Il confronto completo +start:auto !status:running significa ciò che dovrebbe essere attivo e non lo è. Un solo linguaggio, nella casella di ricerca e in bws list --query, con i campi suggeriti mentre digita.
Ogni arresto, avvio, riavvio e modifica del tipo di avvio viene anticipato con i servizi che trascina con sé, e l'anteprima è ciò che viene eseguito.
bws snapshot create congela la macchina in un file e bws snapshot diff dice cosa è cambiato da allora, la configurazione a parte rispetto a ciò che si è semplicemente avviato o fermato. bws history dice, dal registro di sistema, chi ha cambiato un tipo di avvio e chi ha installato un servizio. La finestra fa tutte e tre le cose in Audit....
La scheda Tools e bws tool fix riavviano il servizio dietro una stampante che non stampa, un audio sparito o una ricerca bloccata, insieme a ciò che ne dipende, con lo stesso piano di tutto il resto.
Chiede prima con garbo e termina il processo solo se questo fallisce, nominando ogni altro servizio che vive al suo interno.
services.msc nascondeChi ha firmato l'eseguibile e se Windows si fida, trigger, privilegi, il descrittore di sicurezza, il processo e la sua memoria. Come colonne e come criteri di ricerca.
Un campo che non ha potuto leggere viene segnalato come non letto, mai mostrato come vuoto. Uno snapshot preso senza diritti di amministratore lo dice dentro il file stesso.
--json su ogni comando, un codice di uscita per ogni conclusione e 5 quando un confronto trova deriva.
Decomprima e avvii, oppure lo installi per tutta la macchina. Nessun .NET da installare, e non si collega mai a Internet. Consultare non richiede diritti di amministratore. GPL-3.0.
Uno snapshot è l'intera macchina in un istante - ogni servizio e ogni driver, con il suo tipo di avvio, account, percorso di avvio, l'hash e il firmatario del suo file, le dipendenze, i trigger, i privilegi e il descrittore di sicurezza. È JSON con un campo per riga, quindi entra in un repository e git diff lo legge.
$ 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 termina con 5 quando la configurazione differisce, così un'attività pianificata può prendere uno snapshot alla distribuzione e avvisare qualcuno la prima notte in cui la macchina va alla deriva.Ogni operazione che scrive costruisce prima un piano, e quello stesso piano è l'anteprima, la cascata dei servizi dipendenti, il rifiuto prima che prema qualsiasi cosa, la riga di comando che chiede la stessa cosa e la via del ritorno dopo.
+$ 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 e questi sono i passaggi, in quell'ordine, con le stesse ragioni accanto. Non esiste un secondo percorso di codice per l'esecuzione vera.bws kill chiede al servizio di fermarsi e termina il suo processo solo se questo non funziona, nominando ogni altro servizio che vive al suo interno.Lo stesso motore della finestra, per script, attività pianificate e CI. I dati vanno sullo standard output e tutto il resto sullo standard error, così bws list --json | jq funziona e un avviso non finisce mai nel suo JSON.
bws list --query "start:auto !status:running" ciò che dovrebbe essere attivo e non lo è
+bws list --query "file:missing" servizi il cui eseguibile è sparito
+bws list --query "signed:no peruser:no" non firmati, senza le copie per sessione
+bws show Spooler tutto ciò che si sa di una voce
+bws stop Winmgmt --dry-run --dependents cosa trascinerebbe con sé fermarlo
+bws kill Spooler --dry-run cosa porterebbe via terminare il suo processo
+bws start-type Spooler manual --dry-run cosa farebbe toglierlo dall'avvio automatico
+bws snapshot create before.json congelare la macchina prima di una modifica
+bws snapshot diff before.json --live --exit-code cosa è cambiato da allora, 5 se la configurazione è cambiata
+bws history Spooler chi ha cambiato il suo tipo di avvio, e quando
+bws tool fix printer --dry-run cosa farebbe la correzione rapida per una stampante bloccata
+ Ogni comando, opzione e codice di uscita
+ Windows 10 1809 o Windows Server 2019 e successivi, a 64 bit. Gli archivi non richiedono un programma di installazione e non scrivono nulla nel Registro, e consultare non richiede diritti di amministratore. Cambiare qualsiasi cosa richiede una sessione con privilegi elevati, e entrambe le metà lo dicono invece di fallire in silenzio - la finestra offre Restart as admin.
+| File | Che cos'è |
|---|---|
{{archive_window}} | La finestra, un eseguibile autonomo - nessun .NET da installare |
{{archive_cli}} | La riga di comando, un eseguibile autonomo, per script e CI |
{{archive_installer}} | Il programma di installazione: entrambi i programmi per ogni account della macchina, la finestra nel menu Start e bws nel PATH |
Gli eseguibili portano una firma Authenticode, così Windows nomina l'editore invece di avvertire di uno sconosciuto.
+ +{{product}} é o services.msc reconstruído para quem administra máquinas Windows - uma janela e uma linha de comando sobre um único motor. Faça uma pergunta à máquina em vez de rolar oitocentas linhas. Veja o que uma mudança fará antes de clicar em qualquer coisa. E o que o services.msc nunca teve: congelar cada serviço em um arquivo e, uma semana depois, perguntar o que mudou.
+ bws que pede exatamente o mesmo. O programa fala inglês - a janela lê um arquivo de idioma colocado ao lado dela, então uma tradução é possível sem recompilar.Uma sessão real, em um Windows instalado em polonês - os nomes de exibição vêm do Windows, então estão no idioma dele. A janela em si fala inglês.
+
+ services.msc quase não mudou desde o Windows 2000Administradores passam horas por semana nele esbarrando nas mesmas paredes.
+sc.exe de cabeça, ou o Registro.sc.exe tem uma sintaxe dos anos noventa, e o Get-Service que vem com o Windows, no Windows PowerShell 5.1, não mostra a conta sob a qual um serviço roda, quanto mais a descrição. O PowerShell 7 mostra as duas coisas e se instala separadamente.O Process Hacker e o System Informer mostram uma lista rica e podem encerrar um processo à força, mas não têm auditoria nem linha de comando. O sc.exe e o PsService podem fazer tudo e não dizem nada. Os cmdlets *-Service do PowerShell são programáveis e superficiais.
Ninguém combina uma lista pesquisável, uma pré-visualização antes de cada mudança e um registro do que mudou ao longo do tempo - e o registro é o motivo para manter esta ferramenta em uma máquina depois da primeira tarde.
+ A comparação completa +start:auto !status:running é o que deveria estar no ar e não está. Uma única linguagem, na caixa de busca e em bws list --query, com os campos sugeridos enquanto você digita.
Cada parada, início, reinício e mudança de tipo de inicialização é pré-visualizado com os serviços que arrasta consigo, e a pré-visualização é o que executa.
bws snapshot create congela a máquina em um arquivo, e bws snapshot diff diz o que mudou desde então, a configuração à parte do que apenas iniciou ou parou. bws history diz, pelo log do Sistema, quem mudou um tipo de inicialização e quem instalou um serviço. A janela faz as três coisas em Audit....
A aba Tools e o bws tool fix reiniciam o serviço por trás de uma impressora que não imprime, de um som que sumiu ou de uma busca travada, junto com o que depende dele, pelo mesmo plano de tudo o mais.
Pede com educação primeiro e só encerra o processo se isso falhar, nomeando todos os outros serviços que vivem nele.
services.msc escondeQuem assinou o executável e se o Windows confia nele, gatilhos, privilégios, o descritor de segurança, o processo e sua memória. Como colunas e como critérios de busca.
Um campo que não conseguiu ler é informado como não lido, nunca mostrado como vazio. Um instantâneo feito sem direitos de administrador diz isso dentro do próprio arquivo.
--json em cada comando, um código de saída para cada desfecho e 5 quando uma comparação encontra deriva.
Descompacte e execute, ou instale para a máquina toda. Sem .NET para instalar, e nunca se conecta à internet. Consultar não exige direitos de administrador. GPL-3.0.
Um instantâneo é a máquina inteira em um momento - cada serviço e cada driver, com seu tipo de inicialização, conta, caminho de lançamento, o hash e o signatário do arquivo, as dependências, os gatilhos, os privilégios e o descritor de segurança. É JSON com um campo por linha, então cabe em um repositório e o git diff o lê.
$ 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 termina com 5 quando a configuração difere, de modo que uma tarefa agendada pode fazer um instantâneo na implantação e avisar alguém na primeira noite em que a máquina se desviar.Toda operação que grava constrói primeiro um plano, e esse mesmo plano é a pré-visualização, a cascata de serviços dependentes, a recusa antes de você clicar em qualquer coisa, a linha de comando que pede o mesmo e o caminho de volta depois.
+$ 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 e essas são as etapas, nessa ordem, com os mesmos motivos ao lado. Não existe um segundo caminho de código para a execução de verdade.bws kill pede ao serviço que pare e só encerra o processo se isso não funcionar, nomeando todos os outros serviços que vivem nele.O mesmo motor da janela, para scripts, tarefas agendadas e CI. Os dados vão para a saída padrão e todo o resto para o erro padrão, de modo que bws list --json | jq funciona e um aviso nunca cai no seu JSON.
bws list --query "start:auto !status:running" o que deveria estar no ar e não está
+bws list --query "file:missing" serviços cujo executável sumiu
+bws list --query "signed:no peruser:no" sem assinatura, sem as cópias por sessão
+bws show Spooler tudo o que se sabe sobre uma entrada
+bws stop Winmgmt --dry-run --dependents o que pará-lo arrastaria junto
+bws kill Spooler --dry-run o que encerrar o processo dele levaria junto
+bws start-type Spooler manual --dry-run o que tirá-lo do automático faria
+bws snapshot create before.json congelar a máquina antes de uma mudança
+bws snapshot diff before.json --live --exit-code o que mudou desde então, 5 se a configuração mudou
+bws history Spooler quem mudou o tipo de inicialização dele, e quando
+bws tool fix printer --dry-run o que a correção rápida de uma impressora travada faria
+ Cada comando, opção e código de saída
+ Windows 10 1809 ou Windows Server 2019 e posteriores, de 64 bits. Os arquivos compactados não precisam de instalador e não gravam nada no Registro, e consultar não exige direitos de administrador. Mudar qualquer coisa exige uma sessão com privilégios elevados, e as duas metades dizem isso em vez de falhar em silêncio - a janela oferece Restart as admin.
+| Arquivo | O que é |
|---|---|
{{archive_window}} | A janela, um executável autônomo - sem .NET para instalar |
{{archive_cli}} | A linha de comando, um executável autônomo, para scripts e CI |
{{archive_installer}} | O instalador: os dois programas para todas as contas da máquina, a janela no menu Iniciar e o bws no PATH |
Os executáveis levam uma assinatura Authenticode, de modo que o Windows nomeia o editor em vez de avisar sobre um desconhecido.
+ +Eine Sprache, im Suchfeld des Fensters und in bws list --query. Ein einzelnes Wort durchsucht den Namen, den Anzeigenamen, das Konto und den Startpfad. Ein Feld grenzt es ein. {{field_count}} Felder, und derselbe Text bedeutet in beiden Hälften des Werkzeugs dasselbe.
start:auto !status:running
Die erste Abfrage, die die meisten schreiben, und die, die services.msc überhaupt nicht beantworten kann.
file:missing
Ein Eintrag, der auf eine Programmdatei zeigt, die nicht auf dem Datenträger liegt. Meist eine Deinstallation, die die Registrierung zurückgelassen hat.
signed:no peruser:no
Die Familien pro Benutzer machen eine Kopie je Sitzung und füllen eine Liste mit Beinahe-Dubletten. Das hier fragt nach dem Rest.
mismatch:running
Konfiguration und Zustand, die nicht zusammenpassen - ein Eintrag, den der Manager nie starten soll, läuft trotzdem.
privilege:SeDebugPrivilege
Ein Privileg, mit dem ein Prozess jeden anderen öffnen kann. Es lohnt sich zu wissen, welche Dienste es verlangen.
account:?
Die Einträge, bei denen diese Sitzung das Konto nicht lesen konnte. Eine Frage, die services.msc nicht einmal stellen kann.
and, weil es nichts anderes bedeuten könnte.status:running status:stopped bedeutet das eine oder das andere, weil das geschrieben wird, wenn man zwei Filter anhakt. Zwei Grenzen bei einer Zahl grenzen dagegen weiter ein - pid:>1000 pid:<2000 ist der Bereich dazwischen.! vor einem Begriff verneint ihn: !status:running. In einer Batchdatei mit setlocal EnableDelayedExpansion frisst cmd dieses ! wortlos, und die Abfrage bedeutet stillschweigend etwas anderes - schreiben Sie dort ^! innerhalb der Anführungszeichen.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe - wird gesucht und nicht als Feld namens C gelesen.name:spool trifft alles, was es enthält - der Standard, weil das ist, was man von einem Suchfeld erwartet.name:=spooler ist genau.name:spool* nimmt Platzhalter, * und ?.name:/^Sql.*/ ist ein regulärer Ausdruck und wird innerhalb der Schrägstriche so geschrieben, wie reguläre Ausdrücke geschrieben werden: \?, \\ und ein Komma bedeuten dort, was sie dort bedeuten. Ein Schrägstrich, der nie schließt, ist ein Fehler - um nach dem Schrägstrich selbst zu suchen, schreiben Sie \/ oder nehmen Anführungszeichen.Ein falsch getippter Wert ist ein Fehler, nie ein leeres Ergebnis. status:runing antwortet Did you mean running? und endet mit Code 2. Eine leere Liste sähe wie eine Antwort aus, und der Unterschied zwischen "nichts trifft zu" und "Sie haben sich vertippt" ist der Unterschied zwischen einem sauberen Rechner und einem Audit, das nichts bewiesen hat. Eine Abfrage, die nichts eingrenzen würde, wird auch auf der Befehlszeile abgelehnt, damit ein Skript wegen eines Tippfehlers nicht auf dem ganzen Rechner arbeitet.
Jedes funktioniert im Suchfeld des Fensters genauso wie nach bws list --query, und jedes wurde auf einem echten Windows ausgeführt, bevor es hier geschrieben wurde. Was es findet, hängt vom Rechner ab - und bei einer Frage nach Ärger ist eine leere Antwort die, die Sie sich wünschen.
| Abfrage | Was sie findet |
|---|---|
status:stopPending, | Hängt beim Beenden oder Starten - das Warten, das das Snap-in anzeigt und das nie endet. |
start:auto status:stopped trigger:none | Auf automatischen Start gesetzt, beendet und ohne Wartezeit auf einen Trigger - die kurze Liste, die nach einem Neustart lesenswert ist. |
start:delayed | Automatisch, aber etwas nach den anderen automatischen Einträgen gestartet. |
start:manual, | Läuft, obwohl nichts es beim Hochfahren startet - etwas hat es angefordert, ein Trigger hat es gestartet, oder jemand hat es getan. |
| Abfrage | Was sie findet |
|---|---|
account:localsystem !publisher:microsoft | Läuft als LocalSystem, dem stärksten Konto, aus einer Datei, die Microsoft nicht signiert hat. Eine Abfrage zum Herausgeber liest Signaturen von selbst, daher dauert sie einige Sekunden. |
!account:localsystem, | Dienste, die unter irgendeinem anderen Konto laufen - einem virtuellen, einem verwalteten oder dem einer Person. |
account:"NT SERVICE" | Ein virtuelles Konto des Dienstes selbst. Die Anführungszeichen halten die Wörter wegen des Leerzeichens zusammen. |
| Abfrage | Was sie findet |
|---|---|
signed:notSigned, | Keine Signatur, eine Kette, der Windows nicht vertraut, oder eine Datei, die nach dem Signieren verändert wurde. |
signed:trusted !publisher:microsoft | Signiert, vertrauenswürdig und nicht von Microsoft - die Software, die andere Firmen auf diesen Rechner gebracht haben. |
type:driver start:boot, | Treiber, die beim Windows-Start geladen werden und deren Signatur Windows nicht vertraut. Auf einem gesunden Rechner keine. |
!path:C:\Windows type:ownProcess | Ein Dienst mit eigenem Prozess, dessen Datei außerhalb des Windows-Ordners liegt. |
path:\AppData\ | Gestartet aus dem Profil von jemandem, dem letzten Ort, an dem man einen Dienst erwartet. |
path:\System32\\ type:ownProcess | Ein Backslash vor einem Leerzeichen macht das Leerzeichen zum Teil des Wortes, daher wird ein Pfad, der auf einen Backslash endet, mit zwei geschrieben, wenn ein weiterer Begriff folgt. Am Ende der Abfrage genügt einer. |
| Abfrage | Was sie findet |
|---|---|
trigger:device status:stopped | Wartet darauf, dass ein Gerät erscheint, ist also aus gutem Grund beendet. |
trigger:network | Gestartet, wenn eine Anfrage an einem Netzwerkendpunkt eintrifft - einem Port, einer benannten Pipe oder einer RPC-Schnittstelle. |
trigger:stop | Einträge, die ein Trigger auch beenden kann, nicht nur starten. |
dependson:Winmgmt | Einträge, die WMI zum Laufen brauchen. |
requiredby:Spooler | Alles, was der Druckerspooler zum Laufen braucht, und was jene wiederum brauchen. |
| Abfrage | Was sie findet |
|---|---|
privilege:SeTcbPrivilege | Verlangt, als Teil des Betriebssystems zu handeln. |
privilege:SeImpersonatePrivilege !account:localsystem | Kann im Namen eines Clients handeln, während es unter einem anderen Konto als LocalSystem läuft. |
sidtype:unrestricted | Trägt in seinem Prozess eine eigene Dienst-SID, sodass Berechtigungen es allein benennen können. sidtype:restricted fragt nach denen, deren Prozess zusätzlich schreibbeschränkt ist. |
type:sharedProcess status:running | Läuft in einem gemeinsamen svchost, zusammen mit anderen. |
memory:>200MB | Ein Prozess, der mehr als 200 MB nutzt. Der Speicher wird von selbst gelesen, wenn eine Abfrage danach fragt. |
pid:1000-2000 | In einem Prozess, dessen ID zwischen 1000 und 2000 liegt. |
| Abfrage | Was sie findet |
|---|---|
spool | Ein einzelnes Wort, gesucht im Namen, im Anzeigenamen, im Konto und im Startpfad. |
name:=wuauserv | Genau dieser Name und nichts, was ihn nur enthält. |
name:win* | Namen, die mit win beginnen, mit einem Platzhalter geschrieben. |
name:/svc$/ | Namen, die auf svc enden, als regulärer Ausdruck geschrieben. |
description:none | Überhaupt keine Beschreibung, was bei den meisten Treibern der Fall ist. |
description:? | Eine Beschreibung, die Windows nicht herausgeben konnte, meist weil sie auf eine Sprachdatei zeigt, die nicht da ist. |
peruser:template | Die Vorlagen pro Benutzer, die Windows für jede angemeldete Sitzung kopiert. |
Aus dem Programm selbst gebaut, sodass diese Tabelle nicht von dem abweichen kann, was das Werkzeug akzeptiert. Ein Feld ohne Werteliste nimmt Text, eine Zahl oder eine Größe - die dritte Spalte sagt, welches.
+ {{table:query-fields}} +Signaturen brauchen über einen ganzen Rechner mehrere Sekunden, und der Speicher ist eine Messung und keine Einstellung, daher wird keines von beiden für eine Liste gelesen, wenn nicht danach gefragt wird. Eine Abfrage, die eines erwähnt, schaltet dieses Lesen von selbst ein - Sie müssen sich nicht zusätzlich zu signed:no noch --signatures merken. Im Fenster sagt eine Abfrage zu Signaturen, dass die Antwort unvollständig ist, bis sie eintreffen, statt eine kürzere Liste so zu zeigen, als wäre sie die Antwort.
Wenn Einträge nach einem Feld beurteilt wurden, das diese Sitzung nicht lesen konnte, trägt das Ergebnis eine Zeile mit der Anzahl - denn ein solches Ergebnis kann Einträge vermissen oder welche enthalten, die nicht hineingehören. Das ist dieselbe Regel, die das ganze Werkzeug einhält: ein erfolgloses Lesen ist in der Antwort sichtbar und wird nie verschluckt. Ein Herausgeber wird genauso behandelt, wenn nur das Zertifikat ihn behauptet: neben jedem anderen Urteil als trusted wird der Name als not verified gezeigt, und publisher: zählt den Eintrag in einer eigenen Zeile als unsicher - so behält !publisher:microsoft eine Microsoft-Datei, die jemand nach dem Signieren verändert hat.
Un único lenguaje, en el cuadro de búsqueda de la ventana y en bws list --query. Una palabra suelta busca en el nombre, el nombre para mostrar, la cuenta y la ruta de lanzamiento. Un campo la acota. {{field_count}} campos, y el mismo texto significa lo mismo en ambas mitades de la herramienta.
start:auto !status:running
La primera consulta que escribe casi todo el mundo, y la que services.msc no puede responder en absoluto.
file:missing
Una entrada que apunta a un ejecutable que no está en el disco. Normalmente una desinstalación que dejó el registro tras de sí.
signed:no peruser:no
Las familias por usuario hacen una copia por sesión y llenan una lista de casi duplicados. Esto pregunta por el resto.
mismatch:running
Configuración y estado que no concuerdan: una entrada que el administrador tiene configurada para no iniciarse nunca, ejecutándose igualmente.
privilege:SeDebugPrivilege
Un privilegio que permite a un proceso abrir cualquier otro. Conviene saber qué servicios lo piden.
account:?
Las entradas cuya cuenta esta sesión no pudo leer. Una pregunta que services.msc ni siquiera puede hacer.
and porque no podría significar otra cosa.status:running status:stopped significa uno u otro, porque eso es lo que escribe marcar dos filtros. Dos límites sobre un número sí acotan: pid:>1000 pid:<2000 es el intervalo entre ambos.! delante de un término lo niega: !status:running. En un archivo por lotes con setlocal EnableDelayedExpansion, cmd se come ese ! sin decir nada y la consulta significa en silencio otra cosa: escriba ^! entre las comillas allí.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe, se busca, no se lee como un campo llamado C.name:spool coincide con todo lo que lo contiene: es lo predeterminado, porque es lo que se espera de un cuadro de búsqueda.name:=spooler es exacto.name:spool* admite comodines, * y ?.name:/^Sql.*/ es una expresión regular, y entre las barras se escribe como se escriben las expresiones regulares: \?, \\ y una coma significan allí lo que significan allí. Una barra que nunca se cierra es un error; para buscar la propia barra, escriba \/ o use comillas.Un valor mal escrito es un error, nunca un resultado vacío. status:runing responde Did you mean running? y termina con el código 2. Una lista vacía parecería una respuesta, y la diferencia entre "nada coincide" y "lo escribió mal" es la diferencia entre un equipo limpio y una auditoría que no demostró nada. Una consulta que no acotaría nada también se rechaza en la línea de comandos, para que un script no opere sobre todo el equipo por una errata.
Cada uno funciona igual en el cuadro de búsqueda de la ventana y después de bws list --query, y cada uno se ejecutó en un Windows real antes de escribirse aquí. Lo que encuentra depende del equipo, y para una pregunta sobre problemas, una respuesta vacía es la que usted quiere.
| Consulta | Qué encuentra |
|---|---|
status:stopPending, | Atascados al detenerse o al iniciarse: la espera que muestra el complemento y que nunca termina. |
start:auto status:stopped trigger:none | Configurados para iniciarse automáticamente, detenidos y sin esperar a un desencadenador: la lista corta que vale la pena leer tras un reinicio. |
start:delayed | Automático, iniciado un poco después de las demás entradas automáticas. |
start:manual, | En marcha aunque nada lo inicie al arrancar: algo lo pidió, un desencadenador lo inició o alguien lo hizo. |
| Consulta | Qué encuentra |
|---|---|
account:localsystem !publisher:microsoft | Se ejecuta como LocalSystem, la cuenta más poderosa, desde un archivo que Microsoft no firmó. Una consulta sobre el editor lee las firmas por sí sola, así que tarda unos segundos. |
!account:localsystem, | Servicios que se ejecutan bajo cualquier otra cuenta: una virtual, una administrada o la de una persona. |
account:"NT SERVICE" | Una cuenta virtual del propio servicio. Las comillas mantienen juntas las palabras, por el espacio. |
| Consulta | Qué encuentra |
|---|---|
signed:notSigned, | Sin firma, una cadena en la que Windows no confía, o un archivo modificado después de firmarse. |
signed:trusted !publisher:microsoft | Firmado, de confianza y no por Microsoft: el software que otras empresas han puesto en este equipo. |
type:driver start:boot, | Controladores cargados al arrancar Windows cuya firma Windows no considera de confianza. En un equipo sano, ninguno. |
!path:C:\Windows type:ownProcess | Un servicio con proceso propio cuyo archivo está fuera de la carpeta de Windows. |
path:\AppData\ | Lanzado desde dentro del perfil de alguien, el último lugar donde se espera un servicio. |
path:\System32\\ type:ownProcess | Una barra invertida delante de un espacio hace que el espacio forme parte de la palabra, así que una ruta que acaba en barra invertida se escribe con dos cuando le sigue otro término. Al final de la consulta basta una. |
| Consulta | Qué encuentra |
|---|---|
trigger:device status:stopped | Esperando a que llegue un dispositivo, por lo que están detenidos por una razón. |
trigger:network | Iniciado cuando llega una solicitud a un punto de conexión de red: un puerto, una canalización con nombre o una interfaz RPC. |
trigger:stop | Entradas que un desencadenador puede detener, no solo iniciar. |
dependson:Winmgmt | Entradas que necesitan WMI para ejecutarse. |
requiredby:Spooler | Todo lo que el Print Spooler necesita para ejecutarse, y lo que a su vez necesitan esos. |
| Consulta | Qué encuentra |
|---|---|
privilege:SeTcbPrivilege | Pide actuar como parte del sistema operativo. |
privilege:SeImpersonatePrivilege !account:localsystem | Puede actuar en nombre de un cliente mientras se ejecuta bajo una cuenta distinta de LocalSystem. |
sidtype:unrestricted | Lleva en su proceso un SID de servicio propio, de modo que los permisos pueden nombrarlo a él solo. sidtype:restricted pregunta por aquellos cuyo proceso además tiene restringida la escritura. |
type:sharedProcess status:running | En ejecución dentro de un svchost compartido, junto con otros. |
memory:>200MB | Un proceso que usa más de 200 MB. La memoria se lee por sí sola cuando una consulta pregunta por ella. |
pid:1000-2000 | En un proceso cuyo identificador está entre 1000 y 2000. |
| Consulta | Qué encuentra |
|---|---|
spool | Una palabra suelta, buscada en el nombre, el nombre para mostrar, la cuenta y la ruta de lanzamiento. |
name:=wuauserv | Exactamente este nombre, y nada que solo lo contenga. |
name:win* | Nombres que empiezan por win, escritos con un comodín. |
name:/svc$/ | Nombres que terminan en svc, escritos como expresión regular. |
description:none | Ninguna descripción en absoluto, que es el caso de la mayoría de los controladores. |
description:? | Una descripción que Windows no pudo entregar, normalmente porque apunta a un archivo de idioma que no está. |
peruser:template | Las plantillas por usuario que Windows copia para cada sesión iniciada. |
Construida a partir del propio programa, de modo que esta tabla no puede desviarse de lo que acepta la herramienta. Un campo sin lista de valores acepta texto, un número o un tamaño; la tercera columna dice cuál.
+ {{table:query-fields}} +Las firmas tardan varios segundos en todo un equipo y la memoria es una medición y no un ajuste, así que ninguna se lee para un listado salvo que se pida. Una consulta que menciona una activa esa lectura por sí sola: no tiene que acordarse de --signatures además de signed:no. En la ventana, una consulta sobre firmas dice que la respuesta está incompleta hasta que llegan, en lugar de mostrar una lista más corta como si fuera la respuesta.
Si se juzgaron entradas por un campo que esta sesión no pudo leer, el resultado lleva una línea que dice cuántas, porque un resultado así puede estar omitiendo entradas, o contener otras que no corresponden. Es la misma regla que sigue toda la herramienta: una lectura fallida es visible en la respuesta, nunca se traga. Un editor recibe el mismo trato cuando solo el certificado lo afirma: junto a cualquier veredicto que no sea trusted el nombre se muestra como not verified, y publisher: cuenta la entrada como dudosa en una línea aparte, de modo que !publisher:microsoft conserva un archivo de Microsoft que alguien modificó después de firmarse.
Un seul langage, dans le champ de recherche de la fenêtre et dans bws list --query. Un mot seul cherche dans le nom, le nom affiché, le compte et le chemin de lancement. Un champ affine la recherche. {{field_count}} champs, et le même texte signifie la même chose dans les deux moitiés de l'outil.
start:auto !status:running
La première requête que la plupart des gens écrivent, et celle à laquelle services.msc ne peut pas du tout répondre.
file:missing
Une entrée qui pointe vers un exécutable absent du disque. Le plus souvent une désinstallation qui a laissé l'enregistrement derrière elle.
signed:no peruser:no
Les familles par utilisateur font une copie par session et remplissent une liste de quasi-doublons. Ceci interroge le reste.
mismatch:running
Une configuration et un état qui ne concordent pas - une entrée que le gestionnaire est réglé pour ne jamais démarrer, qui tourne quand même.
privilege:SeDebugPrivilege
Un privilège qui permet à un processus d'ouvrir n'importe quel autre. Il vaut la peine de savoir quels services le demandent.
account:?
Les entrées dont cette session n'a pas pu lire le compte. Une question que services.msc ne sait même pas poser.
and parce qu'il ne pourrait rien signifier d'autre.status:running status:stopped veut dire l'un ou l'autre, car c'est ce qu'écrit le fait de cocher deux filtres. Deux bornes sur un nombre affinent toujours - pid:>1000 pid:<2000 est l'intervalle entre elles.! devant un terme le nie : !status:running. Dans un fichier batch avec setlocal EnableDelayedExpansion, cmd avale ce ! sans un mot et la requête signifie discrètement autre chose - écrivez ^! entre les guillemets dans ce cas.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe - est recherché, pas lu comme un champ appelé C.name:spool trouve tout ce qui le contient - le comportement par défaut, car c'est ce qu'on attend d'un champ de recherche.name:=spooler est exact.name:spool* accepte les jokers, * et ?.name:/^Sql.*/ est une expression régulière, et entre les barres obliques elle s'écrit comme s'écrivent les expressions régulières : \?, \\ et une virgule y signifient ce qu'ils signifient là. Une barre oblique qui ne se ferme jamais est une erreur - pour chercher la barre oblique elle-même, écrivez \/ ou utilisez des guillemets.Une valeur mal saisie est une erreur, jamais un résultat vide. status:runing répond Did you mean running? et se termine avec le code 2. Une liste vide ressemblerait à une réponse, et la différence entre « rien ne correspond » et « vous avez mal tapé » est la différence entre une machine saine et un audit qui n'a rien prouvé. Une requête qui n'affinerait rien est aussi refusée en ligne de commande, afin qu'un script n'opère pas sur toute la machine à cause d'une faute de frappe.
Chacun fonctionne de la même façon dans le champ de recherche de la fenêtre et après bws list --query, et chacun a été exécuté sur un vrai Windows avant d'être écrit ici. Ce qu'il trouve dépend de la machine - et pour une question sur les ennuis, une réponse vide est celle que vous voulez.
| Requête | Ce qu'elle trouve |
|---|---|
status:stopPending, | Bloqués à l'arrêt ou au démarrage - l'attente que le composant enfichable affiche et qui ne finit jamais. |
start:auto status:stopped trigger:none | Réglés pour démarrer automatiquement, arrêtés, et n'attendant aucun déclencheur - la courte liste qui vaut la peine d'être lue après un redémarrage. |
start:delayed | Automatique, démarré un peu après les autres entrées automatiques. |
start:manual, | En marche bien que rien ne le démarre au démarrage de la machine - quelque chose l'a demandé, un déclencheur l'a lancé, ou quelqu'un l'a fait. |
| Requête | Ce qu'elle trouve |
|---|---|
account:localsystem !publisher:microsoft | Tourne sous LocalSystem, le compte le plus puissant, depuis un fichier que Microsoft n'a pas signé. Une requête sur l'éditeur lit les signatures d'elle-même, elle prend donc quelques secondes. |
!account:localsystem, | Les services qui tournent sous n'importe quel autre compte - un compte virtuel, un compte géré ou celui d'une personne. |
account:"NT SERVICE" | Un compte virtuel propre au service. Les guillemets gardent les mots ensemble, à cause de l'espace. |
| Requête | Ce qu'elle trouve |
|---|---|
signed:notSigned, | Pas de signature, une chaîne à laquelle Windows ne fait pas confiance, ou un fichier modifié après sa signature. |
signed:trusted !publisher:microsoft | Signé, approuvé, et pas par Microsoft - les logiciels que d'autres entreprises ont mis sur cette machine. |
type:driver start:boot, | Les pilotes chargés au démarrage de Windows dont Windows n'approuve pas la signature. Sur une machine saine, aucun. |
!path:C:\Windows type:ownProcess | Un service doté de son propre processus dont le fichier se trouve hors du dossier Windows. |
path:\AppData\ | Lancé depuis l'intérieur du profil de quelqu'un, le dernier endroit où l'on s'attend à trouver un service. |
path:\System32\\ type:ownProcess | Une barre oblique inverse devant une espace fait de l'espace une partie du mot, donc un chemin se terminant par une barre oblique inverse s'écrit avec deux quand un autre terme le suit. À la fin de la requête, une suffit. |
| Requête | Ce qu'elle trouve |
|---|---|
trigger:device status:stopped | En attente de l'arrivée d'un périphérique, donc arrêtés pour une bonne raison. |
trigger:network | Démarré quand une requête arrive sur un point de terminaison réseau - un port, un canal nommé ou une interface RPC. |
trigger:stop | Les entrées qu'un déclencheur peut arrêter, pas seulement démarrer. |
dependson:Winmgmt | Les entrées qui ont besoin de WMI pour fonctionner. |
requiredby:Spooler | Tout ce dont le spouleur d'impression a besoin pour fonctionner, et ce dont ceux-là ont besoin à leur tour. |
| Requête | Ce qu'elle trouve |
|---|---|
privilege:SeTcbPrivilege | Demande à agir comme partie du système d'exploitation. |
privilege:SeImpersonatePrivilege !account:localsystem | Peut agir au nom d'un client tout en tournant sous un compte autre que LocalSystem. |
sidtype:unrestricted | Porte dans son processus un SID de service qui lui est propre, de sorte que les autorisations peuvent le nommer seul. sidtype:restricted interroge ceux dont le processus est en plus restreint en écriture. |
type:sharedProcess status:running | Tourne à l'intérieur d'un svchost partagé, avec d'autres. |
memory:>200MB | Un processus qui utilise plus de 200 Mo. La mémoire est lue d'elle-même quand une requête la demande. |
pid:1000-2000 | Dans un processus dont l'identifiant est compris entre 1000 et 2000. |
| Requête | Ce qu'elle trouve |
|---|---|
spool | Un mot seul, recherché dans le nom, le nom affiché, le compte et le chemin de lancement. |
name:=wuauserv | Exactement ce nom, et rien qui ne fasse que le contenir. |
name:win* | Les noms qui commencent par win, écrits avec un joker. |
name:/svc$/ | Les noms qui se terminent par svc, écrits comme une expression régulière. |
description:none | Aucune description du tout, ce qui est le cas de la plupart des pilotes. |
description:? | Une description que Windows n'a pas pu fournir, le plus souvent parce qu'elle pointe vers un fichier de langue absent. |
peruser:template | Les modèles par utilisateur que Windows copie pour chaque session ouverte. |
Construit depuis le programme lui-même, de sorte que ce tableau ne peut pas s'écarter de ce que l'outil accepte. Un champ sans liste de valeurs accepte du texte, un nombre ou une taille - la troisième colonne dit lequel.
+ {{table:query-fields}} +Les signatures prennent plusieurs secondes sur toute une machine et la mémoire est une mesure plutôt qu'un réglage, donc aucune des deux n'est lue pour une liste sauf demande. Une requête qui en mentionne une active cette lecture d'elle-même - vous n'avez pas à vous souvenir de --signatures en plus de signed:no. Dans la fenêtre, une requête sur les signatures dit que la réponse est incomplète tant qu'elles n'arrivent pas, au lieu d'afficher une liste plus courte comme si c'était la réponse.
Si des entrées ont été jugées sur un champ que cette session n'a pas pu lire, le résultat porte une ligne disant combien - car un tel résultat peut manquer d'entrées, ou en contenir qui n'ont rien à y faire. C'est la même règle que respecte tout l'outil : une lecture infructueuse est visible dans la réponse, jamais avalée. Un éditeur reçoit le même traitement quand seul le certificat le prétend : à côté de tout verdict autre que trusted, le nom est affiché comme not verified, et publisher: compte l'entrée comme incertaine sur une ligne à part - de sorte que !publisher:microsoft garde un fichier Microsoft que quelqu'un a modifié après sa signature.
Un solo linguaggio, nella casella di ricerca della finestra e in bws list --query. Una parola sola cerca nel nome, nel nome visualizzato, nell'account e nel percorso di avvio. Un campo restringe la ricerca. {{field_count}} campi, e lo stesso testo significa la stessa cosa in entrambe le metà dello strumento.
start:auto !status:running
La prima query che scrive la maggior parte delle persone, e quella a cui services.msc non può rispondere affatto.
file:missing
Una voce che punta a un eseguibile non presente sul disco. Di solito una disinstallazione che ha lasciato dietro di sé la registrazione.
signed:no peruser:no
Le famiglie per utente fanno una copia per sessione e riempiono un elenco di quasi duplicati. Questa interroga il resto.
mismatch:running
Configurazione e stato che non concordano - una voce che il gestore è impostato a non avviare mai, in esecuzione comunque.
privilege:SeDebugPrivilege
Un privilegio che permette a un processo di aprirne qualsiasi altro. Vale la pena sapere quali servizi lo chiedono.
account:?
Le voci di cui questa sessione non ha potuto leggere l'account. Una domanda che services.msc non sa nemmeno porre.
and perché non potrebbe significare nient'altro.status:running status:stopped significa l'uno o l'altro, perché è ciò che scrive spuntare due filtri. Due limiti su un numero invece restringono - pid:>1000 pid:<2000 è l'intervallo tra i due.! davanti a un termine lo nega: !status:running. In un file batch con setlocal EnableDelayedExpansion, cmd si mangia quel ! senza dire nulla e la query significa in silenzio qualcos'altro - scriva ^! dentro le virgolette lì.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe - viene cercato, non letto come un campo chiamato C.name:spool trova tutto ciò che lo contiene - il comportamento predefinito, perché è ciò che ci si aspetta da una casella di ricerca.name:=spooler è esatto.name:spool* accetta caratteri jolly, * e ?.name:/^Sql.*/ è un'espressione regolare, e dentro le barre si scrive come si scrivono le espressioni regolari: \?, \\ e una virgola significano lì ciò che significano lì. Una barra che non si chiude mai è un errore - per cercare la barra stessa, scriva \/ oppure usi le virgolette.Un valore digitato male è un errore, mai un risultato vuoto. status:runing risponde Did you mean running? e termina con il codice 2. Un elenco vuoto sembrerebbe una risposta, e la differenza tra "nulla corrisponde" e "ha digitato male" è la differenza tra una macchina pulita e un audit che non ha dimostrato nulla. Una query che non restringerebbe nulla viene rifiutata anche sulla riga di comando, perché uno script non operi sull'intera macchina a causa di un refuso.
Ognuno funziona allo stesso modo nella casella di ricerca della finestra e dopo bws list --query, e ognuno è stato eseguito su un vero Windows prima di essere scritto qui. Ciò che trova dipende dalla macchina - e per una domanda sui guai, una risposta vuota è quella che vuole.
| Query | Cosa trova |
|---|---|
status:stopPending, | Bloccati in arresto o in avvio - l'attesa che lo snap-in mostra e che non finisce mai. |
start:auto status:stopped trigger:none | Impostati per avviarsi automaticamente, fermi, e che non attendono un trigger - il breve elenco che vale la pena leggere dopo un riavvio. |
start:delayed | Automatico, avviato un poco dopo le altre voci automatiche. |
start:manual, | In esecuzione benché nulla lo avvii all'avvio - qualcosa lo ha richiesto, un trigger lo ha avviato, o qualcuno lo ha fatto. |
| Query | Cosa trova |
|---|---|
account:localsystem !publisher:microsoft | In esecuzione come LocalSystem, l'account più potente, da un file che Microsoft non ha firmato. Una query sull'editore legge le firme da sola, quindi richiede qualche secondo. |
!account:localsystem, | Servizi in esecuzione con qualsiasi altro account - uno virtuale, uno gestito o quello di una persona. |
account:"NT SERVICE" | Un account virtuale proprio del servizio. Le virgolette tengono insieme le parole, a causa dello spazio. |
| Query | Cosa trova |
|---|---|
signed:notSigned, | Nessuna firma, una catena di cui Windows non si fida, o un file modificato dopo essere stato firmato. |
signed:trusted !publisher:microsoft | Firmato, affidabile, e non da Microsoft - il software che altre aziende hanno messo su questa macchina. |
type:driver start:boot, | Driver caricati all'avvio di Windows la cui firma Windows non ritiene affidabile. Su una macchina sana, nessuno. |
!path:C:\Windows type:ownProcess | Un servizio con un processo proprio il cui file si trova fuori dalla cartella Windows. |
path:\AppData\ | Avviato da dentro il profilo di qualcuno, l'ultimo posto in cui ci si aspetta un servizio. |
path:\System32\\ type:ownProcess | Una barra rovesciata davanti a uno spazio rende lo spazio parte della parola, quindi un percorso che finisce con una barra rovesciata si scrive con due quando segue un altro termine. Alla fine della query ne basta una. |
| Query | Cosa trova |
|---|---|
trigger:device status:stopped | In attesa dell'arrivo di un dispositivo, quindi fermi per un motivo. |
trigger:network | Avviato quando arriva una richiesta a un endpoint di rete - una porta, una named pipe o un'interfaccia RPC. |
trigger:stop | Voci che un trigger può fermare, non solo avviare. |
dependson:Winmgmt | Voci che hanno bisogno di WMI per funzionare. |
requiredby:Spooler | Tutto ciò di cui lo Spooler di stampa ha bisogno per funzionare, e ciò di cui a loro volta hanno bisogno quelli. |
| Query | Cosa trova |
|---|---|
privilege:SeTcbPrivilege | Chiede di agire come parte del sistema operativo. |
privilege:SeImpersonatePrivilege !account:localsystem | Può agire per conto di un client pur girando con un account diverso da LocalSystem. |
sidtype:unrestricted | Porta nel suo processo un SID di servizio proprio, così i permessi possono nominarlo da solo. sidtype:restricted interroga quelli il cui processo è anche limitato in scrittura. |
type:sharedProcess status:running | In esecuzione dentro uno svchost condiviso, insieme ad altri. |
memory:>200MB | Un processo che usa più di 200 MB. La memoria viene letta da sola quando una query la chiede. |
pid:1000-2000 | In un processo il cui id è tra 1000 e 2000. |
| Query | Cosa trova |
|---|---|
spool | Una parola sola, cercata nel nome, nel nome visualizzato, nell'account e nel percorso di avvio. |
name:=wuauserv | Esattamente questo nome, e nulla che lo contenga soltanto. |
name:win* | Nomi che iniziano con win, scritti con un carattere jolly. |
name:/svc$/ | Nomi che finiscono in svc, scritti come espressione regolare. |
description:none | Nessuna descrizione, il che vale per la maggior parte dei driver. |
description:? | Una descrizione che Windows non ha potuto consegnare, di solito perché punta a un file di lingua che non c'è. |
peruser:template | I modelli per utente che Windows copia per ogni sessione aperta. |
Costruita dal programma stesso, così questa tabella non può discostarsi da ciò che lo strumento accetta. Un campo senza elenco di valori accetta testo, un numero o una dimensione - la terza colonna dice quale.
+ {{table:query-fields}} +Le firme richiedono parecchi secondi su un'intera macchina e la memoria è una misurazione più che un'impostazione, quindi nessuna delle due viene letta per un elenco se non richiesta. Una query che ne menziona una attiva quella lettura da sola - non deve ricordarsi di --signatures oltre a signed:no. Nella finestra, una query sulle firme dice che la risposta è incompleta finché non arrivano, invece di mostrare un elenco più corto come se fosse la risposta.
Se delle voci sono state giudicate su un campo che questa sessione non ha potuto leggere, il risultato porta una riga che dice quante - perché un risultato simile può mancare di voci, o contenerne che non c'entrano. È la stessa regola che tiene tutto lo strumento: una lettura non riuscita è visibile nella risposta, mai inghiottita. Un editore riceve lo stesso trattamento quando solo il certificato lo afferma: accanto a qualsiasi verdetto diverso da trusted il nome è mostrato come not verified, e publisher: conta la voce come incerta in una riga a parte - così !publisher:microsoft tiene un file Microsoft che qualcuno ha modificato dopo la firma.
Uma única linguagem, na caixa de busca da janela e em bws list --query. Uma palavra solta pesquisa o nome, o nome de exibição, a conta e o caminho de lançamento. Um campo restringe a busca. {{field_count}} campos, e o mesmo texto significa a mesma coisa nas duas metades da ferramenta.
start:auto !status:running
A primeira consulta que a maioria das pessoas escreve, e a que o services.msc não consegue responder de jeito nenhum.
file:missing
Uma entrada apontando para um executável que não está no disco. Em geral, uma desinstalação que deixou o registro para trás.
signed:no peruser:no
As famílias por usuário fazem uma cópia por sessão e enchem uma lista de quase duplicatas. Esta pergunta sobre o resto.
mismatch:running
Configuração e estado que discordam - uma entrada que o gerenciador está configurado para nunca iniciar, em execução mesmo assim.
privilege:SeDebugPrivilege
Um privilégio que permite a um processo abrir qualquer outro. Vale saber quais serviços o pedem.
account:?
As entradas cuja conta esta sessão não conseguiu ler. Uma pergunta que o services.msc nem sabe fazer.
and porque ela não poderia significar outra coisa.status:running status:stopped significa um ou outro, porque é o que se escreve ao marcar dois filtros. Dois limites em um número continuam restringindo - pid:>1000 pid:<2000 é o intervalo entre eles.! na frente de um termo o nega: !status:running. Em um arquivo em lote com setlocal EnableDelayedExpansion, o cmd come esse ! sem dizer nada e a consulta passa a significar outra coisa em silêncio - escreva ^! dentro das aspas ali.start:manual,disabled.account:"NT SERVICE\McmSvc".C:\Windows\System32\svchost.exe - é pesquisado, não lido como um campo chamado C.name:spool corresponde a tudo que o contém - o padrão, porque é o que se espera de uma caixa de busca.name:=spooler é exato.name:spool* aceita curingas, * e ?.name:/^Sql.*/ é uma expressão regular, e dentro das barras é escrita do jeito que as expressões regulares se escrevem: \?, \\ e uma vírgula significam ali o que significam ali. Uma barra que nunca fecha é um erro - para procurar a própria barra, escreva \/ ou use aspas.Um valor digitado errado é um erro, nunca um resultado vazio. status:runing responde Did you mean running? e termina com o código 2. Uma lista vazia pareceria uma resposta, e a diferença entre "nada corresponde" e "você digitou errado" é a diferença entre uma máquina limpa e uma auditoria que não provou nada. Uma consulta que não restringiria nada também é recusada na linha de comando, para que um script não opere sobre a máquina inteira por causa de um erro de digitação.
Cada um funciona do mesmo jeito na caixa de busca da janela e depois de bws list --query, e cada um foi executado em um Windows de verdade antes de ser escrito aqui. O que ele encontra depende da máquina - e para uma pergunta sobre problemas, uma resposta vazia é a que você quer.
| Consulta | O que ela encontra |
|---|---|
status:stopPending, | Presos ao parar ou ao iniciar - a espera que o snap-in mostra e que nunca termina. |
start:auto status:stopped trigger:none | Configurados para iniciar automaticamente, parados e sem aguardar um gatilho - a lista curta que vale a pena ler depois de uma reinicialização. |
start:delayed | Automático, iniciado um pouco depois das outras entradas automáticas. |
start:manual, | Em execução embora nada o inicie na inicialização - algo o pediu, um gatilho o iniciou, ou alguém o fez. |
| Consulta | O que ela encontra |
|---|---|
account:localsystem !publisher:microsoft | Rodando como LocalSystem, a conta mais poderosa, a partir de um arquivo que a Microsoft não assinou. Uma consulta sobre o editor lê as assinaturas por conta própria, então leva alguns segundos. |
!account:localsystem, | Serviços rodando sob qualquer outra conta - uma virtual, uma gerenciada ou a de uma pessoa. |
account:"NT SERVICE" | Uma conta virtual própria do serviço. As aspas mantêm as palavras juntas, por causa do espaço. |
| Consulta | O que ela encontra |
|---|---|
signed:notSigned, | Sem assinatura, uma cadeia em que o Windows não confia, ou um arquivo alterado depois de assinado. |
signed:trusted !publisher:microsoft | Assinado, confiável e não pela Microsoft - o software que outras empresas colocaram nesta máquina. |
type:driver start:boot, | Drivers carregados quando o Windows inicia cuja assinatura o Windows não considera confiável. Em uma máquina saudável, nenhum. |
!path:C:\Windows type:ownProcess | Um serviço com processo próprio cujo arquivo fica fora da pasta do Windows. |
path:\AppData\ | Lançado de dentro do perfil de alguém, o último lugar onde se espera um serviço. |
path:\System32\\ type:ownProcess | Uma barra invertida na frente de um espaço faz o espaço fazer parte da palavra, então um caminho terminado em barra invertida é escrito com duas quando outro termo o segue. No fim da consulta, uma basta. |
| Consulta | O que ela encontra |
|---|---|
trigger:device status:stopped | Aguardando a chegada de um dispositivo, portanto parados por um motivo. |
trigger:network | Iniciado quando chega uma solicitação a um ponto de extremidade de rede - uma porta, um pipe nomeado ou uma interface RPC. |
trigger:stop | Entradas que um gatilho pode parar, não apenas iniciar. |
dependson:Winmgmt | Entradas que precisam do WMI para rodar. |
requiredby:Spooler | Tudo de que o Spooler de Impressão precisa para rodar, e do que esses por sua vez precisam. |
| Consulta | O que ela encontra |
|---|---|
privilege:SeTcbPrivilege | Pede para agir como parte do sistema operacional. |
privilege:SeImpersonatePrivilege !account:localsystem | Pode agir em nome de um cliente enquanto roda sob uma conta diferente de LocalSystem. |
sidtype:unrestricted | Carrega no processo um SID de serviço próprio, de modo que as permissões podem nomeá-lo sozinho. sidtype:restricted pergunta pelos que também têm o processo com gravação restrita. |
type:sharedProcess status:running | Em execução dentro de um svchost compartilhado, junto com outros. |
memory:>200MB | Um processo usando mais de 200 MB. A memória é lida por conta própria quando uma consulta pergunta por ela. |
pid:1000-2000 | Em um processo cujo id está entre 1000 e 2000. |
| Consulta | O que ela encontra |
|---|---|
spool | Uma palavra solta, pesquisada no nome, no nome de exibição, na conta e no caminho de lançamento. |
name:=wuauserv | Exatamente este nome, e nada que apenas o contenha. |
name:win* | Nomes que começam com win, escritos com um curinga. |
name:/svc$/ | Nomes que terminam em svc, escritos como expressão regular. |
description:none | Nenhuma descrição, o que vale para a maioria dos drivers. |
description:? | Uma descrição que o Windows não conseguiu entregar, em geral porque aponta para um arquivo de idioma que não existe. |
peruser:template | Os modelos por usuário que o Windows copia para cada sessão aberta. |
Construída a partir do próprio programa, de modo que esta tabela não pode se afastar do que a ferramenta aceita. Um campo sem lista de valores aceita texto, um número ou um tamanho - a terceira coluna diz qual.
+ {{table:query-fields}} +Assinaturas levam vários segundos em uma máquina inteira e a memória é uma medição e não uma configuração, então nenhuma das duas é lida para uma listagem a menos que seja pedida. Uma consulta que menciona uma delas liga essa leitura por conta própria - você não precisa lembrar de --signatures além de signed:no. Na janela, uma consulta sobre assinaturas diz que a resposta está incompleta até que cheguem, em vez de mostrar uma lista mais curta como se fosse a resposta.
Se entradas foram julgadas com base em um campo que esta sessão não conseguiu ler, o resultado traz uma linha dizendo quantas - porque um resultado assim pode estar sem entradas, ou conter algumas que não pertencem. É a mesma regra que a ferramenta inteira segue: uma leitura malsucedida fica visível na resposta, nunca engolida. Um editor recebe o mesmo tratamento quando só o certificado o afirma: ao lado de qualquer veredito que não seja trusted o nome é mostrado como not verified, e publisher: conta a entrada como incerta em uma linha própria - de modo que !publisher:microsoft mantém um arquivo da Microsoft que alguém alterou depois de assinado.
sc.exe, Get-Service und dieses WerkzeugBeide sind schon auf dem Rechner, und beide bleiben nützlich. Diese Seite handelt davon, wo sie aufhören - und sie sagt klar, wo sie noch die bessere Antwort sind.
+sc.exeEs erreicht fast alles, was der Dienststeuerungs-Manager weiß, und sagt Ihnen nichts darüber, wie man fragt. Die Syntax stammt aus den Neunzigern - sc config X start= auto, wobei das Leerzeichen nach dem Gleichheitszeichen Pflicht ist und sein Fehlen ein stilles Scheitern bedeutet, das zu tun, was Sie meinten.
Es antwortet jeweils zu einem Eintrag. Es gibt kein Filtern, keine Ausgabe, die ein Skript ohne einen eigenen Parser lesen kann, und keine Vorschau: sc stop klappt entweder oder gibt eine Zahl zurück.
Get-Service und die *-Service-CmdletsRichtige Objekte, eine Pipeline und eine oberflächliche Sicht. In Windows PowerShell 5.1, der, die mit Windows kommt, zeigt Get-Service weder das Konto, unter dem ein Dienst läuft, noch seine Beschreibung. PowerShell 7 zeigt beides und auch den Startpfad und wird separat installiert.
Stop-Service -Force bedeutet "auch wenn etwas davon abhängt" - es beendet die abhängigen Dienste und sagt es Ihnen hinterher und nicht vorher.
| Frage | Mit dem, was auf dem Rechner ist | Hier |
|---|---|---|
| Was laufen sollte und nicht läuft | +Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
+ bws list --query "start:auto !status:running" |
+
| Welche Dienste eine unsignierte Programmdatei haben | +Jeden Startpfad lesen, auflösen, Get-AuthenticodeSignature für jeden aufrufen - ein Skript, kein Befehl |
+ bws list --query "signed:no" |
+
| Was das Beenden hiervon mit herunterreißen würde | +sc enumdepend X, dann die Liste lesen und selbst entscheiden |
+ bws stop X --dry-run --dependents, das ist der Plan, der laufen würde |
+
| Was sich seit letzter Woche geändert hat | +Nichts, außer Sie haben den Sammler selbst geschrieben | +bws snapshot diff before.json --live |
+
| Wer den Starttyp wann geändert hat | +Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, dann die Meldung jedes Ereignisses lesen |
+ bws history Spooler, dessen erste Zeile sagt, wie weit das Protokoll zurückreicht |
+
| Maschinenlesbare Ausgabe | +Objekte von PowerShell, Text von sc.exe |
+ --json bei jedem Befehl, auf der Standardausgabe, mit Warnungen auf der Standardfehlerausgabe |
+
Wo dieses Werkzeug bei einem Dienst von sc.exe abweicht, ist das hier ein Fehler. Ein Teil der Testsuite führt beide gegen den Rechner aus, auf dem er läuft, und vergleicht sie Eintrag für Eintrag, und ein Unterschied zwischen beiden ist das Nützlichste, was Sie in ein Issue schreiben können.
sc.exe kann alle drei. Dieses Werkzeug zeigt das Konto und den Startpfad und ändert keines von beiden und liest Wiederherstellungsaktionen nur, um zu warnen, bevor es einen Prozess beendet.sc create und sc delete. Hier nicht, mit Absicht.bws list --json kommt über ConvertFrom-Json als Objekte zurück, sodass es sich in die Pipeline einfügt, statt sie zu ersetzen.Das Werkzeug, das was stimmt mit diesem Rechner nicht beantwortet, und die Werkzeuge, die eine Einstellung ändern, sind nicht dasselbe Werkzeug. Stellen Sie die Frage hier, lesen Sie den Plan hier und nehmen Sie zum Ausführen, was Sie mögen - der Plan gibt die Befehlszeile aus, die dasselbe verlangt, und diese Zeile ist zum Kopieren gedacht.
+ +sc.exe, Get-Service y estoAmbos ya están en el equipo, y ambos seguirán siendo útiles. Esta página trata de dónde se detienen, y dice con claridad dónde siguen siendo la mejor respuesta.
+sc.exeAlcanza casi todo lo que sabe el administrador de control de servicios, y no le dice nada sobre cómo preguntar. La sintaxis es de los noventa: sc config X start= auto, donde el espacio tras el signo igual es obligatorio y su ausencia es un fallo silencioso al hacer lo que usted quería.
Responde sobre una entrada cada vez. No hay filtrado, ni una salida que un script pueda analizar sin escribir un analizador, ni vista previa: sc stop o funciona o devuelve un número.
Get-Service y los cmdlets *-ServiceObjetos de verdad, una canalización y una vista superficial. En Windows PowerShell 5.1, el que viene con Windows, Get-Service no muestra la cuenta con la que se ejecuta un servicio ni su descripción. PowerShell 7 muestra ambas, y también la ruta de lanzamiento, y se instala por separado.
Stop-Service -Force significa "aunque algo dependa de él": detiene a los dependientes, y se lo dice después y no antes.
| Pregunta | Con lo que hay en el equipo | Aquí |
|---|---|---|
| Qué debería estar en marcha y no lo está | +Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
+ bws list --query "start:auto !status:running" |
+
| Qué servicios tienen un ejecutable sin firmar | +Leer cada ruta de lanzamiento, resolverla, llamar a Get-AuthenticodeSignature en cada una: un script, no un comando |
+ bws list --query "signed:no" |
+
| Qué arrastraría detener este | +sc enumdepend X, y luego leer la lista y decidir usted mismo |
+ bws stop X --dry-run --dependents, que es el plan que se ejecutaría |
+
| Qué cambió desde la semana pasada | +Nada, salvo que haya escrito usted el recolector | +bws snapshot diff before.json --live |
+
| Quién cambió el tipo de inicio, y cuándo | +Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, y luego leer el mensaje de cada evento |
+ bws history Spooler, cuya primera línea dice hasta dónde llega el registro |
+
| Salida legible por máquina | +Objetos de PowerShell, texto de sc.exe |
+ --json en cada comando, por la salida estándar, con las advertencias por el error estándar |
+
Cuando esta herramienta discrepa de sc.exe sobre un servicio, es un error de esta. Parte del conjunto de pruebas ejecuta ambos contra el equipo en el que está y los compara entrada por entrada, y una diferencia entre los dos es lo más útil que puede poner en una incidencia.
sc.exe hace las tres cosas. Esta herramienta muestra la cuenta y la ruta de lanzamiento y no cambia ninguna, y lee las acciones de recuperación solo para avisar antes de terminar un proceso.sc create y sc delete. No aquí, a propósito.bws list --json vuelve como objetos con ConvertFrom-Json, así que se une a la canalización en lugar de sustituirla.La herramienta que responde a qué le pasa a este equipo y las herramientas que cambian un ajuste no son la misma herramienta. Haga la pregunta aquí, lea el plan aquí y use lo que prefiera para ejecutarlo: el plan imprime la línea de comandos que pide lo mismo, y esa línea está hecha para copiarse.
+ +sc.exe, Get-Service, et cet outilLes deux sont déjà sur la machine, et les deux resteront utiles. Cette page parle de l'endroit où ils s'arrêtent - et elle dit franchement où ils restent la meilleure réponse.
+sc.exeIl atteint presque tout ce que sait le gestionnaire de contrôle des services, et ne vous dit rien sur la façon de le demander. La syntaxe date des années quatre-vingt-dix - sc config X start= auto, où l'espace après le signe égal est obligatoire et son absence est un échec silencieux à faire ce que vous vouliez.
Il répond sur une entrée à la fois. Pas de filtrage, pas de sortie qu'un script peut analyser sans écrire un analyseur, et pas d'aperçu : sc stop marche ou renvoie un nombre.
Get-Service et les cmdlets *-ServiceDe vrais objets, un pipeline, et une vue superficielle. Dans Windows PowerShell 5.1, celui livré avec Windows, Get-Service n'affiche ni le compte sous lequel un service s'exécute ni sa description. PowerShell 7 affiche les deux, et le chemin de lancement aussi, et s'installe séparément.
Stop-Service -Force veut dire « même si quelque chose en dépend » - il arrête les dépendants, et vous le dit après plutôt qu'avant.
| Question | Avec ce qui est sur la machine | Ici |
|---|---|---|
| Ce qui devrait tourner et ne tourne pas | +Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
+ bws list --query "start:auto !status:running" |
+
| Quels services ont un exécutable non signé | +Lire chaque chemin de lancement, le résoudre, appeler Get-AuthenticodeSignature sur chacun - un script, pas une commande |
+ bws list --query "signed:no" |
+
| Ce que l'arrêt de celui-ci entraînerait | +sc enumdepend X, puis lire la liste et décider soi-même |
+ bws stop X --dry-run --dependents, qui est le plan qui s'exécuterait |
+
| Ce qui a changé depuis la semaine dernière | +Rien, sauf si vous avez écrit vous-même le collecteur | +bws snapshot diff before.json --live |
+
| Qui a changé le type de démarrage, et quand | +Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, puis lire le message de chaque événement |
+ bws history Spooler, dont la première ligne dit jusqu'où remonte le journal |
+
| Sortie lisible par une machine | +Des objets avec PowerShell, du texte avec sc.exe |
+ --json sur chaque commande, sur la sortie standard, avec les avertissements sur l'erreur standard |
+
Quand cet outil n'est pas d'accord avec sc.exe sur un service, c'est un bogue ici. Une partie de la suite de tests exécute les deux contre la machine sur laquelle elle tourne et les compare entrée par entrée, et une différence entre les deux est la chose la plus utile à mettre dans un ticket.
sc.exe fait les trois. Cet outil affiche le compte et le chemin de lancement et ne change ni l'un ni l'autre, et ne lit les actions de récupération que pour avertir avant de terminer un processus.sc create et sc delete. Pas ici, volontairement.bws list --json revient sous forme d'objets via ConvertFrom-Json, il rejoint donc le pipeline plutôt que de le remplacer.L'outil qui répond à qu'est-ce qui ne va pas sur cette machine et les outils qui changent un réglage ne sont pas le même outil. Posez la question ici, lisez le plan ici, et utilisez ce que vous voulez pour l'exécuter - le plan imprime la ligne de commande qui demande la même chose, et cette ligne est faite pour être copiée.
+ +sc.exe, Get-Service e questo strumentoEntrambi sono già sulla macchina, ed entrambi resteranno utili. Questa pagina parla di dove si fermano - e dice chiaramente dove sono ancora la risposta migliore.
+sc.exeRaggiunge quasi tutto ciò che sa il gestore di controllo dei servizi, e non le dice nulla su come chiederlo. La sintassi è degli anni Novanta - sc config X start= auto, dove lo spazio dopo il segno uguale è obbligatorio e la sua assenza è un fallimento silenzioso nel fare ciò che intendeva.
Risponde su una voce alla volta. Non c'è filtro, né un output che uno script possa analizzare senza scrivere un parser, né anteprima: sc stop o funziona o restituisce un numero.
Get-Service e i cmdlet *-ServiceOggetti veri, una pipeline e una vista superficiale. In Windows PowerShell 5.1, quello fornito con Windows, Get-Service non mostra l'account con cui gira un servizio né la sua descrizione. PowerShell 7 mostra entrambi, e anche il percorso di avvio, e si installa a parte.
Stop-Service -Force significa "anche se qualcosa ne dipende" - ferma i dipendenti, e glielo dice dopo e non prima.
| Domanda | Con ciò che c'è sulla macchina | Qui |
|---|---|---|
| Cosa dovrebbe essere attivo e non lo è | +Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
+ bws list --query "start:auto !status:running" |
+
| Quali servizi hanno un eseguibile non firmato | +Leggere ogni percorso di avvio, risolverlo, chiamare Get-AuthenticodeSignature su ciascuno - uno script, non un comando |
+ bws list --query "signed:no" |
+
| Cosa trascinerebbe con sé fermare questo | +sc enumdepend X, poi leggere l'elenco e decidere da sé |
+ bws stop X --dry-run --dependents, che è il piano che verrebbe eseguito |
+
| Cosa è cambiato dalla settimana scorsa | +Niente, a meno che abbia scritto lei stessa il raccoglitore | +bws snapshot diff before.json --live |
+
| Chi ha cambiato il tipo di avvio, e quando | +Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, poi leggere il messaggio di ogni evento |
+ bws history Spooler, la cui prima riga dice fin dove arriva il registro |
+
| Output leggibile da una macchina | +Oggetti da PowerShell, testo da sc.exe |
+ --json su ogni comando, sullo standard output, con gli avvisi sullo standard error |
+
Dove questo strumento non concorda con sc.exe su un servizio, è un bug qui. Parte della suite di test esegue entrambi sulla macchina in cui gira e li confronta voce per voce, e una differenza tra i due è la cosa più utile da mettere in una segnalazione.
sc.exe fa tutte e tre le cose. Questo strumento mostra l'account e il percorso di avvio e non cambia nessuno dei due, e legge le azioni di ripristino solo per avvisare prima di terminare un processo.sc create e sc delete. Non qui, di proposito.bws list --json torna come oggetti tramite ConvertFrom-Json, così si unisce alla pipeline invece di sostituirla.Lo strumento che risponde a cosa non va in questa macchina e gli strumenti che cambiano un'impostazione non sono lo stesso strumento. Ponga la domanda qui, legga il piano qui e usi ciò che preferisce per eseguirlo - il piano stampa la riga di comando che chiede la stessa cosa, e quella riga è fatta per essere copiata.
+ +sc.exe, Get-Service e istoOs dois já estão na máquina, e os dois continuarão úteis. Esta página trata de onde eles param - e diz com clareza onde ainda são a melhor resposta.
+sc.exeEle alcança quase tudo que o gerenciador de controle de serviços sabe, e não diz nada sobre como perguntar. A sintaxe é dos anos noventa - sc config X start= auto, em que o espaço depois do sinal de igual é obrigatório e a sua ausência é uma falha silenciosa em fazer o que você queria.
Ele responde sobre uma entrada por vez. Não há filtro, nem saída que um script possa analisar sem escrever um analisador, nem pré-visualização: o sc stop ou funciona ou devolve um número.
Get-Service e os cmdlets *-ServiceObjetos de verdade, um pipeline e uma visão superficial. No Windows PowerShell 5.1, o que vem com o Windows, o Get-Service não mostra a conta sob a qual um serviço roda nem a descrição dele. O PowerShell 7 mostra as duas coisas, e o caminho de lançamento também, e se instala separadamente.
Stop-Service -Force significa "mesmo que algo dependa dele" - ele para os dependentes, e conta depois e não antes.
| Pergunta | Com o que há na máquina | Aqui |
|---|---|---|
| O que deveria estar no ar e não está | +Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
+ bws list --query "start:auto !status:running" |
+
| Quais serviços têm um executável sem assinatura | +Ler cada caminho de lançamento, resolvê-lo, chamar Get-AuthenticodeSignature em cada um - um script, não um comando |
+ bws list --query "signed:no" |
+
| O que pará-lo derrubaria junto | +sc enumdepend X, depois ler a lista e decidir você mesmo |
+ bws stop X --dry-run --dependents, que é o plano que executaria |
+
| O que mudou desde a semana passada | +Nada, a menos que você tenha escrito o coletor | +bws snapshot diff before.json --live |
+
| Quem mudou o tipo de inicialização, e quando | +Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, depois ler a mensagem de cada evento |
+ bws history Spooler, cuja primeira linha diz até onde o log alcança |
+
| Saída legível por máquina | +Objetos do PowerShell, texto do sc.exe |
+ --json em cada comando, na saída padrão, com os avisos no erro padrão |
+
Onde esta ferramenta discorda do sc.exe sobre um serviço, isso é um bug daqui. Parte do conjunto de testes executa os dois contra a máquina em que está e os compara entrada por entrada, e uma diferença entre os dois é a coisa mais útil que você pode colocar em um relato de problema.
sc.exe faz as três coisas. Esta ferramenta mostra a conta e o caminho de lançamento e não muda nenhum dos dois, e lê as ações de recuperação só para avisar antes de encerrar um processo.sc create e sc delete. Não aqui, de propósito.bws list --json volta como objetos pelo ConvertFrom-Json, então entra no pipeline em vez de substituí-lo.A ferramenta que responde o que há de errado com esta máquina e as ferramentas que mudam uma configuração não são a mesma ferramenta. Faça a pergunta aqui, leia o plano aqui e use o que preferir para executá-lo - o plano imprime a linha de comando que pede o mesmo, e essa linha foi feita para ser copiada.
+ +services.msc-AlternativeDas Snap-in Dienste hat sich seit Windows 2000 kaum verändert. Es ist noch immer der schnellste Weg, einen Dienst zu starten, den Sie schon auf dem Bildschirm sehen, und der langsamste, um irgendeine Frage zu einem Rechner zu beantworten.
+svchost zu beenden ist.| Sie wollen | In services.msc | Hier |
|---|---|---|
| Finden, was laufen sollte und nicht läuft | +Nach Starttyp sortieren, scrollen, jede Zeile lesen | +start:auto !status:running |
+
| Wissen, was ein Beenden mit herunterreißt | +Ein Dialog, der abhängige Dienste nennt, nachdem Sie Beenden gedrückt haben | +Ein Plan, bevor etwas geschieht, mit jedem abhängigen Dienst als Schritt und einer Warnung, wenn einer davon etwas ist, das der Rechner braucht | +
| Wissen, was sich seit letzter Woche geändert hat | +Nichts | +bws snapshot diff before.json --live |
+
| Wissen, wer einen Starttyp geändert hat | +Nichts | +bws history Spooler, aus dem Systemprotokoll |
+
| Zwölf Dienste neu starten | +Zwölf Rechtsklicks | +Zwölf auswählen, ein Plan, ein Lauf, ein Bericht | +
| Sehen, wer eine Dienst-Programmdatei signiert hat | +Wird nicht angezeigt | +Eine Spalte und etwas, wonach man suchen kann: signed:no |
+
| Irgendetwas davon per Skript | +Nicht skriptbar | +bws, mit --json und einem Exit-Code für jedes Ende |
+
Zwei Dinge, und etwas anderes zu behaupten wäre die Art von Aussage, die dieses Projekt nicht macht.
+Was es überhaupt nicht kann, ist der Grund, warum es das hier gibt: eine Frage stellen, zuerst einen Plan zeigen und sagen, was abgedriftet ist.
+{{product}} ist kostenlos und quelloffen unter der GPL-3.0, eine Datei pro Hälfte oder ein Installer für den ganzen Rechner, und es nimmt nie Kontakt zum Internet auf. Zum Lesen sind keine Administratorrechte nötig - zum Ändern schon, und es sagt das, statt still zu scheitern.
+ +services.mscEl complemento Servicios apenas ha cambiado desde Windows 2000. Sigue siendo la forma más rápida de iniciar un servicio que ya ve en pantalla, y la más lenta de responder a cualquier pregunta sobre un equipo.
+svchost terminar.| Usted quiere | En services.msc | Aquí |
|---|---|---|
| Encontrar lo que debería estar en marcha y no lo está | +Ordenar por tipo de inicio, desplazarse, leer cada fila | +start:auto !status:running |
+
| Saber qué arrastra consigo una detención | +Un cuadro de diálogo que nombra a los dependientes después de pulsar Detener | +Un plan antes de que ocurra nada, con cada dependiente como paso y una advertencia cuando uno es algo que el equipo necesita | +
| Saber qué cambió desde la semana pasada | +Nada | +bws snapshot diff before.json --live |
+
| Saber quién cambió un tipo de inicio | +Nada | +bws history Spooler, a partir del registro del sistema |
+
| Reiniciar doce servicios | +Doce clics derechos | +Seleccionar doce, un plan, una ejecución, un informe | +
| Ver quién firmó el ejecutable de un servicio | +No se muestra | +Una columna, y algo por lo que buscar: signed:no |
+
| Automatizar cualquiera de ello con un script | +No se puede automatizar | +bws, con --json y un código de salida para cada final |
+
Dos cosas, y fingir lo contrario sería el tipo de afirmación que este proyecto no hace.
+Lo que no puede hacer en absoluto es la razón de que esto exista: hacer una pregunta, mostrar primero un plan y decirle qué se desvió.
+{{product}} es libre y gratuito bajo GPL-3.0, un archivo por mitad o un instalador para todo el equipo, y nunca se conecta a Internet. Consultar no requiere derechos de administrador; cambiar sí, y lo dice en lugar de fallar en silencio.
+ +services.mscLe composant enfichable Services a à peine changé depuis Windows 2000. C'est toujours le moyen le plus rapide de démarrer un service que vous voyez déjà à l'écran, et le plus lent de répondre à n'importe quelle question sur une machine.
+svchost à terminer.| Vous voulez | Dans services.msc | Ici |
|---|---|---|
| Trouver ce qui devrait tourner et ne tourne pas | +Trier par type de démarrage, faire défiler, lire chaque ligne | +start:auto !status:running |
+
| Savoir ce qu'un arrêt entraîne avec lui | +Une boîte de dialogue qui nomme les dépendants après que vous avez appuyé sur Arrêter | +Un plan avant que quoi que ce soit n'arrive, avec chaque dépendant comme étape et un avertissement quand l'un d'eux est quelque chose dont la machine a besoin | +
| Savoir ce qui a changé depuis la semaine dernière | +Rien | +bws snapshot diff before.json --live |
+
| Savoir qui a changé un type de démarrage | +Rien | +bws history Spooler, d'après le journal Système |
+
| Redémarrer douze services | +Douze clics droits | +En sélectionner douze, un plan, une exécution, un rapport | +
| Voir qui a signé l'exécutable d'un service | +Non affiché | +Une colonne, et un critère de recherche : signed:no |
+
| Scripter n'importe lequel de ces points | +Non scriptable | +bws, avec --json et un code de sortie pour chaque fin |
+
Deux choses, et prétendre le contraire serait le genre d'affirmation que ce projet ne fait pas.
+Ce qu'il ne sait pas du tout faire est la raison d'être de cet outil : poser une question, montrer un plan d'abord, et dire ce qui a dérivé.
+{{product}} est libre et gratuit sous GPL-3.0, un fichier par moitié ou un installeur pour toute la machine, et il ne contacte jamais Internet. Consulter ne demande aucun droit d'administrateur - modifier en demande, et il le dit au lieu d'échouer en silence.
+ +services.mscLo snap-in Servizi è cambiato appena dai tempi di Windows 2000. È ancora il modo più rapido per avviare un servizio che vede già sullo schermo, e il più lento per rispondere a qualsiasi domanda su una macchina.
+svchost terminare.| Vuole | In services.msc | Qui |
|---|---|---|
| Trovare ciò che dovrebbe essere attivo e non lo è | +Ordinare per tipo di avvio, scorrere, leggere ogni riga | +start:auto !status:running |
+
| Sapere cosa trascina con sé un arresto | +Una finestra di dialogo che nomina i dipendenti dopo che ha premuto Arresta | +Un piano prima che accada qualsiasi cosa, con ogni dipendente come passaggio e un avviso quando uno è qualcosa di cui la macchina ha bisogno | +
| Sapere cosa è cambiato dalla settimana scorsa | +Niente | +bws snapshot diff before.json --live |
+
| Sapere chi ha cambiato un tipo di avvio | +Niente | +bws history Spooler, dal registro di sistema |
+
| Riavviare dodici servizi | +Dodici clic destri | +Selezionarne dodici, un piano, un'esecuzione, un rapporto | +
| Vedere chi ha firmato l'eseguibile di un servizio | +Non mostrato | +Una colonna, e un criterio di ricerca: signed:no |
+
| Automatizzare qualsiasi cosa con uno script | +Non automatizzabile | +bws, con --json e un codice di uscita per ogni conclusione |
+
Due cose, e fingere il contrario sarebbe il tipo di affermazione che questo progetto non fa.
+Ciò che non sa fare affatto è il motivo per cui questo esiste: porre una domanda, mostrare prima un piano e dire cosa è andato alla deriva.
+{{product}} è libero e gratuito con licenza GPL-3.0, un file per metà o un programma di installazione per l'intera macchina, e non si collega mai a Internet. Consultare non richiede diritti di amministratore - cambiare sì, e lo dice invece di fallire in silenzio.
+ +services.mscO snap-in Serviços quase não mudou desde o Windows 2000. Continua sendo o jeito mais rápido de iniciar um serviço que você já vê na tela, e o mais lento de responder a qualquer pergunta sobre uma máquina.
+svchost encerrar.| Você quer | No services.msc | Aqui |
|---|---|---|
| Encontrar o que deveria estar no ar e não está | +Ordenar por tipo de inicialização, rolar, ler cada linha | +start:auto !status:running |
+
| Saber o que uma parada derruba junto | +Uma caixa de diálogo que nomeia os dependentes depois de você clicar em Parar | +Um plano antes de qualquer coisa acontecer, com cada dependente como etapa e um aviso quando um deles é algo de que a máquina precisa | +
| Saber o que mudou desde a semana passada | +Nada | +bws snapshot diff before.json --live |
+
| Saber quem mudou um tipo de inicialização | +Nada | +bws history Spooler, pelo log do Sistema |
+
| Reiniciar doze serviços | +Doze cliques com o botão direito | +Selecionar doze, um plano, uma execução, um relatório | +
| Ver quem assinou o executável de um serviço | +Não é mostrado | +Uma coluna, e algo por que pesquisar: signed:no |
+
| Automatizar qualquer coisa disso com script | +Não é automatizável | +bws, com --json e um código de saída para cada desfecho |
+
Duas coisas, e fingir o contrário seria o tipo de afirmação que este projeto não faz.
+O que ele não consegue fazer de jeito nenhum é o motivo de isto existir: fazer uma pergunta, mostrar um plano primeiro e dizer o que se desviou.
+O {{product}} é livre e gratuito sob a GPL-3.0, um arquivo por metade ou um instalador para a máquina inteira, e nunca se conecta à internet. Consultar não exige direitos de administrador - mudar exige, e ele diz isso em vez de falhar em silêncio.
+ +Jedes andere Werkzeug sagt Ihnen, wie ein Rechner jetzt aussieht. Die Frage, die ein Administrator wirklich hat, ist was ist anders als damals, als es funktionierte - und kein gewöhnliches Windows beantwortet sie.
+Den ganzen Rechner in einem Augenblick: jeden Dienst und jeden Treiber mit Starttyp, Konto, Startpfad und Argumenten, Hash und Signierer der Datei, die er ausführt, seinen Abhängigkeiten und dem, was von ihm abhängt, seinen Triggern, seinen erforderlichen Privilegien, seinem SID-Typ und seinem Sicherheitsdeskriptor - dazu den Namen des Rechners, das Konto, das ihn erstellt hat, und ob dieses Konto ein Administrator war.
+bws snapshot create before.json --note "before the patch"
+ Er ist JSON mit einem Feld pro Zeile. Das ist Absicht: Ein Snapshot passt so in ein Repository, und git diff liest ihn, sodass der eigene Vergleich des Werkzeugs nicht der einzige Weg ist, einen anzusehen.
Legen Sie ihn ab wie das, was er ist. Ein Snapshot beschreibt den ganzen Rechner bis hin zu jedem Startpfad und jedem Sicherheitsdeskriptor. Er wird mit den Berechtigungen geschrieben, die sein Verzeichnis ohnehin hat, und das Werkzeug schränkt nichts ein - ein Verzeichnis, das andere lesen können, ist also eines, in dem sie all das lesen können.
+$ 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.
+ Das Fenster tut dasselbe unter Audit.... Take snapshot... schreibt dieselbe Datei, mit einer Notiz, wenn Sie eine eingeben, und Compare with this machine... oder Compare two snapshots... zeigt anstelle der Liste, was sich geändert hat, eine Zeile pro Feld, wobei alles, was den Vergleich weniger als exakt macht, über der Tabelle steht. Show grenzt ihn auf die Unterschiede oder auf ein Feld ein, und Export... schreibt ihn in eine CSV-Datei.
+--exit-code endet mit 5, wenn sich die Konfiguration unterscheidet - ein Eintrag hinzugefügt oder entfernt, oder einer anders eingerichtet. Ein Dienst, der nur von selbst angehalten oder gestartet wurde, wird gemeldet und zählt nicht, und die Kopien pro Benutzer, die Windows für jede angemeldete Sitzung anlegt, ebenso nicht - sie werden ausgelassen und gezählt. Kein Fehler - Drift zu finden ist wofür dieses Werkzeug da ist, und sie zu finden ist kein Fehler -, weshalb er eine eigene Nummer hat und nicht die ausleiht, die bedeutet, dass etwas schiefging.
# der Tag, an dem der Rechner in Betrieb geht
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# jede Nacht, aus einer geplanten Aufgabe
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - keine Konfigurationsdrift
+# 5 - die Konfiguration ist abgedriftet, und drift.json sagt, was
+# 3 - es lief und konnte nicht alles lesen, die Antwort ist also unvollständig
+ Das ist der ganze Mechanismus: eine Baseline, erstellt, als der Rechner als gut bekannt war, und eine Frage, die jede Nacht gestellt wird. Antwortet er in der ersten Nacht mit 5, erfährt es jemand in der ersten Nacht und nicht am Morgen, an dem etwas kaputtgeht.
Toda otra herramienta le dice cómo se ve un equipo ahora. La pregunta que de verdad tiene un administrador es qué es distinto de cuando funcionaba, y ningún Windows de serie la responde.
+El equipo entero en un momento dado: cada servicio y cada controlador, con su tipo de inicio, cuenta, ruta de lanzamiento y argumentos, el hash y el firmante del archivo que ejecuta, sus dependencias y lo que depende de él, sus desencadenadores, sus privilegios requeridos, su tipo de SID y su descriptor de seguridad, además del nombre del equipo, la cuenta que la tomó y si esa cuenta era administrador.
+bws snapshot create before.json --note "before the patch"
+ Es JSON con un campo por línea. Es deliberado: significa que una instantánea cabe en un repositorio y git diff la lee, de modo que la comparación de la propia herramienta no es la única forma de mirar una.
Archívela como lo que es. Una instantánea describe todo el equipo, hasta cada ruta de lanzamiento y cada descriptor de seguridad. Se escribe con los permisos que su directorio ya tiene, y la herramienta no restringe nada: un directorio que otras personas pueden leer es uno en el que pueden leer todo eso.
+$ 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.
+ La ventana hace lo mismo en Audit.... Take snapshot... escribe el mismo archivo, con una nota si escribe una, y Compare with this machine... o Compare two snapshots... muestra qué cambió en lugar de la lista, una fila por campo, con todo lo que hace la comparación menos que exacta dicho sobre la tabla. Show la acota a las diferencias o a un campo, y Export... la escribe en un archivo CSV.
+--exit-code termina con 5 cuando la configuración difiere: una entrada añadida o eliminada, o una configurada de otro modo. Un servicio que solo se detuvo o inició por sí mismo se informa y no cuenta, y tampoco las copias por usuario que Windows hace para cada sesión iniciada, que se dejan fuera y se cuentan. No es un fallo (encontrar deriva es para lo que sirve esta herramienta, y encontrarla no es un fallo), por lo que tiene un número propio en lugar de tomar prestado el que significa que algo fue mal.
# el día en que el equipo entra en servicio
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# cada noche, desde una tarea programada
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - sin deriva de configuración
+# 5 - la configuración se desvió, y drift.json dice en qué
+# 3 - se ejecutó y no pudo leerlo todo, así que la respuesta es parcial
+ Ese es todo el mecanismo: una línea base tomada cuando se sabía que el equipo estaba bien, y una pregunta hecha cada noche. Si la primera noche responde 5, alguien se entera la primera noche y no la mañana en que algo se rompe.
Tous les autres outils vous disent à quoi ressemble une machine maintenant. La question qu'un administrateur se pose vraiment est qu'est-ce qui est différent de l'époque où ça marchait - et aucun Windows standard n'y répond.
+La machine entière à un moment donné : chaque service et chaque pilote, avec son type de démarrage, son compte, son chemin de lancement et ses arguments, le hachage et le signataire du fichier qu'il exécute, ses dépendances et ce qui en dépend, ses déclencheurs, ses privilèges requis, son type de SID et son descripteur de sécurité - plus le nom de la machine, le compte qui l'a pris et si ce compte était un administrateur.
+bws snapshot create before.json --note "before the patch"
+ C'est du JSON avec un champ par ligne. C'est voulu : un instantané entre ainsi dans un dépôt et git diff le lit, de sorte que la comparaison propre à l'outil n'est pas la seule façon d'en regarder un.
Rangez-le pour ce qu'il est. Un instantané décrit la machine entière, jusqu'à chaque chemin de lancement et chaque descripteur de sécurité. Il est écrit avec les autorisations que son répertoire a déjà, et l'outil ne restreint rien - un répertoire que d'autres personnes peuvent lire est donc un répertoire où elles peuvent lire tout cela.
+$ 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.
+ La fenêtre fait la même chose sous Audit.... Take snapshot... écrit le même fichier, avec une note si vous en tapez une, et Compare with this machine... ou Compare two snapshots... montre ce qui a changé à la place de la liste, une ligne par champ, tout ce qui rend la comparaison moins qu'exacte étant dit au-dessus du tableau. Show la restreint aux différences ou à un champ, et Export... l'écrit dans un fichier CSV.
+--exit-code se termine par 5 quand la configuration diffère - une entrée ajoutée ou supprimée, ou une entrée configurée autrement. Un service qui s'est seulement arrêté ou démarré de lui-même est signalé et ne compte pas, pas plus que les copies par utilisateur que Windows fait pour chaque session ouverte, qui sont écartées et comptées. Ce n'est pas un échec - trouver une dérive est ce pour quoi cet outil existe, et la trouver n'est pas un échec - ce qui explique qu'il ait un numéro à lui plutôt que d'emprunter celui qui signifie que quelque chose s'est mal passé.
# le jour où la machine entre en service
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# chaque nuit, depuis une tâche planifiée
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - aucune dérive de configuration
+# 5 - la configuration a dérivé, et drift.json dit en quoi
+# 3 - elle a tourné et n'a pas pu tout lire, la réponse est donc partielle
+ C'est tout le mécanisme : une référence prise quand la machine était réputée saine, et une question posée chaque nuit. Si la première nuit répond 5, quelqu'un l'apprend la première nuit plutôt que le matin où quelque chose casse.
Ogni altro strumento le dice com'è una macchina adesso. La domanda che un amministratore ha davvero è cosa è diverso da quando funzionava - e nessun Windows di serie vi risponde.
+L'intera macchina in un istante: ogni servizio e ogni driver, con il suo tipo di avvio, account, percorso di avvio e argomenti, l'hash e il firmatario del file che esegue, le sue dipendenze e ciò che ne dipende, i suoi trigger, i privilegi richiesti, il tipo di SID e il descrittore di sicurezza - più il nome della macchina, l'account che lo ha preso e se quell'account era un amministratore.
+bws snapshot create before.json --note "before the patch"
+ È JSON con un campo per riga. È voluto: significa che uno snapshot entra in un repository e git diff lo legge, così il confronto dello strumento stesso non è l'unico modo di guardarne uno.
Lo archivi per ciò che è. Uno snapshot descrive l'intera macchina, fino a ogni percorso di avvio e ogni descrittore di sicurezza. Viene scritto con i permessi che la sua cartella ha già, e lo strumento non restringe nulla - quindi una cartella che altre persone possono leggere è una in cui possono leggere tutto questo.
+$ 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.
+ La finestra fa lo stesso in Audit.... Take snapshot... scrive lo stesso file, con una nota se ne digita una, e Compare with this machine... o Compare two snapshots... mostra cosa è cambiato al posto dell'elenco, una riga per campo, con tutto ciò che rende il confronto meno che esatto detto sopra la tabella. Show lo restringe alle differenze o a un campo, e Export... lo scrive in un file CSV.
+--exit-code termina con 5 quando la configurazione differisce - una voce aggiunta o rimossa, o una impostata diversamente. Un servizio che si è solo fermato o avviato da solo viene segnalato e non conta, e nemmeno le copie per utente che Windows fa per ogni sessione aperta, che vengono escluse e contate. Non è un fallimento - trovare la deriva è ciò per cui serve questo strumento, e trovarla non è un fallimento - ed è per questo che ha un numero suo invece di prendere in prestito quello che significa che qualcosa è andato storto.
# il giorno in cui la macchina entra in servizio
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# ogni notte, da un'attività pianificata
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - nessuna deriva di configurazione
+# 5 - la configurazione è andata alla deriva, e drift.json dice come
+# 3 - è girato e non ha potuto leggere tutto, quindi la risposta è parziale
+ Questo è tutto il meccanismo: una base di riferimento presa quando la macchina era nota come buona, e una domanda posta ogni notte. Se la prima notte risponde 5, qualcuno lo scopre la prima notte e non la mattina in cui qualcosa si rompe.
Toda outra ferramenta diz como uma máquina está agora. A pergunta que um administrador realmente tem é o que é diferente de quando funcionava - e nenhum Windows de fábrica a responde.
+A máquina inteira em um momento: cada serviço e cada driver, com seu tipo de inicialização, conta, caminho de lançamento e argumentos, o hash e o signatário do arquivo que ele executa, suas dependências e o que depende dele, seus gatilhos, seus privilégios exigidos, seu tipo de SID e seu descritor de segurança - mais o nome da máquina, a conta que o fez e se essa conta era administradora.
+bws snapshot create before.json --note "before the patch"
+ É JSON com um campo por linha. Isso é de propósito: significa que um instantâneo cabe em um repositório e o git diff o lê, de modo que a comparação da própria ferramenta não é a única maneira de olhar um.
Arquive-o como o que ele é. Um instantâneo descreve a máquina inteira, até cada caminho de lançamento e cada descritor de segurança. Ele é gravado com as permissões que o diretório dele já tem, e a ferramenta não restringe nada - então um diretório que outras pessoas podem ler é um em que elas podem ler tudo isso.
+$ 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.
+ A janela faz o mesmo em Audit.... Take snapshot... grava o mesmo arquivo, com uma nota se você digitar uma, e Compare with this machine... ou Compare two snapshots... mostra o que mudou no lugar da lista, uma linha por campo, com tudo o que torna a comparação menos que exata dito acima da tabela. Show a restringe às diferenças ou a um campo, e Export... a grava em um arquivo CSV.
+--exit-code termina com 5 quando a configuração difere - uma entrada adicionada ou removida, ou uma configurada de outro jeito. Um serviço que apenas parou ou iniciou sozinho é informado e não conta, e nem as cópias por usuário que o Windows faz para cada sessão aberta, que são deixadas de fora e contadas. Não é uma falha - encontrar deriva é para o que esta ferramenta serve, e encontrá-la não é uma falha - e por isso ele tem um número próprio em vez de tomar emprestado o que significa que algo deu errado.
# o dia em que a máquina entra em serviço
+bws snapshot create C:\baselines\web01.json --note "after the build"
+
+# toda noite, a partir de uma tarefa agendada
+bws snapshot diff C:\baselines\web01.json --live --exit-code --json > C:\logs\drift.json
+# 0 - sem deriva de configuração
+# 5 - a configuração se desviou, e drift.json diz o quê
+# 3 - rodou e não conseguiu ler tudo, então a resposta é parcial
+ Esse é todo o mecanismo: uma linha de base feita quando se sabia que a máquina estava boa, e uma pergunta feita toda noite. Se na primeira noite ele responder 5, alguém descobre na primeira noite e não na manhã em que algo quebrar.
Das Snap-in zeigt Wird beendet und bewegt sich nie. Die übliche Antwort ist der Task-Manager, ein Raten, in welchem svchost.exe er lebt, und Task beenden - was auch jeden anderen Dienst in diesem Prozess beendet, ohne zu sagen, welche das waren.
svchost.exe. Beendet man diesen Prozess, endet es für alle, und genau das tut der Task-Manager, ohne sie zu nennen.Fragen Sie, was das Beenden mitnehmen würde. Nichts geschieht, bis Sie --dry-run weglassen.
$ bws kill Spooler --dry-run
+ Die Vorschau nennt den Prozess mit seiner Nummer, nennt jeden anderen Dienst, der in ihm lebt, und zeigt zwei Schritte statt einem: den Dienst bitten, sich zu beenden, und nur wenn das nicht klappt den Prozess beenden. Ein Dienst, der von selbst anhält, wird nie beendet.
+--force überspringt den höflichen Schritt und beendet den Prozess sofort. Es ändert den Plan und nicht dessen Ausführung, sodass die Vorschau einen Schritt statt zwei zeigt und der Unterschied sichtbar ist, bevor etwas geschieht.--restart bringt alles zurück, sobald der Prozess weg ist - den Eintrag, nach dem Sie gefragt haben, und alles, was seinen Prozess teilte. Ohne es bleibt der Rechner mit diesen angehaltenen Diensten zurück, und der Bericht sagt, wie man sie wieder startet.Einen Prozess zu beenden ist das Einzige, was dieses Werkzeug tut, wogegen niemand im Namen des Rechners Einspruch erheben kann. Deshalb ist es ein eigener Befehl, deshalb nennt die Vorschau jeden Dienst, den es mitnimmt, und deshalb kommt der höfliche Schritt zuerst, sofern Sie nichts anderes sagen.
+bws show Spooler - der Prozess, was von ihm abhängt, wovon er abhängt und ob er überhaupt Beenden-Anforderungen annimmt.bws stop Spooler --dry-run --dependents. Lautet die Antwort Ablehnung, sagt sie, welcher der drei Gründe es ist.bws kill Spooler --dry-run, und die Liste der Dienste lesen, die diesen Prozess teilen.bws kill Spooler --restart. Der Bericht endet mit dem, was nicht geklappt hat, und den Befehlen, die alles zurückbringen.Alle vier funktionieren im Fenster genauso: Rechtsklick auf eine Zeile, Force stop... wählen, den Plan lesen, und die Schaltfläche darunter ist nach dem benannt, was sie tun wird.
+Weil er eine andere Frage beantwortet. Der Task-Manager kennt Prozesse, und dieses Problem betrifft Dienste, und beide entsprechen einander nicht eins zu eins.
+Ein gemeinsamer svchost.exe kann ein Dutzend Dienste halten. Der Task-Manager beendet ihn, ohne zu sagen, welche zwölf, keiner kommt von selbst zurück, und nichts sagt Ihnen danach, was angehalten wurde. Ein EDR, der einen Prozess meldet, der svchost.exe beendet, macht seine Arbeit, und er kann Ihren Klick nicht von allem anderen unterscheiden.
El complemento muestra Deteniendo y no se mueve. La respuesta habitual es el Administrador de tareas, adivinar en qué svchost.exe vive y Finalizar tarea, que termina también todos los demás servicios de ese proceso sin decirle cuáles eran.
svchost.exe compartido. Terminar ese proceso los termina a todos, que es exactamente lo que hace el Administrador de tareas sin nombrarlos.Pregunte qué se llevaría consigo terminarlo. No ocurre nada hasta que quite --dry-run.
$ bws kill Spooler --dry-run
+ La vista previa nombra el proceso por su número, nombra cada otro servicio que vive en él y muestra dos pasos en lugar de uno: pedir al servicio que se detenga y, solo si eso no funciona, terminar el proceso. Un servicio que se detiene por sí solo nunca se termina.
+--force omite el paso cortés y termina el proceso de inmediato. Cambia el plan y no su ejecución, de modo que la vista previa muestra un paso en lugar de dos y la diferencia es visible antes de que ocurra nada.--restart lo devuelve todo a su sitio una vez desaparecido el proceso: la entrada por la que preguntó y todo lo que compartía su proceso. Sin él, el equipo queda con esos servicios detenidos, y el informe dice cómo volver a iniciarlos.Terminar un proceso es lo único que hace esta herramienta que nadie puede rechazar en nombre del equipo. Por eso es un comando propio, por eso la vista previa nombra cada servicio que se lleva consigo y por eso el paso cortés va primero salvo que usted diga otra cosa.
+bws show Spooler: el proceso, lo que depende de él, de qué depende y si acepta siquiera solicitudes de detención.bws stop Spooler --dry-run --dependents. Si la respuesta es un rechazo, dice cuál de las tres razones es.bws kill Spooler --dry-run, y leer la lista de servicios que comparten ese proceso.bws kill Spooler --restart. El informe termina con lo que no funcionó y los comandos que lo devuelven todo a su sitio.Los cuatro funcionan igual en la ventana: clic derecho en una fila, elegir Force stop..., leer el plan, y el botón de debajo lleva el nombre de lo que hará.
+Porque responde a otra pregunta. El Administrador de tareas conoce procesos y este problema trata de servicios, y ambos no se corresponden uno a uno.
+Un svchost.exe compartido puede alojar una docena de servicios. El Administrador de tareas lo terminará sin decir cuáles doce, ninguno vuelve por sí solo y nada le dice después qué se detuvo. Un EDR que marca un proceso que termina svchost.exe hace su trabajo, y no puede distinguir su clic de cualquier otro.
Le composant enfichable affiche Arrêt en cours et ne bouge plus. La réponse habituelle est le Gestionnaire des tâches, une devinette sur le svchost.exe dans lequel il vit, et Fin de tâche - ce qui termine aussi tous les autres services de ce processus, sans dire lesquels c'étaient.
svchost.exe partagé. Terminer ce processus les termine tous, ce qui est exactement ce que fait le Gestionnaire des tâches sans les nommer.Demandez ce que le terminer emporterait avec lui. Rien n'arrive tant que vous n'ôtez pas --dry-run.
$ bws kill Spooler --dry-run
+ L'aperçu nomme le processus par son numéro, nomme chaque autre service qui y vit, et montre deux étapes plutôt qu'une : demander au service de s'arrêter, et seulement si cela ne marche pas, terminer le processus. Un service qui s'arrête de lui-même n'est jamais terminé.
+--force saute l'étape polie et termine le processus tout de suite. Cela change le plan plutôt que son exécution, de sorte que l'aperçu montre une étape au lieu de deux et que la différence est visible avant que quoi que ce soit n'arrive.--restart remet tout en route une fois le processus disparu - l'entrée dont vous avez parlé et tout ce qui partageait son processus. Sans lui, la machine reste avec ces services arrêtés, et le rapport dit comment les redémarrer.Terminer un processus est la seule chose que fait cet outil à laquelle personne ne peut s'opposer au nom de la machine. C'est pourquoi c'est une commande à part entière, pourquoi l'aperçu nomme chaque service qu'elle emporte, et pourquoi l'étape polie vient d'abord sauf si vous dites le contraire.
+bws show Spooler - le processus, ce qui en dépend, ce dont il dépend, et s'il accepte les demandes d'arrêt.bws stop Spooler --dry-run --dependents. Si la réponse est un refus, elle dit laquelle des trois raisons c'est.bws kill Spooler --dry-run, et lire la liste des services qui partagent ce processus.bws kill Spooler --restart. Le rapport se termine par ce qui n'a pas marché et les commandes qui remettent les choses en place.Les quatre fonctionnent de la même façon dans la fenêtre : clic droit sur une ligne, choisir Force stop..., lire le plan, et le bouton en dessous porte le nom de ce qu'il va faire.
+Parce qu'il répond à une autre question. Le Gestionnaire des tâches connaît les processus et ce problème concerne les services, et les deux ne correspondent pas un à un.
+Un svchost.exe partagé peut contenir une douzaine de services. Le Gestionnaire des tâches le terminera sans dire lesquels, aucun ne revient de lui-même, et rien ne vous dit ensuite ce qui s'est arrêté. Un EDR qui signale un processus terminant svchost.exe fait son travail, et il ne peut pas distinguer votre clic de tout autre.
Lo snap-in mostra Arresto in corso e non si muove mai. La risposta solita è Gestione attività, un'ipotesi su quale svchost.exe lo ospiti, e Termina attività - che termina anche ogni altro servizio di quel processo, senza dirle quali erano.
svchost.exe condiviso. Terminare quel processo li termina tutti, che è esattamente ciò che fa Gestione attività senza nominarli.Chieda cosa si porterebbe via terminarlo. Non accade nulla finché non toglie --dry-run.
$ bws kill Spooler --dry-run
+ L'anteprima nomina il processo con il suo numero, nomina ogni altro servizio che vive al suo interno e mostra due passaggi anziché uno: chiedere al servizio di fermarsi e, solo se questo non funziona, terminare il processo. Un servizio che si ferma da solo non viene mai terminato.
+--force salta il passaggio cortese e termina subito il processo. Cambia il piano e non la sua esecuzione, così l'anteprima mostra un passaggio invece di due e la differenza è visibile prima che accada qualsiasi cosa.--restart rimette tutto a posto una volta sparito il processo - la voce su cui ha chiesto e tutto ciò che ne condivideva il processo. Senza, la macchina resta con quei servizi fermi, e il rapporto dice come riavviarli.Terminare un processo è l'unica cosa che fa questo strumento a cui nessuno può opporsi a nome della macchina. Per questo è un comando a sé, per questo l'anteprima nomina ogni servizio che si porta via, e per questo il passaggio cortese viene prima a meno che lei dica altrimenti.
+bws show Spooler - il processo, ciò che ne dipende, da cosa dipende e se accetta richieste di arresto.bws stop Spooler --dry-run --dependents. Se la risposta è un rifiuto, dice quale delle tre ragioni è.bws kill Spooler --dry-run, e leggere l'elenco dei servizi che condividono quel processo.bws kill Spooler --restart. Il rapporto finisce con ciò che non ha funzionato e i comandi che rimettono le cose a posto.Tutti e quattro funzionano allo stesso modo nella finestra: clic destro su una riga, scegliere Force stop..., leggere il piano, e il pulsante sotto porta il nome di ciò che farà.
+Perché risponde a un'altra domanda. Gestione attività conosce i processi e questo problema riguarda i servizi, e i due non corrispondono uno a uno.
+Uno svchost.exe condiviso può ospitare una dozzina di servizi. Gestione attività lo terminerà senza dire quali dodici, nessuno torna da solo e nulla le dice dopo cosa si è fermato. Un EDR che segnala un processo che termina svchost.exe fa il suo lavoro, e non può distinguere il suo clic da qualsiasi altro.
O snap-in mostra Parando e nunca sai do lugar. A resposta de sempre é o Gerenciador de Tarefas, um palpite sobre em qual svchost.exe ele vive e Finalizar tarefa - o que encerra também todos os outros serviços daquele processo, sem dizer quais eram.
svchost.exe compartilhado. Encerrar esse processo encerra todos eles, que é exatamente o que o Gerenciador de Tarefas faz sem nomeá-los.Pergunte o que encerrá-lo levaria junto. Nada acontece até você tirar o --dry-run.
$ bws kill Spooler --dry-run
+ A pré-visualização nomeia o processo pelo número, nomeia todos os outros serviços que vivem nele e mostra duas etapas em vez de uma: pedir ao serviço que pare e, somente se isso não funcionar, encerrar o processo. Um serviço que para sozinho nunca é encerrado.
+--force pula a etapa educada e encerra o processo na hora. Muda o plano e não a execução dele, de modo que a pré-visualização mostra uma etapa em vez de duas e a diferença fica visível antes de qualquer coisa acontecer.--restart traz tudo de volta depois que o processo some - a entrada sobre a qual você perguntou e tudo o que dividia o processo dela. Sem ele, a máquina fica com esses serviços parados, e o relatório diz como iniciá-los de novo.Encerrar um processo é a única coisa que esta ferramenta faz que ninguém pode recusar em nome da máquina. É por isso que é um comando próprio, por isso a pré-visualização nomeia todos os serviços que ele leva junto, e por isso a etapa educada vem primeiro, a menos que você diga o contrário.
+bws show Spooler - o processo, o que depende dele, do que ele depende e se aceita pedidos de parada.bws stop Spooler --dry-run --dependents. Se a resposta for uma recusa, ela diz qual dos três motivos é.bws kill Spooler --dry-run, e ler a lista de serviços que dividem aquele processo.bws kill Spooler --restart. O relatório termina com o que não funcionou e os comandos que colocam as coisas de volta.Os quatro funcionam do mesmo jeito na janela: clique com o botão direito em uma linha, escolha Force stop..., leia o plano, e o botão embaixo tem o nome do que vai fazer.
+Porque ele responde a outra pergunta. O Gerenciador de Tarefas conhece processos e este problema é sobre serviços, e os dois não se correspondem um a um.
+Um svchost.exe compartilhado pode guardar uma dúzia de serviços. O Gerenciador de Tarefas o encerrará sem dizer quais doze, nenhum volta sozinho e nada diz depois o que parou. Um EDR que sinaliza um processo encerrando o svchost.exe está fazendo o seu trabalho, e não consegue distinguir o seu clique de qualquer outro.
Die ehrliche Antwort ist, dass es Ihnen niemand sagen kann, und jede Liste, die es behauptet, beschreibt einen Rechner, der nicht Ihrer ist. Was sich beantworten lässt, ist enger und weit nützlicher: Was geht auf diesem Rechner nicht auf, und was ist anders als damals, als es funktionierte.
+start:auto !status:running
Windows wurde angewiesen, diese zu starten, und sie laufen nicht. Auf einem gesunden Rechner ist das eine kurze Liste - ein paar Einträge, die spät starten und wieder enden. Alles andere ist einen Blick wert.
+mismatch:running
Konfiguration und Zustand passen nicht zusammen. Meist hat jemand es deaktiviert, ohne es anzuhalten, und der nächste Neustart wird eine Überraschung.
+file:missing
Eine Deinstallation, die die Registrierung zurückgelassen hat. Harmlos, bis etwas versucht, es zu starten, und ein Hinweis darauf, was einmal auf diesem Rechner war.
+signed:no peruser:no
Für sich genommen kein Beweis für irgendetwas und der richtige Ort, mit dem Lesen zu beginnen. Der zweite Begriff lässt die Familien pro Benutzer weg, die die Liste sonst mit Beinahe-Dubletten füllen.
+privilege:SeDebugPrivilege
Ein Privileg, mit dem ein Prozess jeden anderen öffnen kann. Eine Handvoll legitimer Dienste verlangt es, und es lohnt sich zu wissen, welche es auf Ihrem Rechner sind.
+trigger:any status:stopped
Angehalten, weil noch nichts nach ihnen gefragt hat, und nicht, weil etwas nicht stimmt. Zu wissen, welche das sind, ist der Weg, auf dem die erste Liste aufhört, beunruhigend zu sein.
+Fragen Sie den Rechner selbst, als er funktionierte.
+Machen Sie einen Snapshot an dem Tag, an dem der Rechner in Betrieb geht. Dann wird aus sollte das laufen die Frage lief das, als alles funktionierte - eine Frage zu Ihrem Rechner und nicht zu einem Rechner in einem Artikel.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... eine Woche, ein Patch oder ein Vorfall später
+bws snapshot diff C:\baselines\web01.json --live
+ Die Konfiguration wird getrennt vom Laufzustand gemeldet, sodass die Antwort nicht vierzig Dienste sind, die zufällig laufen - sondern der Starttyp, den jemand geändert hat.
+ Einen Rechner auf Drift auditieren +Jedes Beenden in diesem Werkzeug zeigt zuerst seinen Plan: die Schritte, was mit ihnen heruntergeht, und eine Warnung, wenn einer davon etwas ist, ohne das der Rechner nicht funktioniert. Die Liste dieser Dienste ist eine Startliste mit sieben Einträgen - die beiden Hälften von RPC und der DCOM-Starter, der Kontenmanager, die Schlüsselisolierung, der Sitzungsmanager und Plug and Play - und Remotedesktop steht nicht darauf, lesen Sie also in einer Remotesitzung den Plan.
+ +La respuesta honesta es que nadie puede decírselo, y que toda lista que lo pretende describe un equipo que no es el suyo. Lo que sí puede responderse es más estrecho y mucho más útil: qué no cuadra en este equipo, y qué es distinto de cuando funcionaba.
+start:auto !status:running
A Windows se le dijo que iniciara estos y no se están ejecutando. En un equipo sano es una lista corta: un par de entradas que se inician tarde y vuelven a detenerse. Cualquier otra cosa merece una mirada.
+mismatch:running
Configuración y estado que no concuerdan. Normalmente alguien lo deshabilitó sin detenerlo, y el próximo reinicio será una sorpresa.
+file:missing
Una desinstalación que dejó el registro tras de sí. Inofensivo hasta que algo intenta iniciarlo, y una pista sobre lo que hubo en este equipo.
+signed:no peruser:no
No es prueba de nada por sí solo, y es el lugar adecuado para empezar a leer. El segundo término descarta las familias por usuario, que de otro modo llenan la lista de casi duplicados.
+privilege:SeDebugPrivilege
Un privilegio que permite a un proceso abrir cualquier otro. Un puñado de servicios legítimos lo piden, y conviene saber cuáles en su equipo.
+trigger:any status:stopped
Detenidos porque nada los ha solicitado todavía, y no porque algo vaya mal. Saber cuáles son es lo que hace que la primera lista deje de ser alarmante.
+Pregunte al propio equipo, cuando funcionaba.
+Tome una instantánea el día en que el equipo entra en servicio. Entonces debería estar esto en marcha se convierte en estaba esto en marcha cuando todo funcionaba: una pregunta sobre su equipo y no sobre un equipo de un artículo.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... una semana, un parche o un incidente después
+bws snapshot diff C:\baselines\web01.json --live
+ La configuración se informa aparte del estado de ejecución, de modo que la respuesta no son cuarenta servicios que casualmente están activos, sino el tipo de inicio que alguien cambió.
+ Auditar la deriva de un equipo +Cada detención en esta herramienta muestra primero su plan: los pasos, lo que cae con ellos y una advertencia cuando uno de ellos es algo sin lo cual el equipo no funciona. La lista de esos es una lista inicial de siete (las dos mitades de RPC y el iniciador de DCOM, el administrador de cuentas, el aislamiento de claves, el administrador de sesiones y Plug and Play), y el Escritorio remoto no está en ella, así que en una sesión remota, lea el plan.
+ +La réponse honnête est que personne ne peut vous le dire, et que chaque liste qui prétend le faire décrit une machine qui n'est pas la vôtre. Ce à quoi on peut répondre est plus étroit et bien plus utile : ce qui ne cadre pas sur cette machine, et ce qui est différent de l'époque où elle marchait.
+start:auto !status:running
On a dit à Windows de démarrer ceux-ci et ils ne tournent pas. Sur une machine saine, c'est une courte liste - quelques entrées qui démarrent tard et s'arrêtent de nouveau. Tout le reste mérite un coup d'œil.
+mismatch:running
La configuration et l'état ne concordent pas. Le plus souvent, quelqu'un l'a désactivé sans l'arrêter, et le prochain redémarrage sera une surprise.
+file:missing
Une désinstallation qui a laissé l'enregistrement derrière elle. Sans danger tant que rien n'essaie de le démarrer, et un indice sur ce qui se trouvait sur cette machine.
+signed:no peruser:no
Pas une preuve de quoi que ce soit en soi, et le bon endroit où commencer à lire. Le second terme écarte les familles par utilisateur, qui remplissent sinon la liste de quasi-doublons.
+privilege:SeDebugPrivilege
Un privilège qui permet à un processus d'ouvrir n'importe quel autre. Une poignée de services légitimes le demandent, et il vaut la peine de savoir lesquels sur votre machine.
+trigger:any status:stopped
Arrêtés parce que rien ne les a encore sollicités, et non parce que quelque chose ne va pas. Savoir lesquels ils sont est ce qui fait que la première liste cesse d'être alarmante.
+Demandez à la machine elle-même, quand elle fonctionnait.
+Prenez un instantané le jour où la machine entre en service. Alors est-ce que ceci devrait tourner devient est-ce que ceci tournait quand tout marchait - une question sur votre machine plutôt que sur une machine dans un article.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... une semaine, un correctif ou un incident plus tard
+bws snapshot diff C:\baselines\web01.json --live
+ La configuration est signalée à part de l'état d'exécution, de sorte que la réponse n'est pas quarante services qui se trouvent en marche - c'est le type de démarrage que quelqu'un a changé.
+ Auditer la dérive d'une machine +Chaque arrêt dans cet outil montre d'abord son plan : les étapes, ce qui tombe avec elles, et un avertissement quand l'une d'elles est quelque chose sans quoi la machine ne fonctionne pas. La liste de ces services est une liste de départ de sept - les deux moitiés de RPC et le lanceur DCOM, le gestionnaire de comptes, l'isolation des clés, le gestionnaire de session et le Plug and Play - et le Bureau à distance n'y figure pas, donc dans une session distante, lisez le plan.
+ +La risposta onesta è che nessuno può dirglielo, e che ogni elenco che pretende di farlo descrive una macchina che non è la sua. Ciò a cui si può rispondere è più stretto e molto più utile: cosa non torna su questa macchina, e cosa è diverso da quando funzionava.
+start:auto !status:running
A Windows è stato detto di avviare questi e non sono in esecuzione. Su una macchina sana è un elenco breve - un paio di voci che partono tardi e si fermano di nuovo. Qualsiasi altra cosa merita un'occhiata.
+mismatch:running
Configurazione e stato non concordano. Di solito qualcuno lo ha disabilitato senza fermarlo, e il prossimo riavvio sarà una sorpresa.
+file:missing
Una disinstallazione che ha lasciato dietro di sé la registrazione. Innocuo finché qualcosa non prova ad avviarlo, e un indizio su ciò che c'era su questa macchina.
+signed:no peruser:no
Non è prova di nulla in sé, ed è il posto giusto da cui iniziare a leggere. Il secondo termine esclude le famiglie per utente, che altrimenti riempiono l'elenco di quasi duplicati.
+privilege:SeDebugPrivilege
Un privilegio che permette a un processo di aprirne qualsiasi altro. Una manciata di servizi legittimi lo chiede, e vale la pena sapere quali sulla sua macchina.
+trigger:any status:stopped
Fermi perché nulla li ha ancora chiamati, e non perché qualcosa non va. Sapere quali sono è ciò che fa smettere di allarmare il primo elenco.
+Chieda alla macchina stessa, quando funzionava.
+Prenda uno snapshot il giorno in cui la macchina entra in servizio. Allora questo dovrebbe essere attivo diventa questo era attivo quando tutto funzionava - una domanda sulla sua macchina e non su una macchina di un articolo.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... una settimana, una patch o un incidente dopo
+bws snapshot diff C:\baselines\web01.json --live
+ La configurazione è segnalata a parte rispetto allo stato di esecuzione, così la risposta non sono quaranta servizi che capita siano attivi - è il tipo di avvio che qualcuno ha cambiato.
+ Fare l'audit della deriva di una macchina +Ogni arresto in questo strumento mostra prima il suo piano: i passaggi, ciò che cade con essi e un avviso quando uno di essi è qualcosa senza cui la macchina non funziona. L'elenco di questi è un elenco iniziale di sette - le due metà di RPC e l'avviatore DCOM, il gestore degli account, l'isolamento delle chiavi, il gestore delle sessioni e Plug and Play - e Desktop remoto non c'è, quindi in una sessione remota, legga il piano.
+ +A resposta honesta é que ninguém pode dizer, e que toda lista que afirma poder descreve uma máquina que não é a sua. O que pode ser respondido é mais estreito e muito mais útil: o que não fecha nesta máquina, e o que é diferente de quando ela funcionava.
+start:auto !status:running
O Windows foi mandado iniciar estes e eles não estão em execução. Em uma máquina saudável é uma lista curta - algumas entradas que iniciam tarde e param de novo. Qualquer outra coisa merece um olhar.
+mismatch:running
Configuração e estado discordam. Em geral alguém o desabilitou sem pará-lo, e a próxima reinicialização será uma surpresa.
+file:missing
Uma desinstalação que deixou o registro para trás. Inofensivo até algo tentar iniciá-lo, e uma pista sobre o que havia nesta máquina.
+signed:no peruser:no
Não prova nada por si só, e é o lugar certo para começar a ler. O segundo termo descarta as famílias por usuário, que de outro modo enchem a lista de quase duplicatas.
+privilege:SeDebugPrivilege
Um privilégio que permite a um processo abrir qualquer outro. Um punhado de serviços legítimos o pede, e vale saber quais na sua máquina.
+trigger:any status:stopped
Parados porque nada os chamou ainda, e não porque algo está errado. Saber quais são é o que faz a primeira lista deixar de assustar.
+Pergunte à própria máquina, de quando ela funcionava.
+Faça um instantâneo no dia em que a máquina entra em serviço. Aí isto deveria estar em execução vira isto estava em execução quando tudo funcionava - uma pergunta sobre a sua máquina e não sobre uma máquina de um artigo.
+bws snapshot create C:\baselines\web01.json --note "after the build"
+# ... uma semana, um patch ou um incidente depois
+bws snapshot diff C:\baselines\web01.json --live
+ A configuração é informada à parte do estado de execução, de modo que a resposta não são quarenta serviços que por acaso estão no ar - é o tipo de inicialização que alguém mudou.
+ Auditar a deriva de uma máquina +Toda parada nesta ferramenta mostra primeiro o seu plano: as etapas, o que cai junto com elas e um aviso quando uma delas é algo sem o qual a máquina não funciona. A lista desses é uma lista inicial de sete - as duas metades do RPC e o iniciador do DCOM, o gerenciador de contas, o isolamento de chaves, o gerenciador de sessões e o plug and play - e a Área de Trabalho Remota não está nela, então em uma sessão remota, leia o plano.
+ +