2013-12-11 3 views
7

私はPowershell開発の完全な初心者です。PowerShell CmdletをC#で記述しようとしていますが、これはREST APIへのインターフェイスとして使用されます。Powershellコマンドレットの呼び出し間で状態を維持するためのベストプラクティスは何ですか?

ユーザーがUri、ユーザー名、パスワードをREST APIに要求し、Get-ItemのようなCmldletをこれらのパラメータを入力しなくても呼び出すようなセットアップコマンドレットが必要です。 PowershellのAzureプロバイダは、Select-AzureSubscriptionを呼び出して現在のサブスクリプションを設定してから、サブスクリプション名を再度入力せずにSave-AzureVhdを呼び出すことができます。

異なるコマンドレットへの呼び出し間で状態を維持するためのベストプラクティスは何ですか?

EDIT: これを解決する最善の方法はわかりませんが、私が行ったことは、状態を保持するシングルトンクラスを追加したことです。 私はシングルトンクラスにパブリックプロパティを設定し、他のCmdletがそのプロパティにアクセスできるCmdlet、Select-Project -Name MyProjectを1つ持っています。

答えて

1

V3以上で動作している場合は、これらの値を$ PSDefaultParameterValuesに設定することができます。

参照:

get-help about_parameters_default_values 

値の設定の詳細については。

+0

おそらくそれは1つの解決策ですが、C#コードから更新する必要がある場合は非常に複雑です。 – RobinHu

0

powershellのCimSessionサポートのようなものでしょうか?新しいcimsessionを使用してセッション(状態を含む)を作成し、cimsessionオブジェクトをさまざまな他のコマンドレットに渡します。しかし、これはOPで述べたようにget-itemでは機能しません。

しかし、OPのEDITは、(私が正しく理解していれば)取得項目ではうまくいかないような実装を記述しています。

get-itemによるサポートが本当に必要条件だった場合、私はPSプロバイダ(get-PSProviderのように)が行く方法だと信じています。 PSプロバイダはget-itemなどのコマンドレットで動作し、PSDrive経由で状態を保持できます(get-PSDriveなど)。

関連する問題