M365関連 プログラム 技術

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

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

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

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

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

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

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

参考サイト
コマンドプロンプト | ファイル属性の表示と設定(ATTRIB)
コマンドプロンプト | ファイル属性の表示と設定(ATTRIB)

ATTRIB コマンドを使用するとファイル属性の表示と変更を行うことができます。ここではコマンドプロンプトにおける AT ...

続きを読む

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

今回はステータスに「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上の容量を削減することができると思います

会社紹介

私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています

会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造

この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています

ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します

ホームページ
アドバンスド・ソリューション株式会社
アドバンスド・ソリューション株式会社

アドバンスド・ソリューションは主にMicrosoft製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...

サイトへ移動

お問い合わせ
お問い合わせ  | アドバンスド・ソリューション株式会社
お問い合わせ | アドバンスド・ソリューション株式会社

お問い合わせはこちら

-M365関連, プログラム, 技術
-, ,