実現したいこと
powershellでSFTP送信成功時はすり抜け、失敗時はエラーを出し、ログ上に出力したいのですが、
if ($? -ne ”true“){
としても全てすり抜けてしまいます。
送信先はlinuxです。
発生している問題・分からないこと
こちら最低限送信できなかった場合のエラーを拾う方法などはございますでしょうか?
該当のソースコード
特になし
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
$? -ne ”true“としてもすり抜けてしまう
補足
特になし
about_Automatic_Variables - $?
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-7.4#section-1
> ネイティブコマンド(実行可能ファイル)の場合、$? は $LASTEXITCODE が 0 の場合は True に設定され、$LASTEXITCODE が他の値である場合は False に設定されます。
ところで、if ($? -ne "true") の "true" は文字列なので、論理値としては True になります。"false" も同様で、空文字列("")以外は全て True になります。
PS> [bool]"true"
True
PS> [bool]"false"
True
PS> [bool]""
False
if ($? -ne "true") でも結果は同じなので問題はないのですが、if ($? -ne $true) としておく方がよいかと思います。(もしくは if ( ! $? ) )
> SFTP送信成功時はすり抜け、失敗時はエラーを出し、ログ上に出力したいのですが、... 全てすり抜けてしまいます。
となれば、SFTP送信に利用しているコマンドでは、送信が成功しても失敗しても $LASTEXITCODE が 0 になっているのではないかと思います。
sftpはどのように使っていますか?
sftp -b コマンド列を書いたファイル user@servername
ですか?