2020-04-24
4月 24, 2020
凍死家さん
IT, Powershell, 詐欺
No comments
テレビでも良く宣伝をしている某社が納品したPowerShellスクリプトで凄いbugを発見。
どうも作成者はWindows外部コマンドとPowerShell cmdletとを等価に扱っている様で、cmdletのファイル削除エラーを$LASTEXITCODEで拾えると思ったらしい。他の個所のWindows外部コマンド.exe起動後エラー判定も、同一処理としている。
ErrorActionPreferenceは設定されていないので、この処理でエラーが発生すると一般的にはContinueされて#エラー判定 以降に進むのだがエラーがキャッチされる事は無い。
PowerShellではエラーをtry{} catch[exception]{}で判定する必要があるのだが、他のスクリプトにも一切出現していない事から見て、根本的な理解誤りの様だ。
cmdletで実際にエラーを起こすのは難しい場面もあるが、テストを良く通過したなと思った。
この会社の「お任せあれ」は怪しいな。
なお、筆者ならファイルの属性変更して削除できなくしてわざとエラーを起こす等でテストします。
Get-ChildItem $Logs -Recurse -include *.log | Where-object{((Get-Date) – $_.LastWriteTime).Days(後略)
#エラー判定
if($LASTEXITCODE -ne 0)
{
"正常に終了しました。"
登録:
コメントの投稿 (Atom)
0 コメント:
コメントを投稿