私はPowershellの方が新しく、profile.ps1ファイルの設定に取り組んでいます。私はいくつかのマネージドDLLを持っていますが、私は頻繁にプロセスを維持し、迅速な関数呼び出しでロードできるようにしたいと思っています。インスタンス化されたオブジェクトを返すPowershell関数...種類の?
PS > $myLibInstance = LoadSomeDll
問題は、それがロードされているように見えるけれども$ myLibInstanceは、しないことです:PowerShellでは、私はこれを行う、
function LoadSomeDll
{
[System.Reflect.Assembly]::LoadFrom("c:\wherever\SomeLib.dll")
return new-object "SomeLib.SomeObject"
}
その後:だから、私はPS1ファイルにこの関数を作成しました私がそれを期待しているように振る舞うか、あるいは私が関数なしで明示的にそれをロードするかどうかを判断する。 SomeLib.SomeObjectには、オブジェクトが構築されたときに自身を(レジストリからyuckから)読み込むpublic文字列プロパティ "ConnectionString"があるとします。私は機能せずにそれを行う場合
PS > $myLibInstance.ConnectionString
//Nothing returned
しかし、このように:
PS > $myOtherLibInstance.ConnectionString
StringValueOfConnectionStringProperty
なぜこれが起こるん:?
PS > [System.Reflect.Assembly]::LoadFrom("c:\wherever\SomeLib.dll")
PS > $myOtherLibInstance = new-object "SomeLib.SomeObject"
私はこれを取得Powershell関数からインスタンス化された新しいオブジェクトを返すことができる方法はありますか?
ありがとうございます。
ありがとう、JaredPar。先週、あなたはPowershellの救世主でした。 –
@PITADev、あなたは本質的に私が初期のpowershellの時代とほぼ同じ順序で打ったのと同じ問題にぶつかりました。時には直観に反する。 – JaredPar
+1すてきな説明。私もこの問題に遭遇しました。 –