Frage

Ich bin mit C # Exchange 2010 Powershell-Methoden aufrufen und ich habe gerade einen Haken gestoßen.

Die Sammlung zurückgegeben nach der Methode Execute keine Baseobject haben. Ich kann .Properties verwenden [ „Propertyname“], aber es scheint, dass alle diese Werte String-Werte sind. Nicht sehr praktisch für die Dateigröße, Guids und so weiter.

Beim Lesen http://blogs.msdn.com/powershell/archive/2010/01/07/how-objects-are-sent-to-and-from-remote-sessions.aspx , es scheint, dass dies normal ist, und die Typen ich habe, sind Deserialized.Namespace.TypeName.

Ich bin auf der Suche nach einem Weg, um sie in ein Live-Objekt serialisiert zurück, dass ich Eigenschaften verwenden kann, und so weiter. Ich habe die entsprechende DLL und alles.

War es hilfreich?

Lösung

Es scheint, dass ich jede Eigenschaft bekommen kann ich will, aber muss sie aus der Ferne in dem PS-Skript rief ich sein.

ich es heraus, während Powershell über direkte Remote-Powershell abfragen, nicht mit dem Exchange-Namespace.

Hier ist ein Beispiel

$spsite | Select Id, Url,
          @{ Name = "Owner"; Expression = { $_.Owner.UserLogin } }

Das funktioniert einwandfrei, dann kann ich verwenden

psResult.Members["Owner"].Value as string

an den Eigentümer bekommen

Andere Tipps

Sie können das ursprüngliche Objekt wie diese:

PS Bit:

$results = $MyCustomCollection

C # Bit:

System.Collections.ObjectModel.Collection<PSObject>
results = pipeline.Invoke();

CustomCollection theCustumCollection
    = (CustomCollection )runspace.SessionStateProxy.GetVariable("results");

Sie müssen sicherstellen, dass das einzige, was zurückgegeben wird, ist das Objekt und nichts anderes; so habe alles, was alles auf null zurückkommen würde;

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top