同一セッションで実行されたコマンド履歴を抽出するというのは中々難しそうですので、やはりグローバル変数に実行履歴を保持しておくのが良いのではないでしょうか?
$global:val = "値" のように代入するのではなく、
Set-Variable -Scope global -Option ReadOnly -Name val -Value "値" -Force
のように、読み取り専用の変数としてやれば、うっかり書き換えられるということはなくなるかと思います。
(ちなみに-Visibility Private と指定することで、コンソールからは値の参照も不可にすることもできます)
もっともコンソールでSet-Variable -Forceを実行してしまえば上書きは可能ですが、「うっかり」ではそこまでしないでしょうし、現実的な落としどころになるかと思います。
なお、スクリプトやコマンドを実行する順序や回数が決まっているのなら、ユーザーに手動で実行させず、コマンド、スクリプト実行を含む全体の処理を、そのままスクリプトにしてしまうのが一番安全かつ合理的であるとも思いました。