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 |