私は、私が書いたすべてのpowershellファイルにドット・ソースするユーティリティ関数と他のコードのコレクションを持っています。それに影響を与える呼び出し元のスコープ変数でビットを取得したので、私はそれをpowershellモジュールに変更する方法を検討し始めました。PowerShellモジュールが呼び出し元のスコープで取得する方法はありますか?
私は実際にスコープ間のやりとりをしたいときに私が行う特別なことのいくつかの問題に遭遇しました。私はpowershellモジュールに移動している間、この機能を維持するためにモジュールの呼び出し側のスコープを「取得」する必要があるのかどうか疑問に思っています。
もしそうでなければ、これらのより特殊化されたものをドットソースファイルに保存してより伝統的なユーティリティー機能をモジュールに移行するのが最善の道ですか?ここでは簡単にモジュールに移動しないものです:維持する
strictモードとエラー・アクションのプリファレンスを設定するには、SANE、例えば:これは(予想通り)には影響を与えません
コードが.psm1 powershellモジュールから実行されるときの呼び出し元の環境。これらの変更を行うためにpsm1スコープから呼び出し元スコープに渡る方法はありますか?Set-StrictMode -Version Latest $ErrorActionPreference = "Stop" $PSDefaultParameterValues['*:ErrorAction']='Stop'
例えば、トップレベルのスクリプト呼び出しについての情報をプリントアウト:
$immediateCallerPath = Get-Variable -scope 1 -name PSCommandPath -ValueOnly Write-Host "Starting script at $immediateCallerPath" $boundParameters = Get-Variable -scope 1 -name PSBoundParameters -ValueOnly Write-Host "Bound parameters are:" foreach($psbp in $boundParameters.GetEnumerator()) { "({0},{1})" -f $psbp.Key,$psbp.Value | Write-Host }
は同様に、これらのコマンドは、もはやかつて.psm1ファイルに配置された最上位の呼び出しスコープを見ることができない
これは本当に有望ですね、ありがとう。私はすぐにそれを試してみるでしょう。 – aggieNick02