Community생산성 & 협업github.com

SharkByte561/windows-troubleshoot

Windows 10/11 및 Windows Server 문제를 Microsoft의 TroubleShootingScript(TSS) 도구 세트로 진단하고 해결합니다. 증상을 올바른 TSS 시나리오와 정확한 .\TSS.ps1 명령어에 매핑하고, 로컬 머신에 대한 읽기 전용 상태 분석(이벤트 로그, 충돌, BSOD, 디스크, 서비스, 업데이트, 네트워크, 도메인)을 수행하며, 이미 수집된 TSS / MS_DATA zip 파일을 일반 영문 분석 결과로 변환합니다.

windows-troubleshoot란 무엇인가요?

이 스킬은 Microsoft 지원의 공식 PowerShell 툴킷인 TSS(TroubleShootingScript)를 최대한 활용할 수 있도록 돕습니다. TSS는 157개의 시나리오, 약 400개의 추적 구성 요소, 215개의 CollectLog 집합, 9개의 SDP 보고서, 24개의 자동 중지 트리거 및 34개의 xray 알려진 문제 검사를 포함하는 방대한 도구이지만, 수집한 데이터를 거의 설명하지 못합니다. 이 스킬은 TSS의 이러한 격차를 메워줍니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SharkByte561/windows-troubleshoot/tree/HEAD/plugins/windows-troubleshoot/skills/windows-troubleshoot

Installed? Explore more 생산성 & 협업 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

TSS를 사용한 Windows 문제 해결

TSS는 Microsoft 지원의 자체 서명된 PowerShell 툴킷입니다. 157개의 시나리오, 약 400개의 추적 구성 요소, 215개의 CollectLog 집합, 9개의 SDP 보고서, 24개의 자동 중지 트리거 및 34개의 xray 알려진 문제 검사가 있습니다. 데이터 수집은 매우 잘하지만, 수집된 데이터를 거의 설명하지 못합니다. 이 스킬은 누락된 부분을 제공합니다:

  • 수집할 항목 선택;
  • 아무것도 수집하기 전에 간단히 확인;
  • 돌아온 결과 읽기.

스킬 폴더에는 TSS의 사전 구축된 카탈로그(references/tss-index.json)가 포함되어 있으므로, TSS가 없는 머신에서도 조회가 작동합니다.

스크립트 실행: 경로는 이 스킬의 폴더를 기준으로 합니다. 모든 Windows 머신에 있는 기본 제공 Windows PowerShell 5.1을 사용합니다: powershell -NoProfile -ExecutionPolicy RemoteSigned -File <script>. pwsh 7이 설치되어 있으면 동일하게 작동합니다.

  • -ExecutionPolicy RemoteSigned는 해당 프로세스에만 적용됩니다. Windows 클라이언트가 기본적으로 Restricted로 설정되어 모든 .ps1 파일을 차단하기 때문에 필요합니다. 절대 Bypass를 사용하지 마십시오(references/safety.md 참조).
  • 스킬을 zip 파일로 다운로드하여 스크립트가 여전히 차단되는 경우("디지털 서명되지 않음"), TSS가 아닌 이 스킬 자체의 scripts\*.ps1에 대해 Unblock-File을 실행하십시오.
  • 그룹 정책이 실행 정책을 설정하는 경우, 스위치는 효과가 없습니다. 이는 관리자의 결정이므로 사용자에게 알리십시오.

TSS 위치: 스크립트는 scripts/Resolve-TssRoot.ps1로 로컬 TSS 사본을 찾습니다. 먼저 $env:TSS_ROOT를 확인한 다음, Update-Tss.ps1 또는 Resolve-TssRoot.ps1 -Save <folder>로 저장된 폴더, 그다음 C:\TSS를 확인합니다.

  • 문제 분석, 패키지 분석 및 시나리오 조회에는 로컬 사본이 필요하지 않습니다.
  • 로컬 사본을 얻으려면 scripts/Update-Tss.ps1(티어 2)을 실행하십시오. 확인된 사본을 C:\TSS(또는 -TssRoot <folder>)에 설치하고 해당 위치를 저장합니다.

워크플로

모든 요청에 모든 단계가 필요한 것은 아닙니다. zip 파일을 건네주는 사용자는 5단계로 바로 이동합니다. "X에 대한 시나리오는 무엇입니까?"라고만 묻는 사용자는 3단계만 필요합니다.

1. 증상 파악

다른 것보다 먼저 다음을 얻으십시오:

  • 무엇이 실패하고, 정확한 오류 텍스트 또는 코드
  • 언제부터, 그리고 그 무렵에 무엇이 변경되었는지(업데이트, 드라이버, 정책, 네트워크)
  • 한 명의 사용자/머신에 영향을 미치는지 아니면 다수에 영향을 미치는지
  • 요청 시 재현 가능한지 또는 간헐적으로 발생하는지
  • 클라이언트/서버 문제의 경우 어느 쪽을 봐야 하는지

추론할 수 없는 것만 물어보십시오. 이 답변이 시나리오와 실행 위치를 결정합니다.

2. 빠른 읽기 전용 문제 분석(영향을 받는 머신에서)

powershell -NoProfile -ExecutionPolicy RemoteSigned -File scripts/Invoke-QuickTriage.ps1 [-Hours 72] [-NoNetworkTests]
  • 약 20초가 소요되며 관리자가 필요하지 않습니다. triage.md 및 triage.json을 %TEMP%\win-triage\<timestamp>\에 씁니다.
  • 아무것도 변경하지 않습니다. 네트워크 테스트는 게이트웨이 핑 한 번, DNS 조회 한 번, msftconnecttest.com에 대한 HTTP GET 한 번을 보냅니다. -NoNetworkTests로 건너뛸 수 있습니다.
  • 상승된 권한으로 실행하면 보안 로그(잠금, 실패한 로그온)를 읽고 도메인 보안 채널을 테스트합니다.

-Hours를 "언제부터"에 여유를 더한 시간으로 설정하십시오. "지난주"에 시작된 문제의 경우 -Hours 240을 사용하십시오.

triage.md를 읽으십시오. Flags 테이블은 일련의 단서이며, 최종 결론이 아닙니다. 플래그를 사용자의 증상과 연결하고 나머지는 무시하십시오. 많은 문제가 여기서 끝납니다: 가득 찬 디스크, 보류 중인 재부팅, 중지된 핵심 서비스, APIPA 주소, 끊어진 보안 채널, 반복적인 버그 검사. 이러한 경우 수정 방법을 설명하고 무거운 추적을 시작하기 전에 중단하겠다고 제안하십시오.

3. TSS 시나리오 선택

powershell -NoProfile -ExecutionPolicy RemoteSigned -File scripts/Find-TssScenario.ps1 "users keep getting locked out"
powershell -NoProfile -ExecutionPolicy RemoteSigned -File scripts/Find-TssScenario.ps1 -Name ADS_AccountLockout      # 전체 항목
  • 순위가 매겨진 시나리오, CollectLogs, SDP 보고서 및 구성 요소를 반환하며, 각각 정확한 명령, "사용 시기" 줄, 추가 도구 및 부작용 문장을 포함합니다.
  • 선택 항목의 전체 설명(-Name)을 읽으십시오. 시나리오를 어디서 실행할지와 무엇을 변경하는지 알려줍니다.
  • 질문에 답할 수 있는 가장 가벼운 옵션을 선호하십시오. -CollectLog(정적 로그)가 -Scenario(라이브 추적)보다 낫고, "Ex" 변형은 네트워크 캡처와 PSR을 추가하므로 더 무겁습니다.
  • 모든 문제가 TSS 문제는 아닙니다. "일치하는 항목이 약함" 경고는 적합한 시나리오가 없음을 의미합니다.
    • 충돌 및 블루 스크린은 덤프에서 해결됩니다: 문제 분석이 나열한 미니덤프에 대해 WinDbg !analyze -v를 실행합니다.
    • 디스크 가득 참, 하드웨어(WHEA) 및 보류 중인 재부팅 문제는 문제 분석 자체에서 해결됩니다.
    • Learn 페이지의 -SDP Perf 보고서는 이 TSS 버전에서 더 이상 사용되지 않습니다.
  • 요청 시 재현할 수 없는 문제의 경우 references/waitevent-recipes.md에서 자동 중지 트리거를 추가하십시오(예: -WaitEvent Evt:4740:Security).
  • references/scenario-index.md는 영역별로 그룹화된 검색 가능한 목록입니다.

4. 수집 인계(또는 실행)

TSS 추적은 references/safety.md에서 티어 3입니다. 감사 정책, 디버그 레지스트리 키 및 캐시를 변경하고, 수 기가바이트의 민감한 데이터를 생성할 수 있습니다.

  1. 명령, 실행 위치, 부작용, 예상 크기 및 references/running-tss.md의 전제 조건(상승된 콘솔, 서명 확인, 프로세스 범위 실행 정책 및 최신 TSS(90일 후 실행 거부))을 제시하십시오.
    • Find-TssScenario.ps1은 모든 조회 시 만료 날짜를 출력합니다. 사본이 만료되었거나 만료에 가까우면 scripts/Update-Tss.ps1(티어 2)를 제공하십시오. 이 스크립트는 다운로드, 해시 및 서명 확인, 이전 사본 옆에 설치합니다. -CheckOnly는 버전만 비교합니다.
    • 지금 업데이트가 불가능한 경우(오프라인 머신 또는 이전 수집과 일치해야 하는 수집), TSS 명령에 -noExpire를 추가하는 것이 Microsoft의 기본 제공 재정의입니다. 대가를 말하십시오: 해당 빌드에서 정의가 고정되며, 지원팀에서 현재 버전으로 다시 실행을 요청할 수 있습니다.
  2. 명시적인 동의를 받은 후에만, 그리고 사용자가 관리하는 머신에서만 직접 실행하십시오.
  3. 일반적으로 사용자가 실행합니다. 재현을 위해 사용자가 머신 앞에 있어야 하기 때문입니다.

사용자가 명시적으로 요청하지 않는 한 -Crash, notmyfault 또는 머신 전체 실행 정책 변경을 절대 사용하지 마십시오.

5. 수집된 패키지 분석

powershell -NoProfile -ExecutionPolicy RemoteSigned -File scripts/Read-TssPackage.ps1 <C:\MS_DATA\TSS_...zip | folder> [-OutDir <dir>] [-ExtractDir <short dir>]

zip 파일은 -ExtractDir을 전달하지 않으면 %TEMP%\tssx\<id>에 압축이 풀립니다. 사용자가 모든 것을 하나의 케이스 폴더에 보관하려는 경우 전달하고, 해당 경로를 짧게 유지하십시오.

  • Windows PowerShell 5.1은 260자가 넘는 경로를 처리할 수 없으며, TSS 파일 이름은 깁니다. 스크립트는 80자가 넘는 -ExtractDir 또는 200자가 넘는 -OutDir을 거부합니다. C:\cases\<case>와 같은 것을 사용한 다음 필요에 따라 요약을 복사하십시오.

스크립트는 패키지를 변경하지 않고 읽습니다. 다음이 포함된 package-summary.md 및 package-summary.json을 생성합니다:

  • 메타데이터(컴퓨터, 시나리오, 시간, OS 빌드)
  • 발견된 xray 문제
  • 이벤트 로그별 주요 이벤트 및 최상위 오류
  • 텍스트 로그에서 가장 빈번한 오류 코드
  • 설정/서비스 로그의 마지막 실패 줄
  • TSS 자체 수집 경고 및 거의 비어 있는 추적 파일. 6바이트 .etl은 캡처가 실행되지 않았음을 의미하므로, 그 내용을 추론하기 전에 미리 말하십시오.
  • 인벤토리, 민감한 파일 목록 포함. 여기에는 Outlook 및 Office 이벤트에서 자주 발생하는 이메일 주소나 사용자 프로필 이름이 포함된 텍스트가 있는 이벤트 로그도 포함됩니다.

그런 다음 요약보다 더 나아가십시오:

  • 스크립트가 가리키는 특정 파일을 여십시오. references/package-anatomy.md는 각 시나리오 제품군에 대해 무엇을 먼저 읽어야 하는지와 .etl, .blg, .pml 및 .dmp를 디코딩하는 도구를 알려줍니다.
  • xray 결과 및 이벤트 패턴을 가설로 취급하고, 각각을 머신의 실제 구성과 비교하여 테스트하십시오. 영향을 받는 머신에 접근할 수 있는 경우(종종 현재 사용 중인 머신임), 설정을 읽기 전용으로 확인하십시오. 예: NRPT 규칙 충돌 → Get-DnsClientNrptPolicy 및 머신이 도메인에 가입되어 있는지 여부. Tailscale 또는 Zscaler와 같은 VPN/오버레이 클라이언트는 로컬 NRPT 규칙을 적법하게 생성하며, 머신에 맞지 않는 검사는 그렇다고 말할 가치가 있는 허위 양성입니다.
  • 문제가 재현된 시점을 묻고 해당 시간 창의 이벤트에 가중치를 부여하십시오.
  • 신호와 배경 소음을 분리하십시오. 해부학 페이지에는 일반적인 소음이 나열되어 있습니다. 그런 다음 보고서(6단계)에서 소음의 이름을 지정하여 독자가 이를 쫓지 않도록 하십시오.
  • TSS가 수집 경고를 기록한 경우 어떤 데이터가 누락되었는지 말하십시오.

6. 보고

이 형식을 사용하십시오. 증상에 맞게 짧고 구체적으로 유지하십시오:

## 진단: <한 줄>
**신뢰도:** 높음 / 중간 / 낮음 및 이유.
## 증거
- <파일 또는 확인> → <표시 내용(타임스탬프/개수/코드 포함)>
## 관련 없음(배경 소음)
- <공급자/ID 또는 코드, 개수> → <이 증상과 관련이 없는 이유(예: DCOM 10010, BitLocker 24641, Store 0x80073D02)>
## 수정
1. <단계> (safety.md에 따른 티어 1/2/3, 관리자 필요?)
## 그래도 해결되지 않는 경우
- 다음 수집: <정확한 .\TSS.ps1 명령>, <머신>에서 실행, 재현, <zip> 전송
## 데이터 공유 전
- <패키지 요약의 민감한 파일 및 삭제할 항목>

발견한 개인 데이터(이메일 주소, SID, 일련 번호, IP, 사용자 이름)를 설명하고, 개수와 어떤 파일에 있는지 제공하되, 답변에 복사하지 마십시오. 답변은 종종 깔끔하게 유지하려는 동일한 티켓에 포함됩니다.

확인하지 않은 항목이나 데이터가 표시할 수 없는 항목(예: Microsoft만 디코딩할 수 있는 구성 요소 ETL)을 명확히 말하십시오.

주의 사항

  • 한 번에 하나의 시나리오를 사용하십시오. 구성 요소와 CollectLogs는 결합할 수 있지만 시나리오는 결합할 수 없습니다.
  • 시나리오가 실행되는 위치를 확인하십시오. 잠금 및 KDC 시나리오는 도메인 컨트롤러에 속합니다. SMB, RDS 및 DNS에는 별도의 클라이언트 및 서버 시나리오가 있습니다. 잘못된 쪽에서 실행하면 깨끗한 추적과 잘못된 결론이 나옵니다.
  • xray는 대부분 라이브 머신이 필요합니다. 이 TSS 버전의 34개 검사 중 어느 것도 오프라인에서 실행되지 않으므로, 패키지에 대해 xray.ps1 -Offline을 실행하면 아무것도 찾지 못합니다. 대신 수집 중에 생성된 xray_* 파일을 읽으십시오(references/xray-checks.md에는 KB 문서와 함께 검사가 나열됨).
  • TSS가 변경되면 인덱스를 새로 고치십시오. Update-Tss.ps1이 자동으로 다시 빌드합니다. 사용자가 다른 방식으로 최신 TSS를 얻는 경우, scripts/Build-TssIndex.ps1 -TssRoot <folder>를 실행하여 이름과 옵션이 일치하도록 하십시오. 조회 시 인덱스와 디스크의 사본이 다르면 경고합니다.
  • 배경 소음은 정상입니다. 정상 Windows는 DCOM 10010/10016, Perflib, BitLocker 24641 및 Store 0x80073D02 오류를 지속적으로 기록합니다. 시간상 증상과 일치하지 않는 한 이 오류를 기반으로 진단을 구축하지 마십시오.

파일

  • scripts/Invoke-QuickTriage.ps1: 읽기 전용 라이브 상태 스냅샷.
  • scripts/Find-TssScenario.ps1: 증상 → TSS 명령; -Name은 전체 항목 제공; -AsJson은 구문 분석용.
  • scripts/Read-TssPackage.ps1: MS_DATA zip 또는 폴더의 오프라인 분석.
  • scripts/Update-Tss.ps1: -CheckOnly는 로컬 사본을 게시된 버전과 비교합니다. 이 옵션이 없으면 스크립트가 최신 TSS를 다운로드, 확인 및 TSS_<version>에 설치한 다음 인덱스를 다시 빌드합니다.
  • scripts/Resolve-TssRoot.ps1: 로컬 TSS 폴더가 있으면 출력합니다. -Save <folder>는 다른 곳에 보관된 사본을 기록합니다.
  • scripts/Build-TssIndex.ps1: TSS 폴더에서 references/ 카탈로그를 재생성합니다(JSON 및 xray 소스만 읽음).
  • references/running-tss.md: 전제 조건, 명령 패턴, 출력 레이아웃, 90일 만료.
  • references/safety.md: 티어, 하드 스톱, 알려진 부작용, 데이터 공유.
  • references/package-anatomy.md: 시나리오 제품군별 읽을 항목, 디코딩 도구, 소음, 오류 코드.
  • references/scenario-index.md, waitevent-recipes.md, xray-checks.md, tss-index.json: 생성된 카탈로그.

관련 스킬