C#を経由でのPowerShell 2.0、戻り値は空になっていますか?
-
20-09-2019 - |
質問
私は、Exchange 2010のPowerShellメソッドを呼び出すためにC#を使用していると私はちょうど思わぬ障害が発生しました。
Executeメソッドから返されたコレクションは、BaseObjectを持っていません。私は.propertiesファイル[「PropertyName意味を」]使用することができますが、すべてのこれらの値は、文字列の値であることを思われます。その上のファイルサイズ、GUIDのとは非常に実用的ではない。
レディング<のhref = "http://blogs.msdn.com/powershell/archive/2010/01/07/how-objects-are-sent-to-and-from-remote-sessions.aspx" のrel = "nofollowをnoreferrer"> http://blogs.msdn.com/powershell/archive/2010/01/07/how-objects-are-sent-to-and-from-remote-sessions.aspx を、正常であり、種類は私がDeserialized.Namespace.TypeNameているしていると思われます。
私は戻って、私はそうでプロパティを使用することができ、ライブオブジェクトにそれらをシリアル化する方法を探しています。私は、適切なDLL、すべてを持っています。
解決
私が私が望む任意のプロパティを取得することができそうですが、それは私がリモートで起動PSスクリプトにする必要があります。
ない取引所の名前空間で、直接リモートPowerShellを経由してPowerShellを照会しながら、私はそれを考え出します。
ここでは一例である
$spsite | Select Id, Url,
@{ Name = "Owner"; Expression = { $_.Owner.UserLogin } }
これは完璧に動作し、私はそれから使用することができます。
psResult.Members["Owner"].Value as string
所有者を取得する
他のヒント
あなたはこのようorginalオブジェクトを取得することができます:
PSビットます:
$results = $MyCustomCollection
C#のビット
System.Collections.ObjectModel.Collection<PSObject>
results = pipeline.Invoke();
CustomCollection theCustumCollection
= (CustomCollection )runspace.SessionStateProxy.GetVariable("results");
あなたは返さ唯一の事は、そのオブジェクトと他には何があることを確認する必要があります。 そうヌルには何も戻ってくる何かを置く;