none
PowershellのGet-ACLコマンドについて RRS feed

  • 質問

  • Get-Aclコマンド(Powershell)で「【】[].txt」と言うファイルを
    指定すると「指定されたワイルドカード パターンは無効です」と表示
    されアクセス権を確認できない。
    解決方法をご存知のかたいましたらご教授のほどよろしくお願いします。
    PS C:\Documents and Settings\Administrator>
    PS C:\Documents and Settings\Administrator> Get-Acl C:\temp\【】[].txt
    Get-Acl : 指定されたワイルドカード パターンは無効です: 【】[].txt
    発生場所 行:1 文字:8
    + Get-Acl <<<< C:\temp\【】[].txt
    PS C:\Documents and Settings\Administrator>
    PS C:\Documents and Settings\Administrator> Get-Acl "C:\temp\【】[].txt"
    Get-Acl : 指定されたワイルドカード パターンは無効です: 【】[].txt
    発生場所 行:1 文字:8
    + Get-Acl <<<< "C:\temp\【】[].txt"
    PS C:\Documents and Settings\Administrator>
    以上、よろしくお願い致します。
    • 移動 Robin_Ren 2012年10月2日 21:28 merge forum (移動元:Windows Server 2008 R2 全般)
    2010年5月24日 8:27

回答

  • チャブーンです。

    PowerShell のエスケープ文字ですが、バッククォータ(`)を使ってみたら、どうなりますか?たとえばこんな風に。

    Get-ACL "C:\Temp\【】`[`].txt"

    Windows Server 2008 R2 で確認したのですが、私の環境では最初の状態で「指定されたワイルドカード パターンは無効です」エラーは表示されず、その代わりアクセス許可の設定も表示されない(ナニもなかったかのように扱われる)、という状況です。

    なので、エスケープ文字をいれても、最終的にお望みの設定になるかどうかはわかりません。

    所有権の一括変更、ということであれば takeown.exe コマンドが一応使えます。こちらは正規表現による制限は特にないので、使いやすいコマンドだとは思います。

    • 回答としてマーク take1655 2010年5月27日 15:31
    2010年5月26日 15:24
    モデレータ

すべての返信

  • チャブーンです。

    まずはファーストインプレッションで。

    「[ ]」の文字列が正規表現のメタ文字として認識されているのではないでしょうか?左にエスケープ文字(バックスラッシュか円マーク)をいれてリテラル文字として認識させたらどうでしょう?

    2010年5月24日 10:55
    モデレータ
  • チャブーン様

    返信ありがとうございます。「\」を入れて再度実施してみましたが同じでした。

    PS C:\Documents and Settings\Administrator> Get-Acl C:\temp\【】\[].txt
    Get-Acl : パス 'C:\temp\【】\[].txt' が存在しないため検出できません。
    発生場所 行:1 文字:8
    + Get-Acl  <<<< C:\temp\【】\[].txt
    PS C:\Documents and Settings\Administrator>

    色々なパターンで試していたところ「[」が含まれるとエラーとなるようです。「[」を””で
    囲ったりしましたがダメでした。最終的には、既存ファイルのリストを取り出して所有権
    の一括変更および一括確認をしようと考えています。

    2010年5月25日 6:15
  • チャブーンです。

    PowerShell のエスケープ文字ですが、バッククォータ(`)を使ってみたら、どうなりますか?たとえばこんな風に。

    Get-ACL "C:\Temp\【】`[`].txt"

    Windows Server 2008 R2 で確認したのですが、私の環境では最初の状態で「指定されたワイルドカード パターンは無効です」エラーは表示されず、その代わりアクセス許可の設定も表示されない(ナニもなかったかのように扱われる)、という状況です。

    なので、エスケープ文字をいれても、最終的にお望みの設定になるかどうかはわかりません。

    所有権の一括変更、ということであれば takeown.exe コマンドが一応使えます。こちらは正規表現による制限は特にないので、使いやすいコマンドだとは思います。

    • 回答としてマーク take1655 2010年5月27日 15:31
    2010年5月26日 15:24
    モデレータ
  • チャブーン様

    度々ありがとうございます。

    バッククォータを入れると何もおこらなくなりました。
    最終的にはPowerShellでファイルとフォルダの所有権とアクセス権を変更し
    それが正常に変更されかチェックするスクリプトをPowerShellで書こうと思
    ったのですが・・・。
    PowerShellでは、正規表現問題がありそうなのであきらめることにします。

    takeown.exe コマンドですとその各ユーザーにならないと実行できないので
    今回は、icacls.exeを使うことにしました。

    以上、度々ご回答いただきありがとうごいました。

    2010年5月27日 15:30