2017-06-29 64 views
3

當我在Exchange PowerShell中的Exchange服務器上運行下面的代碼它顯示所有屬性:-ExpandProperty不通過遠程PowerShell顯示所有屬性

 
PS> Get-Mailbox Testeria | select -ExpandProperty EmailAddresses 

SmtpAddress  : [email protected] 
AddressString  : [email protected] 
ProxyAddressString : smtp:[email protected] 
Prefix    : SMTP 
IsPrimaryAddress : False 
PrefixString  : smtp 

SmtpAddress  : [email protected] 
AddressString  : [email protected] 
ProxyAddressString : SMTP:[email protected] 
Prefix    : SMTP 
IsPrimaryAddress : True 
PrefixString  : SMTP 

SmtpAddress  : [email protected] 
AddressString  : [email protected] 
ProxyAddressString : smtp:[email protected] 
Prefix    : SMTP 
IsPrimaryAddress : False 
PrefixString  : smtp 

但是當我嘗試PowerShell中的遠程使用通過

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri ("http://" + $Server + "/PowerShell/") -Authentication Kerberos 
Import-PSSession $Session 

本地計算機並運行相同的代碼,它顯示僅此:

 
PS> Get-Mailbox Testeria | select -ExpandProperty EmailAddresses 

smtp:[email protected] 
SMTP:[email protected] 
smtp:[email protected] 

如何理解這種行爲?如何通過遠程PowerShell獲取所有屬性?在本地機器上

PSVersion是5.1.14409.1005

PSVersion Exchange Server上是4.0

回答

3

這可能是因爲,當你通過PSRemoting結果訪問對象的反序列化。你可以看到,這是由它pipling到Get-Member看着生成的對象的類型名的情況。您將看到反序列化前綴爲類型:

具有「反序列化」的對象。前綴它們的類型名稱屬性包包含相應的遠程,實時對象的公共 性質的反序列化表示形式。正如你在獲得會員的輸出看 這些財產的行李沒有公開任何 方法除了toString()方法,因爲通常方法不能在遠程會話中調用 (例如,System.Diagnostics.Process.Kill( ) 不能在遠程過程起作用)。同樣,設置和獲取的屬性袋財產 值不執行任何代碼( Deserialized.System.Diagnostics.Process.WorkingSet的例子 工作集屬性僅快照 並沒有更新時,遠程進程的用途更多的記憶)。

我的假設是,EmailAddresses屬性是一個腳本屬性,這意味着它執行一個叫做獲取其子屬性時腳本。當您通過遠程檢索對象時,將失去執行此腳本的能力。

不幸的是,我沒有在Exchange系統此刻驗證這一點上。

相關問題