none
Protect-RMSFile で更新日時を変更したくない

    質問

  • Protect-RMSFile にてファイル保護を実施しようと思うのですが、更新日時が上書きされてしまいます。

    可能であれば、更新日時は元ファイルのままでファイル保護を実施したいのですが、そのような引数は準備されているのでしょうか?

    下記マイクロソフトのサイトを確認してもそのような引数は見当たらないのですが、

    https://docs.microsoft.com/en-us/powershell/rmsprotection/vlatest/protect-rmsfile

    -InPlace のような、構文には記載がないけれど、例)で使われるような、実は存在する引数があったりしないかと思い、質問させていただきました。

    ご存知の方がいらっしゃいましたら、ご教授の程、よろしくお願いいたします。

    2017年2月9日 9:25

回答

  • ヘルプに記載はないが実在するパラメータを探すには、以下のように、コマンドの構文を示すオブジェクトを参照することで可能です。

    (Get-Command Protect-RMSFile).Parameters

    もしProtect-RMSFileコマンドにそのようなパラメータがないのならば、コマンド実行前に更新日時を記録しておいて、後で戻すという方法を取ってみてはいかがでしょうか。

    $file = "C:\Test.docx"
    $dateTime = Get-ItemPropertyValue -LiteralPath $file -Name LastWriteTime
    # v4以下の場合は、次のようにする
    # $dateTime = (Get-ItemProperty -LiteralPath $file -Name LastWriteTime).LastWriteTime
    Protect-RMSFile -File "C:\Test.docx" -InPlace -TemplateID 82bf3474-6efe-4fa1-8827-d1bd93339119 -OwnerEmail "IT@Contoso.com"
    Set-ItemProperty -LiteralPath $file -Name LastWriteTime -Value $dateTime
    2017年2月9日 10:00
    モデレータ

すべての返信

  • ヘルプに記載はないが実在するパラメータを探すには、以下のように、コマンドの構文を示すオブジェクトを参照することで可能です。

    (Get-Command Protect-RMSFile).Parameters

    もしProtect-RMSFileコマンドにそのようなパラメータがないのならば、コマンド実行前に更新日時を記録しておいて、後で戻すという方法を取ってみてはいかがでしょうか。

    $file = "C:\Test.docx"
    $dateTime = Get-ItemPropertyValue -LiteralPath $file -Name LastWriteTime
    # v4以下の場合は、次のようにする
    # $dateTime = (Get-ItemProperty -LiteralPath $file -Name LastWriteTime).LastWriteTime
    Protect-RMSFile -File "C:\Test.docx" -InPlace -TemplateID 82bf3474-6efe-4fa1-8827-d1bd93339119 -OwnerEmail "IT@Contoso.com"
    Set-ItemProperty -LiteralPath $file -Name LastWriteTime -Value $dateTime
    2017年2月9日 10:00
    モデレータ
  • 牟田口さま

    回答ありがとうございます。

    PowerShellは初心者のため、何ができるかあまり知らなかったのですが、確かにおっしゃる通りですね。

    v4以下とv5でプロパティ取得コマンドが違うという点も勉強になります。

    ありがとうございました。

    2017年2月14日 10:19