none
New-PSSession. Serialization /deserialization и "dehydrated" объекты RRS feed

  • Вопрос

  • Добрый день, коллеги

    Как известно, при использовании "remote sessions", объекты возвращаемые с удаленного сервера "десериализуются" и теряются свойства объектов глубже второго уровня вложенности.

    Вопрос следующий.

    Можно ли как-то  повлиять на глубину возвращаемых объектов, т.е. возвращать до 3-го уровня вложенности, включительно?


    Покажу на примере Exchange 2010 и прав на календарь:

    Используем "ремотинг"
    PS C:\> $NeedCommand = "Get-MailboxFolderStatistics", "Get-MailboxFolderPermission", "Remove-MailboxFolderPermission", "Add-MailboxFolderPermission", "Set-MailboxFolderPermission"
    PS C:\>
    PS C:\> $ExPSSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "http://ex01/PowerShell" -Authentication Kerberos -SessionOption (new-pssessionoption -SkipCACheck -SkipCNCheck) -AllowRedirection
    PS C:\> Import-PSSession -Session $ExPSSession -CommandName $NeedCommand -AllowClobber

    ModuleType Name                                ExportedCommands
    ---------- ----                                ----------------
    Script     tmp_xki23brr.jf5                    {Add-MailboxFolderPermission, Get-MailboxFolderPermission, Get-Mailbo...


    PS C:\>
    PS C:\> $User = Get-ADUser s-korotkov
    PS C:\> $Calendar = (($User.SamAccountName)+ ":\" + (Get-MailboxFolderStatistics -Identity $User.SamAccountName -FolderScope Calendar | where{$_.FolderType -eq "Calendar"} | Select-Object -First 1).Name)
    PS C:\>
    PS C:\> $CurPerm = @(Get-MailboxFolderPermission -Identity $Calendar)
    PS C:\> $CurPerm[2].user
    Коротков Сергей
    PS C:\> $CurPerm[2].user | gm -MemberType Properties


       TypeName: System.String

    Name   MemberType Definition
    ----   ---------- ----------
    Length Property   int Length {get;}


    PS C:\>


    Теперь тоже самое с используя локальный snapin:
    PS C:\> Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
    PS C:\> $User = Get-ADUser s-korotkov
    PS C:\> $Calendar = (($User.SamAccountName)+ ":\" + (Get-MailboxFolderStatistics -Identity $User.SamAccountName -FolderScope Calendar | where{$_.FolderType -eq "Calendar"} | Select-Object -First 1).Name)
    PS C:\> $CurPerm = @(Get-MailboxFolderPermission -Identity $Calendar)
    PS C:\> $CurPerm[2].user

                                                       UserType ADRecipient                                                 DisplayName
                                                       -------- -----------                                                 -----------
                                                       Internal Коротков Сергей                                             Коротков Сергей


    PS C:\>  $CurPerm[2].user | gm -MemberType Properties


       TypeName: Microsoft.Exchange.Management.StoreTasks.MailboxFolderUserId

    Name        MemberType Definition
    ----        ---------- ----------
    ADRecipient Property   Microsoft.Exchange.Data.Directory.Recipient.ADRecipient ADRecipient {get;}
    DisplayName Property   string DisplayName {get;}
    UserType    Property   Microsoft.Exchange.Management.StoreTasks.MailboxFolderUserId+MailboxFolderUserType UserType {get;}

    PS C:\>  $CurPerm[2].user.ADRecipient | gm


       TypeName: Microsoft.Exchange.Data.Directory.Recipient.ADUser

    Name                                   MemberType Definition
    ----                                   ---------- ----------
    Clone                                  Method     System.Object Clone(), System.Object ICloneable.Clone()
    CopyChangesFrom                        Method     void IConfigurable.CopyChangesFrom(Microsoft.Exchange.Data.IConfigurable source)
    Equals                                 Method     bool Equals(System.Object obj)
    GetHashCode                            Method     int GetHashCode()
    …..


    Грамотная постановка вопроса - уже 50% решения. Не забывайте помечать ответы как полезные или как ответ, если они Вам; помогли.

    6 сентября 2013 г. 6:40

Ответы