Posts RSS Comments RSS 117 Posts and 170 Comments till now

Archive for March, 2008

Get/Set-ADACL (ACL and SDDLs for Active Directory!)

A friend had a need to get/set Active Directory ACLs. So I wrote these.

They will use [System.DirectoryServices.ActiveDirectoryAccessRule] objects or SDDLs strings.

Note: I put the .NET classes and MS Spec for SDDLs at the bottom. Dont miss it!

Get-ADACL.ps1

  1. # Get-ADACL.ps1
  2. Param($DNPath,[switch]$SDDL,[switch]$help,[switch]$verbose)
  3. function HelpMe{
  4.     Write-Host
  5.     Write-Host " Get-ADACL.ps1:" -fore Green
  6.     Write-Host "   Gets ACL object or SDDL for AD Object"
  7.     Write-Host
  8.     Write-Host " Parameters:" -fore Green
  9.     Write-Host "   -DNPath                : Parameter: DN of Object"
  10.     Write-Host "   -sddl                  : [SWITCH]:  Output SDDL instead of ACL Object"
  11.     Write-Host "   -Verbose               : [SWITCH]:  Enables Verbose Output"
  12.     Write-Host "   -Help                  : [SWITCH]:  Displays This"
  13.     Write-Host
  14.     Write-Host " Examples:" -fore Green
  15.     Write-Host "   Get ACL for ‘cn=users,dc=corp,dc=lab’" -fore White
  16.     Write-Host "     .\Get-ADACL.ps1 ‘cn=users,dc=corp,dc=lab’" -fore Yellow
  17.     Write-Host "   Get SDDL for ‘cn=users,dc=corp,dc=lab’" -fore White
  18.     Write-Host "     .\Get-ADACL.ps1 ‘cn=users,dc=corp,dc=lab’ -sddl " -fore Yellow
  19.     Write-Host
  20. }
  21.  
  22. if(!$DNPath -or $help){HelpMe;return}
  23.  
  24. Write-Host
  25. if($verbose){$verbosepreference="continue"}
  26.  
  27. Write-Verbose " + Processing Object [$DNPath]"
  28. $DE = [ADSI]"LDAP://$DNPath"
  29.  
  30. Write-Verbose "   - Getting ACL"
  31. $acl = $DE.psbase.ObjectSecurity
  32. if($SDDL)
  33. {
  34.     Write-Verbose "   - Returning SDDL"
  35.     $acl.GetSecurityDescriptorSddlForm([System.Security.AccessControl.AccessControlSections]::All)
  36. }
  37. else
  38. {
  39.     Write-Verbose "   - Returning ACL Object [System.DirectoryServices.ActiveDirectoryAccessRule]"
  40.     $acl.GetAccessRules($true,$true,[System.Security.Principal.SecurityIdentifier])
  41. }

Set-ADACL.ps1

  1. # Set-ADACL.ps1
  2. Param($DNPath,$acl,$sddl,[switch]$verbose,[switch]$help)
  3. function HelpMe{
  4.     Write-Host
  5.     Write-Host " Set-ADACL.ps1:" -fore Green
  6.     Write-Host "   Sets the AD Object ACL to ‘ACL Object’ or ‘SDDL’ String"
  7.     Write-Host
  8.     Write-Host " Parameters:" -fore Green
  9.     Write-Host "   -DNPath                : Parameter: DN of Object"
  10.     Write-Host "   -ACL                   : Parameter: ACL Object"
  11.     Write-Host "   -sddl                  : Parameter: SDDL String"
  12.     Write-Host "   -Verbose               : [SWITCH]:  Enables Verbose Output"
  13.     Write-Host "   -Help                  : [SWITCH]:  Displays This"
  14.     Write-Host
  15.     Write-Host " Examples:" -fore Green
  16.     Write-Host "   Set ACL on ‘cn=users,dc=corp,dc=lab’ using ACL Object" -fore White
  17.     Write-Host "     .\Set-ADACL.ps1 ‘cn=users,dc=corp,dc=lab’ -ACL $acl" -fore Yellow
  18.     Write-Host "   Set ACL on ‘cn=users,dc=corp,dc=lab’ using SDDL" -fore White
  19.     Write-Host "     .\Set-ADACL.ps1 ‘cn=users,dc=corp,dc=lab’ -sddl `$mysddl" -fore Yellow
  20.     Write-Host
  21. }
  22.  
  23. if(!$DNPath -or (!$acl -and !$sddl) -or $help){HelpMe;Return}
  24.  
  25. Write-Host
  26. if($verbose){$verbosepreference="continue"}
  27. Write-Verbose " + Processing Object [$DNPath]"
  28.  
  29. $DE = [ADSI]"LDAP://$DNPath"
  30. if($sddl)
  31. {
  32.     Write-Verbose "   - Setting ACL using SDDL [$sddl]"
  33.     $DE.psbase.ObjectSecurity.SetSecurityDescriptorSddlForm($sddl)
  34. }
  35. else
  36. {
  37.     foreach($ace in $acl)
  38.     {
  39.         Write-Verbose "   - Adding Permission [$($ace.ActiveDirectoryRights)] to [$($ace.IdentityReference)]"
  40.         $DE.psbase.ObjectSecurity.SetAccessRule($ace)
  41.     }
  42. }
  43. $DE.psbase.commitchanges()
  44. Write-Host

More Info
I used the following .NET Classes
System.DirectoryServices.DirectoryEntry
http://msdn2.microsoft.com/en-us/library/system.directoryservices.directoryentry.aspx
System.DirectoryServices.ActiveDirectoryAccessRule
http://msdn2.microsoft.com/en-us/library/system.directoryservices.activedirectoryaccessrule.aspx
System.DirectoryServices.ActiveDirectorySecurity
http://msdn2.microsoft.com/en-us/library/system.directoryservices.activedirectorysecurity.aspx
System.Security.AccessControl.AccessControlSections
http://msdn2.microsoft.com/en-us/library/system.security.accesscontrol.accesscontrolsections(vs.80).aspx

SDDL Info
MS: http://msdn2.microsoft.com/en-us/library/aa379567.aspx

More userAccountControl Flag Fun (Convert-ToUACFlag.ps1)

A question on the NG made me think about this. While I personally prefer the decimal that comes from userAccountControl, others may prefer to actually see the FLAGS that are set.

Here is the script I came up with. It will output and array by default, but -toString will output a “,” delimited string.

It has a great -help function with -verbose output that explains each UAC Flag

Convert-ToUACFlag.ps1

  1. # Convert-ToUACFlag.ps1
  2. Param([int]$uac,[switch]$ToString,[switch]$help,[switch]$verbose)
  3. function HelpMe{
  4.     Write-Host
  5.     Write-Host " Convert-ToUACFlag.ps1:" -fore Green
  6.     Write-Host "   Converts UAC from Decimal or Hex to User Account Control Flags (described verbose help)"
  7.     Write-Host
  8.     Write-Host " Parameters:" -fore Green
  9.     Write-Host "   -UAC                   : Parameter User Account Control Value"
  10.     Write-Host "   -toString              : [SWITCH]  Output to String instead of Array"
  11.     Write-Host "   -Help                  : [SWITCH]  Displays This"
  12.     Write-Host "   -Verbose               : [SWITCH]  Displays This and User Account Control Definitions"
  13.     Write-Host
  14.     Write-Host " Examples:" -fore Green
  15.     Write-Host "   Convert to Flag getting back array" -fore White
  16.     Write-Host "     .\Convert-ToUACFlag.ps1 69649" -fore Yellow
  17.     Write-Host "   Convert to Flag getting back string" -fore White
  18.     Write-Host "     .\Convert-ToUACFlag.ps1 69649 -toString" -fore Yellow
  19.     Write-Host
  20.     if($verbose)
  21.     {
  22.         Write-Host " User Account Control Flags and Definition" -fore Green
  23.         Write-Host "  + SCRIPT" -fore Yellow
  24.         Write-Host "    - The logon script will be run."
  25.         Write-Host
  26.         Write-Host "  + ACCOUNTDISABLE" -fore Yellow
  27.         Write-Host "    - The user account is disabled."
  28.         Write-Host
  29.         Write-Host "  + HOMEDIR_REQUIRED" -fore Yellow
  30.         Write-Host "    - The home folder is required."
  31.         Write-Host
  32.         Write-Host "  + PASSWD_NOTREQD" -fore Yellow
  33.         Write-Host "    - No password is required."
  34.         Write-Host
  35.         Write-Host "  + PASSWD_CANT_CHANGE" -fore Yellow
  36.         Write-Host "    - The user cannot change the password."
  37.         Write-Host "    - This is a permission on the user’s object."
  38.         Write-Host
  39.         Write-Host "  + ENCRYPTED_TEXT_PASSWORD_ALLOWED" -fore Yellow
  40.         Write-Host "    - The user can send an encrypted password."
  41.         Write-Host
  42.         Write-Host "  + TEMP_DUPLICATE_ACCOUNT" -fore Yellow
  43.         Write-Host "    - This is an account for users whose primary account is in another domain."
  44.         Write-Host "    - This account provides user access to this domain,"
  45.         Write-Host "      but not to any domain that trusts this domain."
  46.         Write-Host "    - This is sometimes referred to as a local user account."
  47.         Write-Host
  48.         Write-Host "  + NORMAL_ACCOUNT" -fore Yellow
  49.         Write-Host "    - This is a default account type that represents a typical user."
  50.         Write-Host
  51.         Write-Host "  + INTERDOMAIN_TRUST_ACCOUNT" -fore Yellow
  52.         Write-Host "    - This is a permit to trust an account for a system domain that trusts other domains."
  53.         Write-Host
  54.         Write-Host "  + WORKSTATION_TRUST_ACCOUNT" -fore Yellow
  55.         Write-Host "    - This is a computer account for a computer that is running"
  56.         Write-Host "    - Microsoft Windows NT 4.0 and above and is a member of this domain."
  57.         Write-Host
  58.         Write-Host "  + SERVER_TRUST_ACCOUNT" -fore Yellow
  59.         Write-Host "    - This is a computer account for a domain controller that is a member of this domain."
  60.         Write-Host
  61.         Write-Host "  + DONT_EXPIRE_PASSWD" -fore Yellow
  62.         Write-Host "    - Represents the password, which should never expire on the account."
  63.         Write-Host
  64.         Write-Host "  + MNS_LOGON_ACCOUNT" -fore Yellow
  65.         Write-Host "    - This is an MNS logon account."
  66.         Write-Host
  67.         Write-Host "  + SMARTCARD_REQUIRED" -fore Yellow
  68.         Write-Host "    - When this flag is set, it forces the user to log on by using a smart card."
  69.         Write-Host
  70.         Write-Host "  + TRUSTED_FOR_DELEGATION" -fore Yellow
  71.         Write-Host "    - When this flag is set, the service account (the user or computer account)"
  72.         Write-Host "      under which a service runs is trusted for Kerberos delegation."
  73.         Write-Host "    - Any such service can impersonate a client requesting the service."
  74.         Write-Host "    - To enable a service for Kerberos delegation, you must set this flag on the"
  75.         Write-Host "      userAccountControl property of the service account."
  76.         Write-Host
  77.         Write-Host "  + NOT_DELEGATED" -fore Yellow
  78.         Write-Host "    - When this flag is set, the security context of the user is not delegated to"
  79.         Write-Host "      a service even if the service account is set as trusted for Kerberos delegation."
  80.         Write-Host
  81.         Write-Host "  + USE_DES_KEY_ONLY" -fore Yellow
  82.         Write-Host "    - (Windows 2000/Windows Server 2003) Restrict this principal to use only"
  83.         Write-Host "      Data Encryption Standard (DES) encryption types for keys."
  84.         Write-Host
  85.         Write-Host "  + DONT_REQUIRE_PREAUTH" -fore Yellow
  86.         Write-Host "    - (Windows 2000/Windows Server 2003) This account does not require"
  87.         Write-Host "      Kerberos pre+authentication for logging on."
  88.         Write-Host
  89.         Write-Host "  + PASSWORD_EXPIRED" -fore Yellow
  90.         Write-Host "    - (Windows 2000/Windows Server 2003) The user’s password has expired."
  91.         Write-Host
  92.         Write-Host "  + TRUSTED_TO_AUTH_FOR_DELEGATION" -fore Yellow
  93.         Write-Host "    - (Windows 2000/Windows Server 2003) The account is enabled for delegation."
  94.         Write-Host "    - This is a security-sensitive setting."
  95.         Write-Host "    - Accounts with this option enabled should be tightly controlled."
  96.         Write-Host "    - This setting allows a service that runs under the account to assume a client’s"
  97.         Write-Host "      identity and authenticate as that user to other remote servers on the network."
  98.     }
  99.     Write-Host
  100. }
  101.  
  102. if(!$uac -or $help){HelpMe;Return}
  103. $flags = @()
  104. switch ($uac)
  105. {
  106.     {($uac -bor 0×0002) -eq $uac}    {$flags += "ACCOUNTDISABLE"}
  107.     {($uac -bor 0×0008) -eq $uac}    {$flags += "HOMEDIR_REQUIRED"}
  108.     {($uac -bor 0×0010) -eq $uac}    {$flags += "LOCKOUT"}
  109.     {($uac -bor 0×0020) -eq $uac}    {$flags += "PASSWD_NOTREQD"}
  110.     {($uac -bor 0×0040) -eq $uac}    {$flags += "PASSWD_CANT_CHANGE"}
  111.     {($uac -bor 0×0080) -eq $uac}    {$flags += "ENCRYPTED_TEXT_PWD_ALLOWED"}
  112.     {($uac -bor 0×0100) -eq $uac}    {$flags += "TEMP_DUPLICATE_ACCOUNT"}
  113.     {($uac -bor 0×0200) -eq $uac}    {$flags += "NORMAL_ACCOUNT"}
  114.     {($uac -bor 0×0800) -eq $uac}    {$flags += "INTERDOMAIN_TRUST_ACCOUNT"}
  115.     {($uac -bor 0×1000) -eq $uac}    {$flags += "WORKSTATION_TRUST_ACCOUNT"}
  116.     {($uac -bor 0×2000) -eq $uac}    {$flags += "SERVER_TRUST_ACCOUNT"}
  117.     {($uac -bor 0×10000) -eq $uac}   {$flags += "DONT_EXPIRE_PASSWORD"}
  118.     {($uac -bor 0×20000) -eq $uac}   {$flags += "MNS_LOGON_ACCOUNT"}
  119.     {($uac -bor 0×40000) -eq $uac}   {$flags += "SMARTCARD_REQUIRED"}
  120.     {($uac -bor 0×80000) -eq $uac}   {$flags += "TRUSTED_FOR_DELEGATION"}
  121.     {($uac -bor 0×100000) -eq $uac}  {$flags += "NOT_DELEGATED"}
  122.     {($uac -bor 0×200000) -eq $uac}  {$flags += "USE_DES_KEY_ONLY"}
  123.     {($uac -bor 0×400000) -eq $uac}  {$flags += "DONT_REQ_PREAUTH"}
  124.     {($uac -bor 0×800000) -eq $uac}  {$flags += "PASSWORD_EXPIRED"}
  125.     {($uac -bor 0×1000000) -eq $uac} {$flags += "TRUSTED_TO_AUTH_FOR_DELEGATION"}
  126. }
  127. if($toString){$flags | %{if($mystring){$mystring += ",$_"}else{$mystring = $_}};$mystring}else{$flags}

Oisin the “obsessive programmer” sent me this as another option

  1. param
  2. ([int]$value)
  3. $flags = @("","ACCOUNTDISABLE","", "HOMEDIR_REQUIRED",
  4. "LOCKOUT", "PASSWD_NOTREQD","PASSWD_CANT_CHANGE", "ENCRYPTED_TEXT_PWD_ALLOWED",
  5. "TEMP_DUPLICATE_ACCOUNT", "NORMAL_ACCOUNT", "","INTERDOMAIN_TRUST_ACCOUNT", "WORKSTATION_TRUST_ACCOUNT",
  6. "SERVER_TRUST_ACCOUNT", "", "", "DONT_EXPIRE_PASSWORD", "MNS_LOGON_ACCOUNT", "SMARTCARD_REQUIRED",
  7. "TRUSTED_FOR_DELEGATION", "NOT_DELEGATED","USE_DES_KEY_ONLY", "DONT_REQ_PREAUTH",
  8. "PASSWORD_EXPIRED", "TRUSTED_TO_AUTH_FOR_DELEGATION")
  9. 1..($flags.length) | ? {$value -band [math]::Pow(2,$_)} | % { $flags[$_] }

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

Citrix Policies and Powershell (Double the Pleasure!)

I notice there was entry on Brian Madden forums about creating Citrix Policies. http://www.brianmadden.com/Forum/Topic/97139

I decided to spend a little time looking at this from a script perspective and here are some examples of dealing with Citrix Policies that I came up with.

Just a FYI
I hear tell there will be some Citrix CMDLets coming very soon that will make working with Citrix amazingly simple (which will include an import/export Citrix policy cmdlets.) I cannot tell you how revolutionary this will be for your typical Citrix Admin.

You can find the Citrix Enums here
http://bsonposh.com/modules/wordpress/?p=62

Script To Get Citrix Policy

  1. # Get-CitrixPolicy.ps1
  2. Param($Server,$PolicyName = ".*")
  3.  
  4. # Enums in Use
  5. $MetaFrameUnknownObject = 0
  6. $MetaFrameWinFarmObject = 1
  7.  
  8. # Getting Farm Object
  9. $type = [System.Type]::GetTypeFromProgID("MetaframeCOM.MetaframeFarm",$Server)
  10. $mfarm = [system.Activator]::CreateInstance($type)
  11. $mfarm.Initialize($MetaFrameWinFarmObject)
  12.  
  13. # Getting Policies that Match Name and Loading Data
  14. $pol = $mfarm.policies($MetaFrameUnknownObject) | ?{$_.Name -match $PolicyName}
  15. $pol | %{$_.LoadData($true)}
  16. $pol

Script To Create a New Citrix Policy

  1. # New-CitrixPolicy.ps1
  2. Param($Server,$PolicyName,$PolicyDescription)
  3. if(!$PolicyDescription){$PolicyDescription=$PolicyName)
  4. $type = [System.Type]::GetTypeFromProgID("MetaframeCOM.MetaframeFarm",$Server)
  5. $mfarm = [system.Activator]::CreateInstance($type)
  6. $mfarm.Initialize(1)
  7. $NewPolicy = $mfarm.CreatePolicy(19,$PolicyName,$PolicyDescription)

Script To Remove a Citrix Policy

  1. # Remove-CitrixPolicy.ps1
  2. Param($Server,$PolicyName = $(throw ‘$PolicyName is Required’),[switch]$whatif)
  3.  
  4. # Enums in Use
  5. $MetaFrameUnknownObject = 0
  6. $MetaFrameWinFarmObject = 1
  7.  
  8. # Getting Farm Object
  9. $type = [System.Type]::GetTypeFromProgID("MetaframeCOM.MetaframeFarm",$Server)
  10. $mfarm = [system.Activator]::CreateInstance($type)
  11. $mfarm.Initialize($MetaFrameWinFarmObject)
  12.  
  13. # Getting Policies that Match Name and Loading Data
  14. $policies = $mfarm.policies($MetaFrameUnknownObject) | ?{$_.Name -eq $PolicyName}
  15. foreach($pol in $policies)
  16. {
  17.     if($whatif){Write-Host " What if: Performing operation `"Delete`" on Target `"$($pol.Name)`". " -foreground yellow}
  18.     else{Write-Host " - Deleting $($pol.Name)";$pol.Delete()}
  19. }

Exchange: Get-LogonStatistics (Return Info)

  1.   TypeName: Microsoft.Exchange.Data.Mapi.LogonStatistics
  2.  
  3. Name                     MemberType Definition
  4. —-                     ———- ———-
  5. AdapterSpeed             Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  6. ClientIPAddress          Property   System.String ClientIPAddress {get;}
  7. ClientMode               Property   Microsoft.Exchange.Data.Mapi.ClientMode ClientMode {get;}
  8. ClientName               Property   System.String ClientName {get;}
  9. ClientVersion            Property   System.String ClientVersion {get;}
  10. CodePage                 Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  11. CurrentOpenAttachments   Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  12. CurrentOpenFolders       Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  13. CurrentOpenMessages      Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  14. DatabaseName             Property   System.String DatabaseName {get;}
  15. FolderOperationCount     Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  16. FullMailboxDirectoryName Property   System.String FullMailboxDirectoryName {get;}
  17. FullUserDirectoryName    Property   System.String FullUserDirectoryName {get;}
  18. HostAddress              Property   System.String HostAddress {get;}
  19. Identity                 Property   Microsoft.Exchange.Data.Mapi.MailboxId Identity {get;}
  20. IsValid                  Property   System.Boolean IsValid {get;}
  21. LastAccessTime           Property   System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, …
  22. Latency                  Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  23. LocaleID                 Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  24. LogonTime                Property   System.Nullable`1[[System.DateTime, mscorlib, Version=2.0.0.0, Culture=neutral, …
  25. MACAddress               Property   System.String MACAddress {get;}
  26. MessagingOperationCount  Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  27. OriginatingServer        Property   Microsoft.Exchange.Data.Fqdn OriginatingServer {get;}
  28. OtherOperationCount      Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  29. ProgressOperationCount   Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  30. RPCCallsSucceeded        Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  31. ServerName               Property   System.String ServerName {get;}
  32. StorageGroupName         Property   System.String StorageGroupName {get;}
  33. StreamOperationCount     Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  34. TableOperationCount      Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  35. TotalOperationCount      Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  36. TransferOperationCount   Property   System.Nullable`1[[System.UInt32, mscorlib, Version=2.0.0.0, Culture=neutral, Pu…
  37. UserName                 Property   System.String UserName {get;}
  38. Windows2000Account       Property   System.String Windows2000Account {get;}

Exchange: Get-MailboxCalendarConfiguration(Return Info)

  1.   TypeName: Microsoft.Exchange.InfoWorker.CalendarSettings.CalendarConfiguration
  2.  
  3. Name                                MemberType Definition
  4. —-                                ———- ———-
  5. AddAdditionalResponse               Property   System.Boolean AddAdditionalResponse {get;set;}
  6. AdditionalResponse                  Property   System.String AdditionalResponse {get;set;}
  7. AddNewRequestsTentatively           Property   System.Boolean AddNewRequestsTentatively {get;set;}
  8. AddOrganizerToSubject               Property   System.Boolean AddOrganizerToSubject {get;set;}
  9. AllBookInPolicy                     Property   System.Boolean AllBookInPolicy {get;set;}
  10. AllowConflicts                      Property   System.Boolean AllowConflicts {get;set;}
  11. AllowRecurringMeetings              Property   System.Boolean AllowRecurringMeetings {get;set;}
  12. AllRequestInPolicy                  Property   System.Boolean AllRequestInPolicy {get;set;}
  13. AllRequestOutOfPolicy               Property   System.Boolean AllRequestOutOfPolicy {get;set;}
  14. AutomateProcessing                  Property   Microsoft.Exchange.Data.Storage.CalendarProcessingFlags AutomateProce…
  15. BookingWindowInDays                 Property   System.Int32 BookingWindowInDays {get;set;}
  16. BookInPolicy                        Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Dat
  17. ConflictPercentageAllowed           Property   System.Int32 ConflictPercentageAllowed {get;set;}
  18. DefaultReminderTime                 Property   System.Int32 DefaultReminderTime {get;set;}
  19. DeleteAttachments                   Property   System.Boolean DeleteAttachments {get;set;}
  20. DeleteComments                      Property   System.Boolean DeleteComments {get;set;}
  21. DeleteNonCalendarItems              Property   System.Boolean DeleteNonCalendarItems {get;set;}
  22. DeleteSubject                       Property   System.Boolean DeleteSubject {get;set;}
  23. DisableReminders                    Property   System.Boolean DisableReminders {get;set;}
  24. EnableResponseDetails               Property   System.Boolean EnableResponseDetails {get;set;}
  25. EnforceSchedulingHorizon            Property   System.Boolean EnforceSchedulingHorizon {get;set;}
  26. ForwardRequestsToDelegates          Property   System.Boolean ForwardRequestsToDelegates {get;set;}
  27. Identity                            Property   Microsoft.Exchange.Data.ObjectId Identity {get;set;}
  28. MaximumConflictInstances            Property   System.Int32 MaximumConflictInstances {get;set;}
  29. MaximumDurationInMinutes            Property   System.Int32 MaximumDurationInMinutes {get;set;}
  30. OrganizerInfo                       Property   System.Boolean OrganizerInfo {get;set;}
  31. ProcessExternalMeetingMessages      Property   System.Boolean ProcessExternalMeetingMessages {get;set;}
  32. RemoveForwardedMeetingNotifications Property   System.Boolean RemoveForwardedMeetingNotifications {get;set;}
  33. RemoveOldMeetingMessages            Property   System.Boolean RemoveOldMeetingMessages {get;set;}
  34. RemovePrivateProperty               Property   System.Boolean RemovePrivateProperty {get;set;}
  35. RequestInPolicy                     Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Dat
  36. RequestOutOfPolicy                  Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Dat
  37. ResourceDelegates                   Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Dat
  38. ScheduleOnlyDuringWorkHours         Property   System.Boolean ScheduleOnlyDuringWorkHours {get;set;}
  39. TentativePendingApproval            Property   System.Boolean TentativePendingApproval {get;set;}

Exchange: Get-MailUser(Return Info)

  1.   TypeName: Microsoft.Exchange.Data.Directory.Management.MailUser
  2.  
  3. Name                               MemberType Definition
  4. —-                               ———- ———-
  5. AcceptMessagesOnlyFrom             Property   Microsoft.Exchange.Data.MultiValuedProperty`1[[Microsoft.Exchange.Data
  6. AcceptMessagesOnlyFromDLMembers    Property