PowerShellでOneDriveフォルダ配下のステータスを操作する

OneDriveフォルダ配下にあるファイルのステータスをいじる方法を検証してみました

OneDriveフォルダ配下の状態を取得する

今回はWindowsの標準コマンドである「attrib」を使用して対象ファイルの状態を確認します

$targetFolder = "OneDriveのフォルダパス"
# 対象フォルダ配下の全ファイルを取得
$files = Get-ChildItem -Path $targetFolder -Recurse -File
foreach($file in $files) {
    # 対象ファイルの状態をattribコマンドで取得
    attrib $file.FullName
}

上記を実行すると以下のログが書き出されます。対象ファイルのパスが長すぎたりして正常に実行できない場合は「パラメーターの書式が違います -」といったような表示なります

各ステータスについては以下のサイトが詳しく書かれています

ファイルの状態を変更する

今回はステータスに「O(オフライン専用)」、「S(システムファイル)」、「P(固定ファイル)」の属性がないものを対象に実施します。下記の画像の場合は「rirekisho_excel.xlsx」が対象となります
ちなみに「P(固定ファイル)」はみどりの塗りつぶしチェックマークの状態になります

ステータスに対して「U(固定解除属性)」を付与します

$fileInfo = attrib $file.FullName
# 必要となる文字列だけを切り出す
$subString = $fileInfo.ToString().Substring(0, 21)
# O属性は「オフライン専用」、S属性は「システムファイル」、P属性は「固定ファイル」を持たないものを対象とする
if($subString.indexOf("O") -eq -1 -and $subString.indexOf("S") -eq -1 -and $subString.indexOf("P") -eq -1) {
    attrib -P +U $filePath

    # U属性が付与できているかの確認
    $fileInfo = attrib $filePath
    if($fileInfo.ToString().Contains("U")) {
        LogWrite "INFO" "Success: $filePath"
    } else {
        LogWrite "ERROR" "Error: $filePath の処理ができませんでした"
    }
}

上記コードを実行すると画像のようにみどりチェックマークから雲マークに変わっていることが確認できます

これを実行すればバッチ等で定期的に実行すればPC上の容量を削減することができると思います

タイトルとURLをコピーしました