PowerShell コマンドリダイレクト用のフォルダのファイルパスに文字列と変数を結合する

Windowsサーバのコマンドの実行結果などを特定のパスにログとして出力させることがよくあると思います。

 

これまでは絶対パスで記載していたのですが、今回は変数と組み合わせてパスを書こうとしたら意外と時間がかかったので、メモです。

 

まず、変数を使う場合、連続したパスとしては扱えません。

 

例として、以下のようなパスにログを出力させる場合に、debug-logまでを変数にした場合、

 

・フォルダパス

C:\log\system1\debug-log

 

・変数

$logs = "C:\log\system1\debug-log"

 

パスはダブルコーテーションでくくります。そうしないと以下のようなエラーがでます。

 

C:\log\system1\debug-log : 用語 'C:\log\system1\debug-log' は、コマンドレット、関数、スクリプト ファイル、または操作可
能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正
しいことを確認してから、再試行してください。
発生場所 行:1 文字:9
+ $logs = C:\log\system1\debug-log
+         ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\log\system1\debug-log:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

 

 

続いて、よく使う日付をファイル名に付与したい場合は、以下の変数を使います。

 

$date = Get-Date -Format "yyyyMMdd"

 

そして、丸括弧()でくくります。

 

後、変数と文字列は「+」で結合します。その際に半角スペースが必要です。そして、文字列はダブルコーテーション""で囲みます。

 

以下は参考です。

($logs + "\コマンド実行結果_"  + $date + ".txt")

 

以下のような結果がでます。

 

($logs + "\コマンド実行結果_"  + $date + ".txt")
C:\log\system1\debug-log\コマンド実行結果_20250208.txt

 

参考までに。

 

エレコム マウス ワイヤレス Mサイズ 5ボタン(戻る・進むボタン搭載) BlueLED 握りの極み ガンメタリック M-XGM10DBBK/EC