2011-07-13 11 views
1

C#を書かずに、またはWindowsボックスに入っていないものを使用せずに、スクリプト内に名前空間または「プロバイダ」を作成するにはどうすればよいですか? - 別の言い方をすれば、私はスクリプトから変数を参照することはできますか?私は、生成されたPoSHスクリプトをドットソース化するときに衝突を避けたい。 Set-Variableコマンドレットは、次に参照する場所に関する手がかりを与えません。おそらく、すべてのフレームワークが実行されたプロバイダを作成するためのコマンドレットがありますか?私が定義するすべての値を追跡するために "グローバル"(ick)変数リストを使用している瞬間、基本的にライブラリを構築しようとしています。この場合、ライブラリはデータ値/定数を提供します。Powershellのネームスペースのグローバル制限を破る

答えて

2

呼び出されたスクリプト内で$ myinvocationをチェックすると、スクリプト名を見つけることができます。

変数リストをハッシュテーブルのハッシュテーブルにすることで、メインスクリプトに一種の擬似名前空間を実装した後、各値がメインスクリプトで$ vars.scriptname.scriptvariable 。

+0

私はあなたの思考@mjolinorが好きです。私はハッシュテーブルの専門家ではなく、プロバイダーがネームスペースとして扱うかのような仕組みを見つけたり、ハッシュテーブルを使うことを望んでいます。 私はPythonでPoSHを生成していますので、ドットソースファイルをハッシュのハッシュに変換し、後者の効果を試すことができます。 –

+0

このシナリオでハッシュテーブルを使用する利点の1つは、親スコープのハッシュテーブルに要素を追加するときに明示的にスコープを設定する必要がないことです。 – mjolinor

+0

他にも、呼び出されたスクリプトのhere-stringを使用して値と定数を入力し、それらの値をメインスクリプトに戻すときにconvertfrom-stringdataを使用してハッシュテーブルに変換することを検討してください。 – mjolinor