1

多くの一般的な管理および展開機能を含む PowerShell モジュールがあります。これは、すべてのクライアント ワークステーションにインストールされています。このモジュールは、ログイン時、スケジュールされたタスク、または展開中に実行される多数のスクリプトから呼び出されます。

モジュール内から、呼び出しスクリプトの名前を取得できます。

function Get-CallingScript {
    return ($script:MyInvocation.ScriptName)
}

ただし、モジュール内から、呼び出し元のスクリプトに最初に渡されたパラメーターにアクセスする方法が見つかりませんでした。私の目的では、辞書オブジェクトの形式でそれらにアクセスしたいと思いますが、元のコマンド ラインでも可能です。残念ながら、私のユース ケースでは、スクリプト内からパラメーターにアクセスしてモジュールに渡すことはできません。

何か案は?ありがとうございました。

4

2 に答える 2

2

about_Scopesから:

セッション、モジュール、およびネストされたプロンプトは自己完結型の環境ですが、セッションのグローバル スコープの子スコープではありません。

そうは言っても、これはモジュール内から私にとってはうまくいきました:

$Global:MyInvocation.UnboundArguments

スクリプトがパラメーターなしで定義されたときに、名前のないパラメーターを使用してスクリプトを呼び出していたことに注意してくださいUnboundArguments。パラメータを定義している場合は、代わりにこれが必要になる場合があります。

$Global:MyInvocation.BoundParameters
于 2015-09-14T03:31:44.777 に答える
1

これが一般的にどのようにセキュリティ上の問題になるかがわかります。たとえば、スタックの上位にある関数に資格情報が渡された場合、その資格情報にアクセスできます。

現在の関数に渡された引数は 経由$PSBoundParametersでアクセスできますが、コール スタック関数のパラメーターを調べるメカニズムはありません。

于 2015-09-14T02:57:55.067 に答える