이 방법을 사용하면 Teams에서 이루어진 사용자별 파일 관련 활동만을 확인할 수 있습니다.
Purview 포털 감사로그에서 시도한 방법들
Purview 포털에서 Teams 내 사용자의 파일 활동만을 검색할 수 있는지 확인하기 위해 시도한 방법은 다음과 같습니다.
시도한 방법 1) Activities - friendly names: Accessd file, Downloaded file, Uploaded file / Workloads: MicrosoftTeams

처음에는 Teams에서 발생한 파일 활동이므로 Workload가 MicrosoftTeams일 것이라고 생각하고, 파일 관련 활동을 선택했습니다.
결과: Total results = 0

이후 시도한 방법부터는 우선 Teams 내 파일 활동의 속성 값이 어떤 값을 가지는지 확인하기 위한 검색을 시도했습니다.

시도한 방법2) Activites - friendly names: Accessed file / Workloads: SharePoint, OneDrive

Workload가 MicrosoftTeams가 아니라면 SharePoint나 OneDrive일 것으로 판단하고, 결과 수를 줄이기 위해 Accessed file만 선택했습니다.
결과: Total results = 45

결과 리스트에서 RecordType 값이 SharePointFileOperation임을 확인했습니다.

시도한 방법3) Record Types: SharePointFileOpeartion

방법 2에서 확인한 RecordType을 기준으로 다시 검색했습니다.
로그 결과를 Export한 파일을 Excel에서 확인해 보니 FileAccessed를 포함한 다양한 활동이 있었지만, 다음과 같은 활동은 제외할 필요가 있었습니다.
- Teams 외부 활동(FileModified 등)
- 시스템 활동(FileSensitivityLabelApplied 등)
- 파일과 무관한 활동(FolderCreated)


Teams 내 파일 활동만 보려면 AuditData 객체의 ApplicationDisplayName을 활용해야 될 것으로 보였습니다.
(CLient App


시도한 방법4) Activites - operation names: FileDownloaded,FileAccessed,FileUploaded,FilePreviewed / Record Types: SharePointFileOpeartion / Keyword Search: Microsoft Teams

방법 3에서 확인한 SharePointFileOperation 중 Teams에서 발생 가능한 파일 활동을 지정하고, Keyword Search에는 Microsoft Teams를 입력했습니다. Keyword를 지정한 이유는 ApplicationDisplayName 값이 Microsoft Teams 또는 Microsoft Teams Web Client인 항목을 찾기 위해서 입니다.
결과적으로, 목표했던 Microsoft Teams 또는 Microsoft Teams Web Client에서 발생한 사용자별 파일 활동을 성공적으로 검색할 수 있었습니다.


다만, Microsoft Teams를 키워드로 사용했기 때문에, 파일 이름 등에 해당 키워드가 포함되어 있으면 실제 Teams 내 파일 활동이 아니더라도 검색 결과에 포함될 가능성이 있었습니다.
PowerShell에서 Teams 내 파일 활동 로그 검색
Purview 포털에서는 Microsoft Teams 앱에서 발생한 파일 활동만을 검색하기에는 어려워 보였습니다. 그래서 PowerShell을 사용해 Exchange Online의 감사 로그를 조회하고, Teams 관련 이벤트만 추출한 뒤 CSV로 저장하는 방식을 구현했습니다.
Connect-ExchangeOnline
# Base path 설정
$basePath = "/Users/"
$outputFile = "$basePath\AuditLogRecords.csv"
# 검색 기간
$start = "10/14/2025"
$end = "10/15/2025"
# RecordType 및 Operations
$record = "SharePointFileOperation"
$ops = @("FileDownloaded","FileUploaded","FileAccessed","FilePreviewed")
# 페이지 크기
$resultSize = 5000
# 감사 로그 추출 및 CSV로 저장
Search-UnifiedAuditLog -StartDate $start -EndDate $end -RecordType $record -Operations $ops -ResultSize $resultSize |
Where-Object { $_.AuditData -like '*"ApplicationDisplayName":"Microsoft Teams*' } |
Export-Csv -Path $outputFile
Exchange Online 모듈의 Search-UnifiedAuditLog cmdlet을 사용하여 감사 로그를 조회한 뒤, Where-Object를 통해 AuditData 속성에서 ApplicationDisplayName 값이 Microsoft Teams로 시작하는 레코드만 필터링했습니다. 마지막으로, 필터링된 결과를 CSV 형식으로 내보냈습니다.
하지만 결과 파일을 확인해 보니, Identity 값이 중복된 레코드가 전체의 절반가량을 차지했습니다.

PowerShell에서 Teams 내 파일 활동 로그 검색 - 레코드 중복 제거
Search-UnifiedAuditLog cmdlet 실행 시 중복이 발생하는 원인은 확인하지 못했습니다. 그래서 결과에서 중복된 Identity 값을 제거하는 방식으로 처리했습니다.
Connect-ExchangeOnline
# Base path 설정
$basePath = "/Users/"
$outputFile = "$basePath\AuditLogRecords.csv"
# 검색 기간
$start = "10/14/2025"
$end = "10/15/2025"
# RecordType 및 Operations
$record = "SharePointFileOperation"
$ops = @("FileDownloaded","FileUploaded","FileAccessed","FilePreviewed")
# 페이지 크기
$resultSize = 5000
# 감사 로그 추출 및 CSV로 저장
Search-UnifiedAuditLog -StartDate $start -EndDate $end -RecordType $record -Operations $ops -ResultSize $resultSize |
Where-Object { $_.AuditData -like '*"ApplicationDisplayName":"Microsoft Teams*' } |
Export-Csv -Path $outputFile
# CSV 로드 → Identity 기준 중복 제거 → 동일 파일로 덮어쓰기
$rows = Import-Csv -Path $outputFile
$seen = @{}
$deduped = foreach ($row in $rows) {
$keyRaw = $row.Identity
if ($null -eq $keyRaw -or ($keyRaw -is [string] -and $keyRaw.Trim() -eq '')) {
$row
continue
}
$key = ($keyRaw -as [string]).Trim().ToLower()
if (-not $seen.ContainsKey($key)) {
$seen[$key] = $true
$row
}
}
$deduped | Export-Csv -Path $outputFile
$rows 변수에는 $outputFile 경로의 CSV 파일을 읽어 각 행을 PowerShell 객체 배열로 저장했습니다.
$rows = Import-Csv -Path $outputFile
$seen 변수는 중복 여부를 확인하기 위해, 순회 중 발견한 Identity 값을 기록하는 해시테이블로 초기화했습니다.
$seen = @{}
$deduped 변수에는 동일한 Identity 값을 가진 레코드 중 첫 번째 항목만 남겨 중복을 제거한 결과를 담았습니다.
$deduped = foreach ($row in $rows) {
$keyRaw = $row.Identity
if ($null -eq $keyRaw -or ($keyRaw -is [string] -and $keyRaw.Trim() -eq '')) {
$row
continue
}
$key = ($keyRaw -as [string]).Trim().ToLower()
if (-not $seen.ContainsKey($key)) {
$seen[$key] = $true
$row
}
}
마지막으로, 중복 제거된 결과를 기존 CSV 파일에 덮어썼습니다.
$deduped | Export-Csv -Path $outputFile
최종적으로, 목표했던 Teams 내 사용자별 파일 활동 로그를 중복 없이 얻을 수 있었습니다.

참고문서
Office 365 Management Activity API schema
The Office 365 Management Activity API schema is provided as a data service in two layers - Common schema and service-specific schema.
learn.microsoft.com
Use a PowerShell script to search the audit log
Use a PowerShell script that runs the Search-UnifiedAuditLog cmdlet in Exchange Online to search the audit log. This script is optimized to return a large set of audit records each time you run it. The script exports these records to a CSV file that you ca
learn.microsoft.com
본 글의 내용은 공식 문서, 실제 테스트 경험, 그리고 작성자의 개인적인 해석을 바탕으로 작성되었습니다.
환경이나 정책 그리고 시점에 따라 다르게 적용될 수 있으므로 참고용으로 활용해 주세요.
'Microsoft 365 > Purview' 카테고리의 다른 글
| 나만 열람 가능한 민감도 레이블 암호화 구성 (IPC_USER_ID_OWNER) (0) | 2025.11.13 |
|---|






