メインコンテンツまでスキップ

鍵のロールオーバーとラベル付けガイド

適用対象:
ファイル移行PowerShell によるラベル付けAIP スキャナーSharePoint

DKE ラベル付けの課題​

警告
SharePoint における自動ラベル付けは、DKE で保護されたラベルでは機能しません。

これは、Microsoft 365 がコンテンツを読み取れないようにするため、移行前にファイルを手動または代替の方法でラベル付けする必要があることを意味します。

想定される解決策​

1

手動ラベル付け

Purview Label クライアント経由

2

AIP スキャナー

オンプレミスでの自動ラベル付け

3

PowerShell

スクリプトベースのファイルラベル付け

1. 手動ラベル付け​

エクスプローラーで個々のファイルまたはフォルダーを選択し、適切なラベルを適用する方法です。

注意

欠点: エラー発生時のログが限られており、ファイルを 1 つずつ確認する必要があります。非常に時間がかかり、大規模な移行には適していません。

2. AIP スキャナー​

定義されたポリシーに基づいて、ファイル共有や SharePoint オンプレミス上のファイルに自動的にラベルを適用するために、オンプレミスにインストールするツールです。

利点

大規模な環境や、ラベル付けをオンプレミス構成に拡張する必要がある場合に最適です。

欠点

小規模なローカルドライブでは、実装のオーバーヘッドが大きすぎる場合があります。

3. PowerShell ベースのラベル付け​

上記の方法には制約があるため、PowerShell を使用してプログラム的にファイルにラベルを付けることができます。

前提条件

  • PowerShell と Purview Label クライアントがインストールされたクライアント
  • Entra ID(旧 Azure Active Directory)でのアプリ登録
注意
制約事項:
  • MSG ファイル(Outlook のメッセージ)は PowerShell 経由でラベル付けできません
  • パスワード保護された PDF や証明書で署名された PDF もラベル付けできません(ラベルシステム自体の制約)

PowerShell の課題​

Microsoft のドキュメントに従って標準の PowerShell コマンドを使用すると、PowerShell がフリーズしたり、無限に実行され続けたりすることがあります。

警告

テストの結果、上記だけでは不十分であり、リトライ機構とジョブベースの処理を用いてファイルを確実にラベル付けするには、追加の作業が必要であることが判明しています。

信頼性の高い PowerShell ラベル付けスクリプト​

次のスクリプトは、リトライロジックとジョブベースの実行を備えた堅牢な解決策を提供します。

Get-ChildItem -Path \\Finance\Projects\ -Recurse -File | ForEach-Object {
try {
$maxRetries = 3
$retryCount = 0
$setSuccess = $false

while (-not $setSuccess -and $retryCount -lt $maxRetries) {
$retryCount++

$jobsetlabel = Start-Job -ScriptBlock {
param ($fileName, $DKELabelId)
Set-FileLabel -FileName $fileName -LabelId $DKELabelId
[GC]::Collect()
[GC]::WaitForPendingFinalizers()
return $true
} -ArgumentList $_.FullName, "d9f23ae3-4321-4321-4321-f515f824c57b"

$finishedsetlabel = $jobsetlabel | Wait-Job -Timeout 10 | Receive-Job

if ($finishedsetlabel) {
$setSuccess = $true
Write-Host "Label set successfully for $($_.FullName) on attempt $retryCount." -ForegroundColor Green
}
}
}
catch {
Write-Host "Failed to set label after $maxRetries attempts for $($_.FullName)." -ForegroundColor Red
}
}

スクリプトの特徴​

機能説明
リトライ機構ファイルごとに最大 3 回まで試行します
ジョブベースの実行リソースの問題を避けるため、各ファイルを個別のジョブでラベル付けします
メモリのクリーンアップ各ジョブの後に [GC]::Collect() と WaitForPendingFinalizers() を使用します
タイムアウト制御Wait-Job -Timeout 10 を使用してハングを防ぎます
ヒント

このアプローチにより、PowerShell がフリーズしたり無限に実行され続けたりすることなく、関連するすべてのファイルに正常にラベルを付けることができます。

移行前の監査スクリプト​

移行前にすべてのファイルが正しくラベル付けされていることを確認するには、各ファイルのラベルを読み取り、その結果を CSV に記録するスクリプトを作成します。これにより、必要に応じて手動でレビューおよび調整できます。