سؤال

وأنا باستخدام C # للاتصال تبادل 2010 طرق بوويرشيل ولقد واجهت مجرد عقبة.

وتجميع عاد من أسلوب التنفيذ لم يكن لديك BaseObject. يمكنني استخدام .Properties [ "PROPERTYNAME"]، ولكن يبدو أن جميع تلك القيم هي قيم السلسلة. ليس من العملي جدا لحجم الملف، المعرفات الفريدة العمومية وهلم جرا.

والقراءة <لأ href = "http://blogs.msdn.com/powershell/archive/2010/01/07/how-objects-are-sent-to-and-from-remote-sessions.aspx" يختلط = "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 I النصي استدعاء بعد.

وأنا أحسب أنه من حين الاستعلام بوويرشيل عبر بوويرشيل عن بعد مباشرة، وليس مع مساحة التبادل.

وهنا مثال

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

وهذا يعمل تماما، ويمكن بعد ذلك استخدام

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

للحصول على المالك

نصائح أخرى

ويمكنك الحصول على الكائن الاصلي مثل هذا:

وPS بت:

$results = $MyCustomCollection

وC # بت:

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

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

ويجب عليك التأكد من أن الشيء الوحيد الذي عاد هو هذا الكائن ولا شيء غير ذلك. وضع لذا فان أي شيء من شأنه أن يعود أي شيء لاغية؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top