Posts RSS Comments RSS 253 Posts and 411 Comments till now

Blog Archives

Setting the WriteProperty on Members (ManagedBy Check box)

This has come up three times in the last week which triggers my auto blog response 🙂

Below is a function called New-ADAce. This function creates an Access Control Entry that can be applied to an AD Object (in this case the member property of an AD object.)

Basically what the code below does is:

  • Gets the ID object of the Manager
  • Creates ACE that gives the Manager Write access to the member property
  • Gets the Object to be managed
  • Gets the existing ACL
  • Addes the ACE to the ACL
  • Sets the ManagedBy Property to the DN of the Manager
  • Commits the changes
Param(
   $myGuid = "bf9679c0-0de6-11d0-a285-00aa003049e2", #GUID for the Members property
   $DN = "cn=jloser,cn=users,dc=corp,dc=lab",
   $domain = $env:UserDomain,
   $manager = "jmanager",
   $MangedByDN = ""cn=jmanager,cn=users,dc=corp,dc=lab""
)

function New-ADACE {
   Param([System.Security.Principal.IdentityReference]$identity,
   [System.DirectoryServices.ActiveDirectoryRights]$adRights,
   [System.Security.AccessControl.AccessControlType]$type,
   $Guid)

   $help = @"
   $identity
      System.Security.Principal.IdentityReference
      http://msdn.microsoft.com/en-us/library/system.security.principal.ntaccount.aspx
   $adRights
      System.DirectoryServices.ActiveDirectoryRights
      http://msdn.microsoft.com/en-us/library/system.directoryservices.activedirectoryrights.aspx
   $type
      System.Security.AccessControl.AccessControlType
      http://msdn.microsoft.com/en-us/library/w4ds5h86(VS.80).aspx
   $Guid
      Object Type of the property
      The schema GUID of the object to which the access rule applies.
"
@
   $ACE = New-Object System.DirectoryServices.ActiveDirectoryAccessRule($identity,$adRights,$type,$guid)
   $ACE
}

# Some example code on how to use the New-ADACE function

# Create ACE to add to object
$ID = New-Object System.Security.Principal.NTAccount($domain,$manager)
$newAce = New-ADACE $ID "WriteProperty" "Allow" $myGuid

# Get Object
$ADObject = [ADSI]"LDAP://$DN"

# Set Access Entry on Object
$ADObject.psbase.ObjectSecurity.SetAccessRule($newAce)

# Set the manageBy property
$ADObject.Put("managedBy",$MangedByDN)

# Commit changes to the backend
$ADObject.psbase.commitchanges()

The path to fixing Windows Update Service

I often need to trouble shoot Windows Update issues. I have found that some of the following things are useful to know in regards to trouble shooting:

Review this KB How to troubleshoot common Windows Update, Microsoft Update, and Windows Server Update Services installation issues

Try looking at WindowsUpdate.log (click for more info)

Use wuauclt.exe tool to force the update detection
MS Page for wuauclt utility
Yet another incomplete document

RegKeys
Create the required DWORD values from table below:
Value: NoAutoUpdate

  • 0 – Enable Automatic Updates (Default)
  • 1 – Disable Automatic Updates

Value: AUOptions

  • 2 – Notify for download and notify for install
  • 3 – Auto download and notify for install
  • 4 – Auto download and schedule the install

Value: ScheduledInstallDay

  • 0 – Install every day
  • 1 to 7 – Install on specific day of the week from Sunday (1) to Saturday (7).

Value: ScheduledInstallTime

  • 0 to 23 – Install time of day in 24-hour format

 

Note: I finally decided to run strings.exe (click for more info) against the exe and here is the list of the flags I found (you can guess what they are for:)

/DetectNow
/ReportNow
/RunHandlerComServer
/RunStoreAsComServer
/ShowSettingsDialog
/ResetAuthorization
/ResetEulas
/ShowWU
/ShowWindowsUpdate
/CloseWindowsUpdate
/SelfUpdateManaged
/SelfUpdateUnmanaged
/UpdateNow
/DemoUI

Printing Multiple InfoPath forms (Automated)

My name is John Negus and I work for a small consulting company called MSEtechnology.  I specialize in Active Directory and Microsoft Operating Systems, with a little bit of Exchange and everything else Microsoft thrown in.  I have taught a lot of internal AD courses for Microsoft all over the world and my current contract has me working on site alongside Brandon “The Power” Shell.  That is where I was presented with the challenge of automating the printing of multiple InfoPath 2003 forms.
I was told, by Microsoft, that this was not an easy thing to do and that I could open up an advisory case in which they could give me some sample code to do this.  I was also informed that I could create a transform file for Word and print all the forms using Word.  I attempted this approach but gave up as it was long and drawn out.

Alas, PowerShell came to the rescue.  Once I found the correct COM object to use and with the help of the “Great One” (that’s Brandon, in-case you did not know) it was easy, as you can see below.

Param($Path = "\\sharepoint.corp.com\Form_Folder",[switch]$verbose)

Write-Host

function Invoke-FormPrint
{
    Param($InfoForm)
    $shortname = $InfoForm.name
    Write-Verbose "   – FormPrint: Creating COM Object"
    $infopath = New-Object -com InfoPath.Application -verbose:$false
    Write-Verbose "   – FormPrint: Calling Open(`$InfoForm.fullname,10)"
    $infopath.XDocuments.Open($InfoForm.fullname,10) | out-null
    Write-verbose "   – FormPrint: Calling PrintOut()"
    $infopath.XDocuments[0].printout()
    sleep 10
    Write-verbose "   – FormPrint: Calling Quit()"
    $infopath.quit()
    if(!$?)
    {
        Write-Host "    – Error printing Form: $shortname" -fore RED
    }
    else
    {
        Write-Host "    – Successfully printed Form: $shortname" -fore Green
    }
}

$erroractionpreference = "silentlycontinue"

if($verbose){$verbosepreference="continue";$erroractionpreference="continue"}

Write-Verbose " + Processing all Forms from: $path"
$Forms = dir $path "*.xml"

Write-Verbose "  + $($Forms.count) Forms found"
Write-host " + Processing all $($Forms.count) Forms located at: $path" -fore White

foreach($Form in $Forms)
{
    Write-Host "  + Printing Form: $($Form.Name)" -fore White
    Invoke-FormPrint $Form
}

Active Directory cmdlet of the Week (on turbochargead.org)

This week I will begin a series that will focus on a new Active Directory cmdlet every week. It will cover the basics of that cmdlet providing a use case example and any gotcha’s I have uncovered.

While I want this series to be dynamic and flexible I also need to start somewhere so I will start with the Quest cmdlets and then probably move on to other third party providers or even the Microsoft Active Directory cmdlets (assuming the information embargo is removed.)

If you have a recommendation or any ideas of what you would like to know more about please do not be shy. Leave a note and let me know.

You can subscribe to the series here:  http://turbochargead.org/articles/

Getting the UpToDateness Vector (UTDV) in Powershell

A year or so ago I needed to get the UTDV Table (defined in detail HERE by Laura Hunter of ShutUpLaura.) At the time, the only way I knew how to get this information was to get the replUpToDateVector attribute from the NC on the target DC. I could have used Repadmin shown below, but that wouldn’t have been any fun. I did however end up with the massive script at the bottom of this post. It required decoding the UTDV table and resolving the Invocation ID to a name or “DeletedDSA.”

Fast forward to the present.

During the course of a long conversation on an ActiveDir thread (“Domain Controller Version”,) joe (aka joeware) and I got into side conversation about getting the UTDV table (ironically due to a statement/question in the thread by the same Laura, mentioned earlier.)

This led me to a wonderful little .NET method (GetReplicationCursors) on DirectoryServices.ActiveDirectory.DomainController class. This was so much easier I wanted to kick myself for not finding it sooner.

In any case, it was a great learning experience so I wanted to share it you. Enjoy my pain and victory.

Using Repadmin

repadmin /showutdvec [dc]  "[ DN for Naming Context ]"

The easy way.
Using System.DirectoryServices.ActiveDirectory.DomainController

Write-Host
$domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
$NC = "DC={0}" -f ($domain.Name -replace "\.",",DC=")
foreach($dc in $domain.DomainControllers)
{
    Write-Host "$($DC.Name)"
    Write-Host "================"
    $UDTV =  $dc.GetReplicationCursors($NC)
    $GUID = @{n=‘DSA’;e={if($_.SourceServer){$_.SourceServer}else{$_.SourceInvocationId}}}
    $UDTV | Select-Object $GUID,
                          UpToDatenessUsn,
                          LastSuccessfulSyncTime | Sort DSA -desc | Format-Table -auto
    Write-Host
}

The Hard way.
I initially did all the work myself using this function. This gets the Up To Dateness vector and decodes it. It also translates the Invocation ID (if possible.)

param([string]$server)

Begin{
    function Get-InvocationIDFromBytes{
        Param([byte[]]$GuidArray)
        $GUIDSection1 = @(1..4)
        $GUIDSection2 = @(1..2)
        $GUIDSection3 = @(1..2)
        $GUIDSection4 = @(1..2)
        $GUIDSection5 = @(1..6)
   
        $start = 0
       
        $InvocationIDString = ""
       
        foreach($byte in $GuidArray)
        {
            $InvocationIDString = $InvocationIDString + "\" + ([string]::Format("{0:X2}",$byte))
        }
       
        [system.Array]::Copy($GuidArray,$start,$GUIDSection1,0,4)
        [system.Array]::Copy($GuidArray,($start+4),$GUIDSection2,0,2)
        [system.Array]::Copy($GuidArray,($start+6),$GUIDSection3,0,2)
        [system.Array]::Copy($GuidArray,($start+8),$GUIDSection4,0,2)
        [system.Array]::Copy($GuidArray,($start+10),$GUIDSection5,0,6)
        [system.Array]::Reverse($GUIDSection1)
        [system.Array]::Reverse($GUIDSection2)
        [system.Array]::Reverse($GUIDSection3)
       
        [string]$GuidString1 = $GUIDSection1 | %{[string]::Format("{0:X2}",$_)}
        [string]$GuidString2 = $GUIDSection2 | %{[string]::Format("{0:X2}",$_)}
        [string]$GuidString3 = $GUIDSection3 | %{[string]::Format("{0:X2}",$_)}
        [string]$GuidString4 = $GUIDSection4 | %{[string]::Format("{0:X2}",$_)}
        [string]$GuidString5 = $GUIDSection5 | %{[string]::Format("{0:X2}",$_)}
       
        $GuidString1 = $GuidString1.replace(" ","")
        $GuidString2 = $GuidString2.replace(" ","")
        $GuidString3 = $GuidString3.replace(" ","")
        $GuidString4 = $GuidString4.replace(" ","")
        $GuidString5 = $GuidString5.replace(" ","")
       
        $InvocationGUID = "{0}-{1}-{2}-{3}-{4}" -f $GuidString1,$GuidString2,$GuidString3,$GuidString4,$GuidString5
       
        $name = Get-NameFromInvocationID $InvocationIDString
        if(!$DCInvocationID.$InvocationGUID)
        {
            if($name)
            {
                $DCInvocationID.add($InvocationGUID,($InvocationIDString,$name))
            }
            else
            {
                $DCInvocationID.add($InvocationGUID,$InvocationIDString)
            }
        }
        return $InvocationGUID
    }
    function Get-USNFromBytes{
        Param([byte[]]$USNArray)
        [system.Array]::Reverse($USNArray)
        [string]$USN = $USNArray | %{[string]::Format("{0:X2}",$_)}
        $usn = $usn.replace(" ","")
        $usn = [int]"0x$usn"
        $usn.PadRight(12)
    }
    function Get-DateFromBytes{
        Param([byte[]]$dateArray)
        [system.Array]::Reverse($dateArray)
        $temp = @(1..5)
        [system.Array]::Copy($dateArray,3,$temp,0,5)
        [string]$date = $temp | %{[string]::Format("{0:X2}",$_)}
        $date = $date.replace(" ","")
        $date = [int64]"0x$date"
        $date = $date + "0000000"
        [system.DateTime]::FromFileTime($date)
    }
    function Get-NameFromInvocationID{
        Param($InvocationID)
        [string]$config = ([adsi]"LDAP://RootDSE").ConfigurationNamingContext
        $de = new-Object System.DirectoryServices.DirectoryEntry("LDAP://$Config")
        $filter = "(&(invocationID=$InvocationID)(objectcategory=ntdsdsa))"
        $ds = new-Object System.DirectoryServices.DirectorySearcher($de,$filter)
        $hresult = $ds.findone()
        if($hresult.Path)
        {
            $ResultDE = $hresult.GetDirectoryEntry()
            $name = ($ResultDE.psbase.parent).DNSHostName
        }
        $name
    }
    function Decode-UpToDateVectorTable{
        Param([byte[]]$table)
       
        $guid = @(1..16)
        $USN = @(1..8)
        $Date = @(1..8)
        $UTDTable = @()
        $name = $null
       
        for($i=16;$i -lt $table.count;$i+=32)
        {
            [system.Array]::Copy($table,$i,$Guid,0,16)
            [system.Array]::Copy($table,$i+16,$USN,0,8)
            [system.Array]::Copy($table,$i+16+8,$Date,0,8)
           
            $GUIDString = Get-InvocationIDFromBytes $GUID
            $USNString  = Get-USNFromBytes $usn
            $dateString = Get-DateFromBytes $Date
            $UTDEntry = "" | Select-Object Name,USN,Date
            [system.Array]$dcname = $DCInvocationID.$GUIDString
            if($dcname[1])
            {
                $UTDEntry.Name = $dcname[1]
                $UTDEntry.USN =  $USNString
                $UTDEntry.Date = $DateString
                $UTDTable += $UTDEntry
            }
            else
            {
                $UTDEntry.Name = $GUIDString
                $UTDEntry.USN =  $USNString
                $UTDEntry.Date = $DateString
                $UTDTable += $UTDEntry
            }
        }  
        $UTDTable
    }
    $DCInvocationID = @{}
    $utdTables = @()
    $process = @()
}
Process{
    if($_)
    {
        $process += $_
    }
}
End{
    if($server){$process += $server}
    foreach($srv in $process)
    {
        $table = ([adsi]"LDAP://$srv").replUpToDateVector[0]
        if($process.count -gt 1)
        {
            $utdTableEntry = "" | Select-Object Name,UpToDatenessVector
            $utdTableEntry.Name = $srv
            $utdTableEntry.UpToDatenessVector = Decode-UpToDateVectorTable $table | Sort-Object Name -des
            $utdTables += $utdTableEntry
        }
        else
        {
            Decode-UpToDateVectorTable $table | Sort-Object Name -des
        }
    }
    if($utdTables){return $utdTables}
}

Powershell Usability Study

Microsoft Usability is conducting a study focusing on the remoting feature of PowerShell version 2 from July 22 to July 29, 2008. This is a great opportunity for IT administrators who have experience working with PowerShell to provide feedback and help improve the user experience of PowerShell version 2.

The study will be conducted in a lab setting on Microsoft’s main campus in Redmond, Washington. It is important for you to know that you do not need to prepare anything for this. We want to learn from you, the experts, to determine what needs to be improved in our software.

If you are interested or know someone who could be interested in participating, please email us at uccoord@microsoft.com with Powershell in subject line. For information on other studies and to learn more about Microsoft’s User Research program email us.

A collection of LDAP Filter Info

I often find myself googling for LDAP filter info. This time I decided to post the resulting set of websites I hit for this info.

NOTE: MS release the Specs for Active Directory’s LDAP Compliance here. GREAT DOC!
http://download.microsoft.com/download/d/c/8/dc83e0b8-fc2c-4af4-bd27-45b5963ad98d/AD%20LDAP%20Compliance.doc

Blog Entry on LDAP Filters
————————-
http://bsonposh.com/modules/wordpress/?p=78

LDAP Filter Articles
——————-
query Active Directory by using a bitwise filter
http://support.microsoft.com/kb/269181

Search Filter Syntax
http://msdn2.microsoft.com/en-us/library/aa746475.aspx

Mastering the LDAP search filter
http://searchwinit.techtarget.com/tip/0,289483,sid1_gci1191071,00.html

userAccountControl
——————-
UserAccountControl flags
http://support.microsoft.com/kb/305144

User-Account-Control Attribute (Windows)
http://msdn2.microsoft.com/en-us/library/ms680832.aspx

Exchange: Get-LogonStatistics (Return Info)

  TypeName: Microsoft.Exchange.Data.Mapi.LogonStatistics

Name                     MemberType Definition
—-                     ———- ———-
AdapterSpeed             Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
ClientIPAddress          Property   System.String ClientIPAddress {get;}
ClientMode               Property   Microsoft.Exchange.Data.Mapi.ClientMode ClientMode {get;}
ClientName               Property   System.String ClientName {get;}
ClientVersion            Property   System.String ClientVersion {get;}
CodePage                 Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
CurrentOpenAttachments   Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
CurrentOpenFolders       Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
CurrentOpenMessages      Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
DatabaseName             Property   System.String DatabaseName {get;}
FolderOperationCount     Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
FullMailboxDirectoryName Property   System.String FullMailboxDirectoryName {get;}
FullUserDirectoryName    Property   System.String FullUserDirectoryName {get;}
HostAddress              Property   System.String HostAddress {get;}
Identity                 Property   Microsoft.Exchange.Data.Mapi.MailboxId Identity {get;}
IsValid                  Property   System.Boolean IsValid {get;}
LastAccessTime           Property   System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, …
Latency                  Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
LocaleID                 Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
LogonTime                Property   System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, …
MACAddress               Property   System.String MACAddress {get;}
MessagingOperationCount  Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
OriginatingServer        Property   Microsoft.Exchange.Data.Fqdn OriginatingServer {get;}
OtherOperationCount      Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
ProgressOperationCount   Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
RPCCallsSucceeded        Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
ServerName               Property   System.String ServerName {get;}
StorageGroupName         Property   System.String StorageGroupName {get;}
StreamOperationCount     Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
TableOperationCount      Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
TotalOperationCount      Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
TransferOperationCount   Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
UserName                 Property   System.String UserName {get;}
Windows2000Account       Property   System.String Windows2000Account {get;}

Exchange: Get-MailboxCalendarConfiguration(Return Info)

  TypeName: Microsoft.Exchange.InfoWorker.CalendarSettings.CalendarConfiguration

Name                                MemberType Definition
—-                                ———- ———-
AddAdditionalResponse               Property   System.Boolean AddAdditionalResponse {get;set;}
AdditionalResponse                  Property   System.String AdditionalResponse {get;set;}
AddNewRequestsTentatively           Property   System.Boolean AddNewRequestsTentatively {get;set;}
AddOrganizerToSubject               Property   System.Boolean AddOrganizerToSubject {get;set;}
AllBookInPolicy                     Property   System.Boolean AllBookInPolicy {get;set;}
AllowConflicts                      Property   System.Boolean AllowConflicts {get;set;}
AllowRecurringMeetings              Property   System.Boolean AllowRecurringMeetings {get;set;}
AllRequestInPolicy                  Property   System.Boolean AllRequestInPolicy {get;set;}
AllRequestOutOfPolicy               Property   System.Boolean AllRequestOutOfPolicy {get;set;}
AutomateProcessing                  Property   Microsoft.Exchange.Data.Storage.CalendarProcessingFlags AutomateProce…
BookingWindowInDays                 Property   System.Int32 BookingWindowInDays {get;set;}
BookInPolicy                        Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Dat
ConflictPercentageAllowed           Property   System.Int32 ConflictPercentageAllowed {get;set;}
DefaultReminderTime                 Property   System.Int32 DefaultReminderTime {get;set;}
DeleteAttachments                   Property   System.Boolean DeleteAttachments {get;set;}
DeleteComments                      Property   System.Boolean DeleteComments {get;set;}
DeleteNonCalendarItems              Property   System.Boolean DeleteNonCalendarItems {get;set;}
DeleteSubject                       Property   System.Boolean DeleteSubject {get;set;}
DisableReminders                    Property   System.Boolean DisableReminders {get;set;}
EnableResponseDetails               Property   System.Boolean EnableResponseDetails {get;set;}
EnforceSchedulingHorizon            Property   System.Boolean EnforceSchedulingHorizon {get;set;}
ForwardRequestsToDelegates          Property   System.Boolean ForwardRequestsToDelegates {get;set;}
Identity                            Property   Microsoft.Exchange.Data.ObjectId Identity {get;set;}
MaximumConflictInstances            Property   System.Int32 MaximumConflictInstances {get;set;}
MaximumDurationInMinutes            Property   System.Int32 MaximumDurationInMinutes {get;set;}
OrganizerInfo                       Property   System.Boolean OrganizerInfo {get;set;}
ProcessExternalMeetingMessages      Property   System.Boolean ProcessExternalMeetingMessages {get;set;}
RemoveForwardedMeetingNotifications Property   System.Boolean RemoveForwardedMeetingNotifications {get;set;}
RemoveOldMeetingMessages            Property   System.Boolean RemoveOldMeetingMessages {get;set;}
RemovePrivateProperty               Property   System.Boolean RemovePrivateProperty {get;set;}
RequestInPolicy                     Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Dat
RequestOutOfPolicy                  Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Dat
ResourceDelegates                   Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Dat
ScheduleOnlyDuringWorkHours         Property   System.Boolean ScheduleOnlyDuringWorkHours {get;set;}
TentativePendingApproval            Property   System.Boolean TentativePendingApproval {get;set;}

Exchange: Get-MailUser(Return Info)

  TypeName: Microsoft.Exchange.Data.Directory.Management.MailUser

Name                               MemberType Definition
—-                               ———- ———-
AcceptMessagesOnlyFrom             Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Data
AcceptMessagesOnlyFromDLMembers    Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Data
AddressListMembership              Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Data
Alias                              Property   System.String Alias {get;set;}
CustomAttribute1                   Property   System.String CustomAttribute1 {get;set;}
CustomAttribute10                  Property   System.String CustomAttribute10 {get;set;}
CustomAttribute11                  Property   System.String CustomAttribute11 {get;set;}
CustomAttribute12                  Property   System.String CustomAttribute12 {get;set;}
CustomAttribute13                  Property   System.String CustomAttribute13 {get;set;}
CustomAttribute14                  Property   System.String CustomAttribute14 {get;set;}
CustomAttribute15                  Property   System.String CustomAttribute15 {get;set;}
CustomAttribute2                   Property   System.String CustomAttribute2 {get;set;}
CustomAttribute3                   Property   System.String CustomAttribute3 {get;set;}
CustomAttribute4                   Property   System.String CustomAttribute4 {get;set;}
CustomAttribute5                   Property   System.String CustomAttribute5 {get;set;}
CustomAttribute6                   Property   System.String CustomAttribute6 {get;set;}
CustomAttribute7                   Property   System.String CustomAttribute7 {get;set;}
CustomAttribute8                   Property   System.String CustomAttribute8 {get;set;}
CustomAttribute9                   Property   System.String CustomAttribute9 {get;set;}
DisplayName                        Property   System.String DisplayName {get;set;}
DistinguishedName                  Property   System.String DistinguishedName {get;}
EmailAddresses                     Property   Microsoft.Exchange.Data.ProxyAddressCollection EmailAddresses {get;set;}
EmailAddressPolicyEnabled          Property   System.Boolean EmailAddressPolicyEnabled {get;set;}
ExchangeUserAccountControl         Property   Microsoft.Exchange.Data.Directory.Recipient.UserAccountControlFlags Ex…
ExchangeVersion                    Property   Microsoft.Exchange.Data.ExchangeObjectVersion ExchangeVersion {get;}
Extensions                         Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[System.String, mscorlib…
ExternalEmailAddress               Property   Microsoft.Exchange.Data.ProxyAddress ExternalEmailAddress {get;set;}
GrantSendOnBehalfTo                Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Data
Guid                               Property   System.Guid Guid {get;}
HiddenFromAddressListsEnabled      Property   System.Boolean HiddenFromAddressListsEnabled {get;set;}
Identity                           Property   Microsoft.Exchange.Data.ObjectId Identity {get;}
IsValid                            Property   System.Boolean IsValid {get;}
LegacyExchangeDN                   Property   System.String LegacyExchangeDN {get;}
MacAttachmentFormat                Property   Microsoft.Exchange.Data.Directory.Recipient.MacAttachmentFormat MacAtt…
MaxReceiveSize                     Property   Microsoft.Exchange.Data.Unlimited`1[[Microsoft.Exchange.Data.ByteQuant
MaxSendSize                        Property   Microsoft.Exchange.Data.Unlimited`1[[Microsoft.Exchange.Data.ByteQuant
MessageBodyFormat                  Property   Microsoft.Exchange.Data.Directory.Recipient.MessageBodyFormat MessageB…
MessageFormat                      Property   Microsoft.Exchange.Data.Directory.Recipient.MessageFormat MessageForma…
Name                               Property   System.String Name {get;set;}
ObjectCategory                     Property   Microsoft.Exchange.Data.Directory.ADObjectId ObjectCategory {get;}
ObjectClass                        Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[System.String, mscorlib…
OrganizationalUnit                 Property   System.String OrganizationalUnit {get;}
OriginatingServer                  Property   System.String OriginatingServer {get;}
PoliciesExcluded                   Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[System.String, mscorlib…
PoliciesIncluded                   Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[System.String, mscorlib…
PrimarySmtpAddress                 Property   Microsoft.Exchange.Data.SmtpAddress PrimarySmtpAddress {get;set;}
ProtocolSettings                   Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[System.String, mscorlib…
RecipientLimits                    Property   Microsoft.Exchange.Data.Unlimited`1[[System.Int32, mscorlib, Version=2
RecipientType                      Property   Microsoft.Exchange.Data.Directory.Recipient.RecipientType RecipientTyp…
RecipientTypeDetails               Property   Microsoft.Exchange.Data.Directory.Recipient.RecipientTypeDetails Recip…
RejectMessagesFrom                 Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Data
RejectMessagesFromDLMembers        Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Data
RequireSenderAuthenticationEnabled Property   System.Boolean RequireSenderAuthenticationEnabled {get;set;}
SamAccountName                     Property   System.String SamAccountName {get;set;}
SimpleDisplayName                  Property   System.String SimpleDisplayName {get;set;}
UMDtmfMap                          Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[System.String, mscorlib…
UseMapiRichTextFormat              Property   Microsoft.Exchange.Data.Directory.Recipient.UseMapiRichTextFormat UseM…
UsePreferMessageFormat             Property   System.Boolean UsePreferMessageFormat {get;set;}
UserPrincipalName                  Property   System.String UserPrincipalName {get;set;}
WhenChanged                        Property   System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture…
WhenCreated                        Property   System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture…
WindowsEmailAddress                Property   Microsoft.Exchange.Data.SmtpAddress WindowsEmailAddress {get;set;}

« Prev - Next »