自己解決
PowerShellの実行ファイルがあるところC:\Program Files\PowerShell\7
とかに出てました。
PowerShellを管理者権限で実行しないと書込み権限無いので出てないだけでした。
つまりは絶対パスで指定するか、スクリプトで動的指定するしかないですね。
ちょっとしたバッチをPowerShellで作りまして
ちょっとしたバッチですけど日次で動かす必要があり
なんかあった時のためにテキストログは残しておこうと、
なんなら気分でイベントログとか、障害有ったらメールで送れるように
ロガーを使おうと、
で、log4netは開発終了してしまったらしいのでNLogを選択。
こちらを
PowerShellとNLog | 84zume Works
しかしながら、configファイルを利用してバッチとログ設定を分離させようとしたところで
Targetの設定で躓く。
<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets> <target name="logfile" xsi:type="File" fileName="test.log" /> <target name="logconsole" xsi:type="Console" /> </targets> <rules> <logger name="*" minlevel="Debug" writeTo="logconsole" /> <logger name="*" minlevel="Debug" writeTo="logFile" /> </rules> </nlog>
logfileのファイル名指定のところを相対パスにすればバッチと同じとこに出てくれるだろう、と甘く見ていたが
出ない。エラーも無い。探してもどこにもtest.logが無い。
試しにfileNameを"${basedir}/test.log"にしても同様。console出力は出てくるので困る。
C#とかだと${basedir}でexeと同じ場所らしいんですけども。
なんか、ここに出てるよ、いや絶対パスじゃないと出ないよ、とか
直近で更新のあったファイルをドライブ全体洗ってくれるツールあるよ的な情報は無いものでしょうか。