Solução de problemas do Windows com TSS
O TSS é o kit de ferramentas PowerShell assinado pela própria Microsoft Support. Ele possui 157 cenários, cerca de 400 componentes de rastreamento, 215 conjuntos de CollectLog, 9 relatórios SDP, 24 acionadores de parada automática e 34 verificações de problemas conhecidos do Xray. Ele coleta dados muito bem, mas não explica quase nada disto. Este skill fornece as peças que faltam:
- escolher o que coletar;
- verificar de forma leve antes de coletar qualquer coisa;
- interpretar o que foi retornado.
A pasta do skill contém um catálogo pré-construído do TSS (references/tss-index.json), portanto as consultas funcionam mesmo em máquinas sem TSS.
Executando os scripts: os caminhos são relativos à pasta deste skill. Use o Windows PowerShell 5.1 embutido, que toda máquina Windows possui: powershell -NoProfile -ExecutionPolicy RemoteSigned -File <script>. O pwsh 7 funciona da mesma forma se estiver instalado.
-ExecutionPolicy RemoteSignedse aplica apenas a esse processo. É necessário porque os clientes Windows usamRestrictedcomo padrão, o que bloqueia todo arquivo.ps1. Nunca useBypass(consultereferences/safety.md).- Se um script ainda estiver bloqueado porque o skill foi baixado como um zip ("não assinado digitalmente"), execute
Unblock-Filenosscripts\*.ps1deste skill, nunca no TSS. - Se a Política de Grupo definir a política de execução, a chave não terá efeito. Essa é uma decisão dos administradores, portanto informe o usuário.
Onde o TSS reside: os scripts encontram uma cópia local do TSS com scripts/Resolve-TssRoot.ps1. Ele verifica $env:TSS_ROOT primeiro, depois a pasta salva por Update-Tss.ps1 ou Resolve-TssRoot.ps1 -Save <folder>, e depois C:\TSS.
- A triagem, a análise de pacotes e a consulta de cenários não precisam de uma cópia local.
- Para obtê-la, execute
scripts/Update-Tss.ps1(nível 2). Ele instala uma cópia verificada emC:\TSS(ou-TssRoot <folder>) e salva sua localização.
Fluxo de trabalho
Nem toda solicitação precisa de todas as etapas. Um usuário que entrega um zip vai direto para a etapa 5. Um usuário que apenas pergunta "qual cenário para X" precisa apenas da etapa 3.
1. Identificar o sintoma
Obtenha estas informações antes de qualquer outra coisa:
- o que falha e o texto ou código de erro exato
- desde quando e o que mudou por volta dessa época (atualização, driver, política, rede)
- se afeta um usuário/máquina ou muitos
- se pode ser reproduzido sob demanda ou ocorre de forma intermitente
- de que lado olhar para problemas de cliente/servidor
Pergunte apenas o que você não pode inferir. Essas respostas decidem o cenário e onde ele é executado.
2. Triagem rápida somente leitura (na máquina afetada)
powershell -NoProfile -ExecutionPolicy RemoteSigned -File scripts/Invoke-QuickTriage.ps1 [-Hours 72] [-NoNetworkTests]
- Leva cerca de 20 segundos e não precisa de administrador. Ele escreve
triage.mdetriage.jsonem%TEMP%\win-triage\<timestamp>\. - Ele não altera nada. Os testes de rede enviam um ping para o gateway, uma consulta DNS e um HTTP GET para msftconnecttest.com; pule-os com
-NoNetworkTests. - Com privilégios elevados, ele também lê o log de Segurança (bloqueios, falhas de logon) e testa o canal seguro do domínio.
Defina -Hours para cobrir "desde quando" mais uma margem. Para algo que começou "na semana passada", use -Hours 240.
Leia o triage.md. A tabela de Sinalizadores é um conjunto de pistas, não um veredito. Relacione os sinalizadores ao sintoma do usuário e ignore o resto. Muitos problemas terminam aqui: um disco cheio, uma reinicialização pendente, um serviço principal parado, um endereço APIPA, um canal seguro quebrado, falhas de verificação de bugs repetidas. Nesses casos, explique a correção e ofereça-se para parar antes de qualquer rastreamento pesado.
3. Escolher o cenário TSS
powershell -NoProfile -ExecutionPolicy RemoteSigned -File scripts/Find-TssScenario.ps1 "usuários estão sendo bloqueados constantemente"
powershell -NoProfile -ExecutionPolicy RemoteSigned -File scripts/Find-TssScenario.ps1 -Name ADS_AccountLockout # entrada completa
- Retorna cenários classificados, CollectLogs, relatórios SDP e componentes, cada um com o comando exato, uma linha "usar quando", as ferramentas complementares e as frases de efeitos colaterais.
- Leia a descrição completa da sua escolha (
-Name). Ela diz onde executar o cenário e o que ele altera. - Prefira a opção mais leve que responda à pergunta:
-CollectLog(logs estáticos) é melhor que-Scenario(rastreamento ao vivo), e as variantes "Ex" adicionam uma captura de rede e PSR, o que as torna mais pesadas. - Nem todo problema é um problema do TSS. Um aviso de "apenas correspondências fracas" significa que nenhum cenário se encaixa.
- Travamentos e telas azuis são resolvidos a partir do dump: WinDbg
!analyze -vno minidump que a triagem lista. - Problemas de disco cheio, hardware (WHEA) e reinicialização pendente são resolvidos a partir da própria triagem.
- O relatório
-SDP Perfdas páginas Learn está obsoleto nesta versão do TSS.
- Travamentos e telas azuis são resolvidos a partir do dump: WinDbg
- Para problemas que não podem ser reproduzidos sob demanda, adicione um acionador de parada automática de
references/waitevent-recipes.md, por exemplo-WaitEvent Evt:4740:Security. references/scenario-index.mdé a lista navegável, agrupada por área.
4. Entregar (ou executar) a coleta
Os rastreamentos do TSS são nível 3 em references/safety.md: eles alteram a política de auditoria, chaves de registro de depuração e caches, e podem produzir gigabytes de dados confidenciais.
- Apresente o comando, onde executá-lo, os efeitos colaterais, o tamanho esperado e os pré-requisitos de
references/running-tss.md: console elevado, verificação de assinatura, política de execução no escopo do processo e um TSS atualizado (ele se recusa a ser executado após 90 dias).Find-TssScenario.ps1imprime a expiração em cada consulta. Se a cópia estiver expirada ou próxima disso, ofereçascripts/Update-Tss.ps1, que é nível 2: ele baixa, verifica o hash e as assinaturas e instala ao lado da cópia antiga.-CheckOnlyapenas compara versões.- Se a atualização não for possível agora (máquina offline ou uma coleta que deve corresponder a uma anterior), adicionar
-noExpireao comando TSS é a substituição interna da Microsoft. Diga o que isso custa: definições congeladas naquela compilação, e o suporte pode solicitar uma nova execução na versão atual.
- Execute-o você mesmo apenas após um sim explícito e somente em uma máquina que o usuário administre.
- Normalmente, o usuário o executa, porque uma reprodução exige que ele esteja na frente da máquina de qualquer forma.
Nunca use -Crash, notmyfault ou alterações na política de execução de toda a máquina, a menos que o usuário solicite explicitamente.
5. Analisar o pacote coletado
powershell -NoProfile -ExecutionPolicy RemoteSigned -File scripts/Read-TssPackage.ps1 <C:\MS_DATA\TSS_...zip | pasta> [-OutDir <dir>] [-ExtractDir <short dir>]
Um zip é descompactado em %TEMP%\tssx\<id> a menos que você passe -ExtractDir. Passe-o quando o usuário quiser manter tudo em uma única pasta de caso e mantenha esse caminho curto.
- O Windows PowerShell 5.1 não pode lidar com caminhos com mais de 260 caracteres, e os nomes de arquivo do TSS são longos. O script recusa um
-ExtractDircom mais de 80 caracteres ou um-OutDircom mais de 200. Use algo comoC:\cases\<case>e copie os resumos para onde eles precisam ir.
O script lê o pacote sem alterá-lo. Ele produz package-summary.md e package-summary.json com:
- metadados (computador, cenário, hora, compilação do SO)
- problemas do xray encontrados
- eventos principais e principais erros por log de eventos
- os códigos de erro mais frequentes nos logs de texto
- as últimas linhas de falha nos logs de configuração/servicing
- avisos de coleta do próprio TSS e arquivos de rastreamento quase vazios. Um
.etlde 6 bytes significa que a captura nunca foi executada, portanto, diga isso antes de raciocinar a partir dele. - um inventário, incluindo a lista de arquivos confidenciais. Isso também cobre logs de eventos cujo texto contém endereços de e-mail ou nomes de perfil de usuário, o que os eventos do Outlook e do Office geralmente fazem.
Em seguida, vá além do resumo:
- Abra os arquivos específicos para os quais ele aponta.
references/package-anatomy.mddiz o que ler primeiro para cada família de cenários e qual ferramenta decodifica.etl,.blg,.pmle.dmp. - Trate as descobertas do xray e os padrões de eventos como hipóteses e teste cada um contra a configuração real da máquina. Se a máquina afetada estiver acessível (geralmente é aquela em que você está), verifique a configuração somente leitura. Por exemplo: conflito de regra NRPT →
Get-DnsClientNrptPolicye se a máquina está ingressada no domínio. Clientes VPN/overlay como Tailscale ou Zscaler criam regras NRPT locais legitimamente, e uma verificação que não se encaixa na máquina é um falso positivo que vale a pena mencionar. - Pergunte quando o problema foi reproduzido e pondere os eventos nessa janela de tempo.
- Separe o sinal do ruído de fundo; a página de anatomia lista o ruído usual. Em seguida, nomeie o ruído no relatório (etapa 6), para que o leitor não o persiga.
- Se o TSS registrou avisos de coleta, diga quais dados estão faltando.
6. Relatar
Use este formato. Mantenha-o curto e específico para o sintoma:
## Diagnóstico: <uma linha>
**Confiança:** alta / média / baixa, e por quê.
## Evidências
- <arquivo ou verificação> → <o que mostra, com carimbo de data/hora/contagem/código>
## Não relacionado (ruído de fundo)
- <provedor/ID ou código, contagem> → <por que não está relacionado a este sintoma, ex. DCOM 10010, BitLocker 24641, Store 0x80073D02>
## Correção
1. <passo> (nível 1/2/3 conforme safety.md, precisa de admin?)
## Se isso não resolver
- próxima coleta: <comando .\TSS.ps1 exato>, executar em <máquina>, reproduzir, enviar <zip>
## Antes de compartilhar os dados
- <arquivos confidenciais do resumo do pacote e o que descartar>
Descreva os dados pessoais que você encontrar (endereços de e-mail, SIDs, números de série, IPs, nomes de usuário), fornecendo contagens e em qual arquivo estão, mas não os copie para sua resposta. A resposta geralmente acaba no mesmo ticket que você está tentando manter limpo.
Diga claramente o que você não verificou ou o que os dados não podem mostrar (por exemplo, um ETL de componente que apenas a Microsoft pode decodificar).
Armadilhas
- Use um cenário por vez. Componentes e CollectLogs podem ser combinados, mas cenários não.
- Verifique onde o cenário é executado. Cenários de bloqueio e KDC pertencem ao controlador de domínio. SMB, RDS e DNS têm cenários separados para cliente e servidor. Executar no lado errado resulta em um rastreamento limpo e uma conclusão errada.
- O xray precisa principalmente da máquina ativa. Nenhuma das 34 verificações nesta versão do TSS é executada offline, portanto
xray.ps1 -Offlineem um pacote não encontra nada. Leia os arquivosxray_*que foram produzidos durante a coleta (references/xray-checks.mdlista as verificações com seus artigos da KB). - Atualize o índice quando o TSS mudar.
Update-Tss.ps1o reconstrói para você. Se o usuário obtiver um TSS mais recente de outra forma, executescripts/Build-TssIndex.ps1 -TssRoot <folder>para que nomes e opções correspondam. A consulta avisa quando o índice e a cópia no disco divergem. - Ruído de fundo é normal. Logs saudáveis do Windows registram constantemente erros DCOM 10010/10016, Perflib, BitLocker 24641 e Store 0x80073D02. Não construa um diagnóstico neles a menos que estejam alinhados com o sintoma no tempo.
Arquivos
scripts/Invoke-QuickTriage.ps1: instantâneo de saúde ao vivo somente leitura.scripts/Find-TssScenario.ps1: sintoma → comando TSS;-Namefornece a entrada completa;-AsJsonpara análise.scripts/Read-TssPackage.ps1: análise offline de um zip ou pasta MS_DATA.scripts/Update-Tss.ps1:-CheckOnlycompara a cópia local com a versão publicada. Sem ele, o script baixa, verifica e instala um TSS mais recente paraTSS_<version>, em seguida, reconstrói o índice.scripts/Resolve-TssRoot.ps1: imprime a pasta local do TSS, se houver;-Save <folder>registra uma cópia mantida em outro lugar.scripts/Build-TssIndex.ps1: regenera o catálogo dereferences/de uma pasta TSS (lê apenas seu JSON e fonte xray).references/running-tss.md: pré-requisitos, padrões de comando, layout de saída, expiração de 90 dias.references/safety.md: níveis, paradas forçadas, efeitos colaterais conhecidos, compartilhamento de dados.references/package-anatomy.md: o que ler por família de cenários, ferramentas de decodificação, ruído, códigos de erro.references/scenario-index.md,waitevent-recipes.md,xray-checks.md,tss-index.json: catálogo gerado.