Continuing from the previous post, during the second part of the demo I introduced the details on how to interact with other .net objects, along with some of the PowerShell glue that makes manipulating Exchange objects so powerful:
[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dl = Get-DistributionGroup Homelandc*[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dl Name DisplayName GroupType PrimarySmtpAddress ---- ----------- --------- ------------------ HomeLandComission HomeLandComission Universal HomeLandComissio... [PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dl | fl GroupType : UniversalSamAccountName : HomeLandComissionExpansionServer : ReportToManagerEnabled : FalseReportToOriginatorEnabled : TrueSendOofMessageToOriginatorEnabled : FalseManagedBy : AcceptMessagesOnlyFrom : {}AcceptMessagesOnlyFromDLMembers : {}AddressListMembership : {Default Global Address List, All Groups}Alias : HomeLandComissionOrganizationalUnit : e12dom.local/CongressCustomAttribute1 : CustomAttribute10 : CustomAttribute11 : CustomAttribute12 : CustomAttribute13 : CustomAttribute14 : CustomAttribute15 : CustomAttribute2 : CustomAttribute3 : CustomAttribute4 : CustomAttribute5 : CustomAttribute6 : CustomAttribute7 : CustomAttribute8 : CustomAttribute9 : DisplayName : HomeLandComissionEmailAddresses : {SMTP:HomeLandComission@uscongress.gov}GrantSendOnBehalfTo : {}HiddenFromAddressListsEnabled : FalseLegacyExchangeDN : /o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=HomeLandComissionMaxSendSize : unlimitedMaxReceiveSize : unlimitedPoliciesIncluded : {{B491E897-701A-4577-AC00-A3244FAC7BA2},{26491CFC-9E50-4857-861B-0CB8DF22B5D7}}PoliciesExcluded : {}EmailAddressPolicyEnabled : TruePrimarySmtpAddress : HomeLandComission@uscongress.govRecipientType : MailUniversalDistributionGroupRecipientTypeDetails : MailUniversalDistributionGroupRejectMessagesFrom : {}RejectMessagesFromDLMembers : {}RequireSenderAuthenticationEnabled : TrueSimpleDisplayName : UMDtmfMap : {}WindowsEmailAddress : HomeLandComission@uscongress.govIsValid : TrueOriginatingServer : e12.e12dom.localExchangeVersion : 0.1 (8.0.535.0)Name : HomeLandComissionDistinguishedName : CN=HomeLandComission,OU=Congress,DC=e12dom,DC=localIdentity : e12dom.local/Congress/HomeLandComissionGuid : 501492ee-246c-410d-a965-a22f9b1db504ObjectCategory : e12dom.local/Configuration/Schema/GroupObjectClass : {top, group}WhenChanged : 2/7/2007 8:01:08 AMWhenCreated : 2/7/2007 8:00:41 AM [PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dladdr = $dl.PrimarySmtpAddress.ToString()[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dladdrHomeLandComission@uscongress.gov[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dls = Get-DistributionGroup[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dls Name DisplayName GroupType PrimarySmtpAddress ---- ----------- --------- ------------------ Senate Senate Universal Senate@uscongres...House House Universal House@uscongress...HomeLandComission HomeLandComission Universal HomeLandComissio... [PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dls[0] Name DisplayName GroupType PrimarySmtpAddress ---- ----------- --------- ------------------ Senate Senate Universal Senate@uscongres... [PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$smtpclient = new-object System.Net.Mail.SmtpClient $server, 587[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$smtpclient Host : E12Port : 587UseDefaultCredentials : FalseCredentials : Timeout : 100000ServicePoint : System.Net.ServicePointDeliveryMethod : NetworkPickupDirectoryLocation : EnableSsl : FalseClientCertificates : {} [PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$cred = get-credential e12dom\exadmin[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$cred UserName Password-------- --------e12dom\exadmin System.Security.SecureString [PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$smtpclient.Credentials = $cred.GetNetworkCredential()[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$smtpclient.Send("exadmin@uscongress.gov", $dladdr, "Welcome", "New list created.")[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>get-queue -server $server Identity DeliveryType Status MessageCount NextHopDomain -------- ------------ ------ ------------ ------------- e12\Submission Undefined Sus... 7 Submission [PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>get-message -queue $server\submission Identity FromAddress Status Queue Subject -------- ----------- ------ ----- ------- e12\Submissi... GaryAckerman... Ready e12\Submission Presenting M...e12\Submissi... RickSantorum... Ready e12\Submission The Amendmen...e12\Submissi... NeilAbercrom... Ready e12\Submission Senate Commi...e12\Submissi... SusaCollins@... Ready e12\Submission Senate Actio...e12\Submissi... KenSalazar@u... Ready e12\Submission Senate Actio...e12\Submissi... HarrReid@usc... Ready e12\Submission Signatures o...e12\Submissi... exadmin@usco... Ready e12\Submission Welcome [PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>while($true) { cls; get-message -queue $server\submission | ft; sleep 1; } Identity FromAddress Status Queue Subject -------- ----------- ------ ----- ------- e12\Submissi... GaryAckerman... Ready e12\Submission Presenting M...e12\Submissi... RickSantorum... Ready e12\Submission The Amendmen...e12\Submissi... NeilAbercrom... Ready e12\Submission Senate Commi...e12\Submissi... SusaCollins@... Ready e12\Submission Senate Actio...e12\Submissi... KenSalazar@u... Ready e12\Submission Senate Actio...e12\Submissi... HarrReid@usc... Ready e12\Submission Signatures o...e12\Submissi... exadmin@usco... Ready e12\Submission Welcome Identity FromAddress Status Queue Subject -------- ----------- ------ ----- ------- e12\Submissi... GaryAckerman... Ready e12\Submission Presenting M...e12\Submissi... RickSantorum... Ready e12\Submission The Amendmen...e12\Submissi... NeilAbercrom... Ready e12\Submission Senate Commi...e12\Submissi... SusaCollins@... Ready e12\Submission Senate Actio...e12\Submissi... KenSalazar@u... Ready e12\Submission Senate Actio...e12\Submissi... HarrReid@usc... Ready e12\Submission Signatures o...e12\Submissi... exadmin@usco... Ready e12\Submission Welcome Identity FromAddress Status Queue Subject -------- ----------- ------ ----- ------- e12\Submissi... GaryAckerman... Ready e12\Submission Presenting M...e12\Submissi... RickSantorum... Ready e12\Submission The Amendmen...e12\Submissi... NeilAbercrom... Ready e12\Submission Senate Commi...e12\Submissi... SusaCollins@... Ready e12\Submission Senate Actio...e12\Submissi... KenSalazar@u... Ready e12\Submission Senate Actio...e12\Submissi... HarrReid@usc... Ready e12\Submission Signatures o...e12\Submissi... exadmin@usco... Ready e12\Submission Welcome [PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>get-alias cls CommandType Name Definition ----------- ---- ---------- Alias cls Clear-Host
[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dl = Get-DistributionGroup Homelandc*[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dl
Name DisplayName GroupType PrimarySmtpAddress ---- ----------- --------- ------------------ HomeLandComission HomeLandComission Universal HomeLandComissio...
[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dl | fl
GroupType : UniversalSamAccountName : HomeLandComissionExpansionServer : ReportToManagerEnabled : FalseReportToOriginatorEnabled : TrueSendOofMessageToOriginatorEnabled : FalseManagedBy : AcceptMessagesOnlyFrom : {}AcceptMessagesOnlyFromDLMembers : {}AddressListMembership : {Default Global Address List, All Groups}Alias : HomeLandComissionOrganizationalUnit : e12dom.local/CongressCustomAttribute1 : CustomAttribute10 : CustomAttribute11 : CustomAttribute12 : CustomAttribute13 : CustomAttribute14 : CustomAttribute15 : CustomAttribute2 : CustomAttribute3 : CustomAttribute4 : CustomAttribute5 : CustomAttribute6 : CustomAttribute7 : CustomAttribute8 : CustomAttribute9 : DisplayName : HomeLandComissionEmailAddresses : {SMTP:HomeLandComission@uscongress.gov}GrantSendOnBehalfTo : {}HiddenFromAddressListsEnabled : FalseLegacyExchangeDN : /o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=HomeLandComissionMaxSendSize : unlimitedMaxReceiveSize : unlimitedPoliciesIncluded : {{B491E897-701A-4577-AC00-A3244FAC7BA2},{26491CFC-9E50-4857-861B-0CB8DF22B5D7}}PoliciesExcluded : {}EmailAddressPolicyEnabled : TruePrimarySmtpAddress : HomeLandComission@uscongress.govRecipientType : MailUniversalDistributionGroupRecipientTypeDetails : MailUniversalDistributionGroupRejectMessagesFrom : {}RejectMessagesFromDLMembers : {}RequireSenderAuthenticationEnabled : TrueSimpleDisplayName : UMDtmfMap : {}WindowsEmailAddress : HomeLandComission@uscongress.govIsValid : TrueOriginatingServer : e12.e12dom.localExchangeVersion : 0.1 (8.0.535.0)Name : HomeLandComissionDistinguishedName : CN=HomeLandComission,OU=Congress,DC=e12dom,DC=localIdentity : e12dom.local/Congress/HomeLandComissionGuid : 501492ee-246c-410d-a965-a22f9b1db504ObjectCategory : e12dom.local/Configuration/Schema/GroupObjectClass : {top, group}WhenChanged : 2/7/2007 8:01:08 AMWhenCreated : 2/7/2007 8:00:41 AM
[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dladdr = $dl.PrimarySmtpAddress.ToString()[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dladdrHomeLandComission@uscongress.gov[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dls = Get-DistributionGroup[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dls
Name DisplayName GroupType PrimarySmtpAddress ---- ----------- --------- ------------------ Senate Senate Universal Senate@uscongres...House House Universal House@uscongress...HomeLandComission HomeLandComission Universal HomeLandComissio...
[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$dls[0]
Name DisplayName GroupType PrimarySmtpAddress ---- ----------- --------- ------------------ Senate Senate Universal Senate@uscongres...
[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$smtpclient = new-object System.Net.Mail.SmtpClient $server, 587[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$smtpclient
Host : E12Port : 587UseDefaultCredentials : FalseCredentials : Timeout : 100000ServicePoint : System.Net.ServicePointDeliveryMethod : NetworkPickupDirectoryLocation : EnableSsl : FalseClientCertificates : {}
[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$cred = get-credential e12dom\exadmin[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$cred
UserName Password-------- --------e12dom\exadmin System.Security.SecureString
[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$smtpclient.Credentials = $cred.GetNetworkCredential()[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>$smtpclient.Send("exadmin@uscongress.gov", $dladdr, "Welcome", "New list created.")[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>get-queue -server $server
Identity DeliveryType Status MessageCount NextHopDomain -------- ------------ ------ ------------ ------------- e12\Submission Undefined Sus... 7 Submission
[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>get-message -queue $server\submission
Identity FromAddress Status Queue Subject -------- ----------- ------ ----- ------- e12\Submissi... GaryAckerman... Ready e12\Submission Presenting M...e12\Submissi... RickSantorum... Ready e12\Submission The Amendmen...e12\Submissi... NeilAbercrom... Ready e12\Submission Senate Commi...e12\Submissi... SusaCollins@... Ready e12\Submission Senate Actio...e12\Submissi... KenSalazar@u... Ready e12\Submission Senate Actio...e12\Submissi... HarrReid@usc... Ready e12\Submission Signatures o...e12\Submissi... exadmin@usco... Ready e12\Submission Welcome
[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>while($true) { cls; get-message -queue $server\submission | ft; sleep 1; }
[PS] C:\Program Files\Microsoft\Exchange Server\Scripts\TR4>get-alias cls
CommandType Name Definition ----------- ---- ---------- Alias cls Clear-Host
In the next post, I'll cover the third part of the demo... using help and "finding things" in PowerShell. as well as introducing the concept of Exchange identity and filters (both traditional PowerShell client-side and Exchange's own server-side filters).