我有一個DLL程序集,返回一個列表(EmailItem)。 EmailItem是一個自定義類,它包含一些由於執行處理時間而導致的延遲加載的屬性。他們基本上是基於我的業務需求的助手。爲什麼Where-Object會評估源對象上的所有*屬性而不是相關的屬性?
當我在Windows服務和控制檯應用程序中使用這些對象時,這些屬性靜靜地坐在那裏等待被調用。
但是,如果我使用PoSh檢索這些類的集合,然後使用Where-Object對其進行篩選,則即使它們未在Where對象腳本塊或腳本中的其他任何地方被引用,也會對這些屬性進行評估。我已經嘗試編寫自定義過濾器,但體驗相同的行爲。即使投射我關心使用Select-Object的值也會做同樣的事情。
我最好的野驢猜測是對象正在轉換爲PSObjects並且PowerShell正在填充屬性。
任何想法如何避免此問題或關閉此腳本?我正在添加不包含這些助手的「輕量級」對象,但這只是爲了支持我最喜歡的Windows腳本語言而煩人的工作量。
感謝您的任何提示!
「即使使用Select-Object來投影我所關心的值也是一樣的。」真?!這不應該發生....這使得選擇對象而不是無用的! – Tom 2012-01-27 14:26:43
你的'Where-Object'語句是什麼樣的? – Rynant 2012-01-27 15:40:37
我的簡單測試表明'Where-Object'不像你描述的那樣工作。將結果寫入控制檯時,是否有可能實際評估了您的屬性?然後所有的屬性都可以被評估。 – 2012-01-27 16:13:01