2012-05-12 3 views
1

I이 그러나 교환 cmdlet를 실행 내가 다시 결과를 얻을 때 나에게 같은 값을 제공하는 다음 코드를교환 PowerShell은 결과를 표시하지 올바르게

Microsoft.Exchange.Management.RecipientTasks.MailboxAcePresentationObject

개체 자체가 아닌이 개체의 텍스트 값을 어떻게 얻을 수 있습니까?

이것은 내 가치를 얻기 위해 사용하는 코드입니다.

powershell.Runspace = runspace; 

    powershell = PowerShell.Create(); 
    PSCommand command = new PSCommand(); 
    command.AddCommand("Get-MailboxPermission"); 
    command.AddParameter("Identity", "myname"); 
    powershell.Commands = command; 
    powershell.Runspace = runspace; 
     Collection<PSObject> result = powershell.Invoke(); 


    StringBuilder sb = new StringBuilder(); 

    foreach (PSObject ps in result) 
    { 

     sb.AppendLine(ps.ToString()); 

    } 

    sb.AppendLine(); 

    lbl.Text += sb.ToString(); 

답변

1

문자열 표현을 어떻게 하시겠습니까? ToString이 클래스 이름 (객체의 기본 동작)을 제공합니다.

표시 할 내용을 확인하려면 the class definition을 확인하십시오.

Exchange 쉘과 같이 표시하려는 경우 exchange.format.ps1xml에서 해당보기가 정의 된 방식을 볼 수 있습니다. 여기에 해당 파일의 스 니펫이 표시됩니다.이 스 니펫에는 속성 ID, 사용자 , AccessRights, IsInherited 및 Deny가 있습니다.

또는 Out-string (또는 format-table 등)을 수행하도록 파이프 라인을 변경하여 PowerShell을 종료하기 전에 이미 원하는 문자열로 포맷되어있을 수 있습니다.

<View> 
     <Name>Microsoft.Exchange.Management.RecipientTasks.MailboxAcePresentationObject</Name> 
     <ViewSelectedBy> 
      <TypeName>Microsoft.Exchange.Management.RecipientTasks.MailboxAcePresentationObject</TypeName> 
     </ViewSelectedBy> 
     <TableControl> 
      <TableHeaders> 
       <TableColumnHeader> 
        <Label>Identity</Label> 
        <Width>20</Width> 
       </TableColumnHeader> 
       <TableColumnHeader> 
        <Label>User</Label> 
        <Width>20</Width> 
       </TableColumnHeader> 
       <TableColumnHeader> 
        <Label>AccessRights</Label> 
       </TableColumnHeader> 
       <TableColumnHeader> 
        <Label>IsInherited</Label> 
     <Width>11</Width> 
       </TableColumnHeader> 
       <TableColumnHeader> 
        <Label>Deny</Label> 
        <Width>5</Width> 
       </TableColumnHeader> 
      </TableHeaders> 
      <TableRowEntries> 
       <TableRowEntry> 
        <TableColumnItems> 
         <TableColumnItem> 
          <PropertyName>Identity</PropertyName> 
         </TableColumnItem> 
         <TableColumnItem> 
          <PropertyName>User</PropertyName> 
         </TableColumnItem> 
         <TableColumnItem> 
          <PropertyName>AccessRights</PropertyName> 
         </TableColumnItem> 
         <TableColumnItem> 
          <PropertyName>IsInherited</PropertyName> 
         </TableColumnItem> 
         <TableColumnItem> 
          <PropertyName>Deny</PropertyName> 
         </TableColumnItem> 
        </TableColumnItems> 
       </TableRowEntry> 
      </TableRowEntries> 
     </TableControl> 
    </View> 
+0

대단히 감사합니다. 또한 initconnection이라는 방법을 사용하여 연결을 설정합니다. 다른 방법으로 다른 Powershell 명령을 보내는 올바른 방법은 무엇입니까? 현재 모달 팝업을 사용하여 내 연결을 만듭니다. 그런 다음 예를 들어 getboxes라는 메서드를 실행하면 클릭하는 사서함 가져 오기라는 또 다른 단추가 있습니다. 그러나 다시 연결을 만들지 않고이 작업을 수행하는 방법을 모르겠습니다. – user541597

+0

나는 그 질문에 대해 확신하지 못한다. 아마도 새로운 질문으로 게시할만한 가치가있을 것이다. –

관련 문제