Add-Contentコマンドレットの-literalPathパラメータ

前回 Add-Contentコマンドレットの-Pathパラメータ を紹介しました。

今回はAdd-Contentコマンドレットの-literalPathパラメータについてまとめた(http://pswiki.hiros-dot.net/) のでご紹介します。

-literalPath <string[]>

内容を追加する先のパスを指定します。ただし-pathパラメータと異なり、ワイルドカードを指定することができません。パスにワイルドーカード文字を含めてもワイルドカードとして認識されないためエラーが発生します。パスにエスケープ文字が含まれている場合は単一引用符で囲む必要があります。(PowerShellでは`(アクサングラーブ文字)がエスケープ文字として扱われます。)

注意)ワイルドカードは指定できない

Add-Content -literalPath "Test*.txt" -Value "abc"

はエラーになります。-pathパラメータはワイルドカードを使用して複数ファイルへの書き込みが可能ですが-literalPathはできません。ただしカンマ区切りによる複数ファイルの指定は可能です。

–––––––––– -literalPathパラメータの使用例1 ––––––––––

Add-Content -literalPath "test.txt" -Value "ABC"

このコマンドを実行すると、カレントディレクトリに存在する test.txt というファイルに"ABC"という文字列を追記します。ファイルが存在しない場合は新規で作成され"ABC"という文字列を書き込みます。

–––––––––– -literalPathパラメータの使用例2 ––––––––––

Add-Content -literalPath "test1.txt","test2.txt" -Value "ABC"

このコマンドを実行すると、test1.txt と test2.txtの2つのファイルに文字列"ABC"を追記します。ファイルが存在しない場合は新規で作成され"ABC"という文字列を書き込みます。

–––––––––– -literalPathパラメータの使用例3 ––––––––––

Add-Content -literalPath 'tes`t.txt' -Value "ABC"

このコマンドを実行すると、カレントディレクトリに存在する tes`t.txt というファイルに"ABC"という文字列を追記します。ファイルが存在しない場合には新規で作成されます。
この例のように、パスにエスケープ文字が含まれている場合は単一引用符(')で括って指定します。

–––––––––– -literalPathパラメータの使用例4 ––––––––––

Add-Content -literalPath "tes[]t.txt" -Value "ABC"

このコマンドを実行すると、カレントディレクトリに存在する tes[]t.txt というファイルに"ABC"という文字列を追記します。ファイルが存在しない場合には新規で作成されます。
この例のようにパスにワイルドカードパターンが含まれていても文字として取り扱います。

–––––––––– -literalPathパラメータのNG例1 ––––––––––

Add-Content -literalPath "Test*.txt" -Value "abc"

このコマンドレットは、パスにワイルドカード(*)が含まれているためにエラーとなります。これは*をワイルドカードではなく文字として認識し、ファイル名として取り扱おうとしたことが原因となります。


まとめ

-literalPathパラメータの特徴は、なんといってもワイルドカード文字をワイルドカードとしてではなく文字として取り扱うことでしょう。

パスにワイルドカードが含まれている場合には-literalPathパラメータを使用するということを是非覚えておいてください。

コメント

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