Friday, May 25, 2018

DL-members-export script


Get-ADGroupMember -Identity "GroupName" | Get-ADUser -Properties Displayname,Emailaddress,Title |Select samAccountName,Displayname,EmailAddress,Title

Get-DistributionGroup DLname@domain.com | select Displayname, Primarysmtpaddress |Export-CSV c:\DLMembersList.csv

Get-DistributionGroup -Identity DLNAME | Get-DistributionGroupMember |Select Displayname, primarysmtpaddress,name |Export-CSV c:\Members.csv

import-csv C:\user.csv | foreach-object {Get-Mailbox -Identity $_.name | select Displayname, Primarysmtpaddress |Export-CSV c:\UserEmail.csv

 Get-ADGroupMember -Identity  "GroupName" | select Samaccountname,Displayname,name

Get-ADGroupMember -Identity "GroupName" |Select samAccountName,Name,@{Name="DisplayName";Expression={(Get-ADUser $_.distinguishedName Properties Displayname).Displayname}},@{Name="Title";Expression={(Get-ADUser $_.distinguishedName -Properties Title).title}}

Get-Mailbox -Identity  MailboxName | select Displayname, Primarysmtpaddress

Get-ADGroupMember -Identity "GroupName" | Get-ADUser -Properties Displayname,Title |Select samAccountName,Name,Displayname,Primarysmtpaddress,Title


Get Message tracking


Import-csv c:\slist.csv | foreach-object {Get-MessageTrackingLog -server $_.Name -Sender "sendername@domain.com"  -start "12/12/2016 01:00AM" -End "06/12/2016 2:00PM" |Select-Object Recipients, Sender, Timestamp, MessageSubject, MessageId, EventId } | Export-CSV c:\tracklog.csv

Import-csv c:\slist.csv | foreach-object {Get-MessageTrackingLog -server $_.Name -Recipients:sendername@domain.com  -start "06/24/2015 01:00AM" -End "06/26/2015 12:00PM" |Select-Object Recipients, Sender, Timestamp, MessageSubject,EventID} | Export-CSV c:\tracklog.csv

Import-csv c:\slist.csv | foreach-object {Get-MessageTrackingLog -server $_.Name -Recipients:cris.tuft@lpl.com -Sender "Sendername@domain.com" -start "20/10/2015 01:00AM" -End "15/09/2015 23:50PM" | Select-Object Recipients, Sender, Timestamp, MessageSubject} | Export-CSV c:\dispute.csv

Import-csv c:\slist.csv | foreach-object {Get-MessageTrackingLog -server $_.Name -Sender "username@domain.com" -start "10/20/2015 01:00AM" -End "10/20/2015 23:50PM" -MessageSubject “Grade Report Fall 2017” | Select-Object Recipients, Sender, Timestamp, MessageSubject} | Export-CSV c:\tracklog.csv

Get-MessageTrace  -Sender "email@domain.com" -Recipients:email@domain.edu -start “12/12/2017 12:00 AM” -EventID Receive | Select ServerHostName,Timestamp,Recipients

Get-MessageTrace -RecipientAddress <user’s address> -StartDate 11/07/2017 -EndDate 11/14/2017 | Format-list -Property Received,SenderAddress,Status,MessageTraceId

Get-MessageTrace -Sender "email@domain.edu"  -MessageSubject “Grade Report Fall 2017”  -start “01/11/2018 12:00 AM” -End “01/11/2018 11:59 PM”| Get-MessageTraceDetail

Get-MessageTrace StartDate 01/11/2018 -EndDate 01/11/2018 -PageSize 10000 | Where {$_.Subject -like "*Grade Report Fall 201*"} | ft -Wrap

Get-MessageTrace -Sender "email@domain.edu" -start “01/11/2018 8:00 AM” -End “01/11/2018 11:59 PM” |Where {$_.Subject -like "*Grade Report Fall*"} | Format-list -Property Received,SenderAddress,Status,subject >>c:\Mtracklog.txt

Get-TransportServer | get-messagetrackinglog -EventID “RECEIVE” -Start “6/10/2015 2:30:00 PM” -End “6/10/2015 4:00:00 PM” -ResultSize Unlimited | Select EventId,Source,Sender,ServerHostName,{$_.recipients},MessageId,MessageSubject,ClientIp,TimeStamp | Export-Csv “D:\RepCas1\Example.Csv”

Get-TransportServer |Get-MessageTrackingLog -Start (Get-Date).Addhours(-48) `-End (Get-Date) `-EventId send `-Sender “email@domain.com”` | Select-Object Recipients,timestamp,eventid `| Where {($_.Recipients -match ‘@hotmail.com’)}

get-messagetrackinglog -Sender “email@domain.com” -EventID “SEND” -Start “4/5/2014 8:00:00 AM” -End “4/5/2014 12:00:00 PM” | Where-Object {$_.recipients -like “*gmail.com”} | Export-csv C:\export.csv

Get-MessageTrace -Sender "email@domain.edu" -start “01/09/2018 12:00 AM” -End “01/11/201
8 11:59 PM” |Where {$_.Subject -like "*Grade Report Fall*"} | Format-list -Property Received,SenderAddress,Status,subject

Thursday, May 24, 2018

Connect Powershell Session - Exchange


Get-ExecutionPolicy

Set-ExecutionPolicy RemoteSigned

Set-ADServerSettings -ViewEntireForest $true

$UserCredential = Get-Credential

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://exchangeserver.domain.com/PowerShell/ -Authentication Kerberos -Credential $UserCredential

Import-PSSession $Session

Get-mailbox -identity Rakesh

Server UPTime Report



Get-ExchangeServer|%{
    if(Test-Connection $_.name -Count 1 -Quiet) {
        $OS = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $_.name         

        $uptime = (Get-Date) - $OS.ConvertToDateTime($OS.LastBootUpTime)           

        $report += "$($_.name) has been up for {0} days, {1} hours and {2} minutes." `
        -f $uptime.Days, $uptime.Hours, $uptime.Minutes + "`r"
    }
}

Send-MailMessage -To rakesh.chaturvedi@domain.com -From ExchangeServerReport@domain.com -Subject "Exchange Server Uptime" -Body $report -SmtpServer "SMTP-Server.domain.com"

Sunday, March 29, 2015

Patching Procedure and Verification Tests-Exchange

Patching Procedure

1.   Login to the server

2.   For Windows Patching

1.   Go to start à All Programs à Windows Update



             2. Click on the blue where it says numbers of updates are available.



             3. Ensure that there is no Exchange rollup/hotfix/ServicePack, if there is a rollup checked then UNCHECK the Exchange rollup/hotfix/ServicePack

             4. Then Click ok and then click on Install Updates

             5. Once completed click finished and restart the server.
 
            6. Once restart the server again check updates, if it available new update, click Install
           
             7. Once completed click finished and restart the server.
            
              8. Verify the all services running working fine.
 
 
Verification Tests

Run the following tests on all Exchange servers

1.Get-queue | ? {$_.MessageCount –gt 5}

Queue should be less than 10 mails

2.Test-ServiceHealth

No service should show in ServiceNotRunning under any role.

        

                 3. Test-ReplactionHealth

                                         Replication should show Passed for all

                 4. Test-OutlookWebServices

                                         No Error should come except the Id 1104

                 5. Test-Mapiconnectivity

                                         This should come success

                 6. Get-mailboxdatabasecopystatus **

                                         Databases should show healthy and mounted.

                 7. Login to OWA using test account and test send and receive of the email.

Active Directory Script

The following table lists all the cmdlets that are available in this release of the Active Directory module in Windows Server 2008 R2.
PS C:\> Get-ADDomain

Retrieve properties for the Administrators group:
PS C:\> Get-ADGroup -Identity Administrators | Get-Member

Retrieve ALL properties for the Administrators group:
PS C:\> Get-ADGroup -Identity Administrators -Properties *| Get-Member

Retrieve the extended properties "Organization" and the default properties for the user: Rakeshc:
PS C:\> GetADUser -Identity rakeshc –Properties Organization

Retrieve the properties with LDAP display names of "hcluser" and "messaging", for the user: rakeshc:
PS C:\> GetADUser -Identity rakeshc -Properties hcluser, messaging |Get-Member

PS C:\> New-ADGroup -Server DC1.msexchangequery.com -Path "OU=Exchange,DC=dc" -Name AccountLeads -GroupScope DomainLocal -GroupCategory Distribution
PS C:\> New-ADGroup -Name "Lync Admins" -SamAccountName RODCAdmins -GroupCategory Security -GroupScope Global -DisplayName "Lync Administrators" -Path "CN=Exchange,DC=dc,DC=Com" -Description "Members of this group are Lync Administrators"

Remove the group that has samAccountName 'messaging':
PS C:\> remove-adgroup messaging

Get all groups whose name starts with 'messaging' and remove them:
PS C:\> get-adgroup -filter 'Name -like "messaging"' | remove-adgroup

Remove a group, the cmdlet will prompt for a name:
PS C:\> remove-adgroup

PS C:\> Get-ADGroup lyncAdmin -Properties Description

Adds the user accounts with SamAccountNames User01 and User02 to the group messaging:
PS C:\> Add-ADGroupMember messaging User1,User2

Get all the members of the administrators groups using the default behavior:
PS C:\> get-adgroupmember -Identity "messaging"

Remove the user with samAccountName 'FredB' from the group 'messaging':
PS C:\> remove-adgroupmember -Identity "messaging" -Member "rakeshc"

Remove the users with samAccountNames 'administrator' and 'rakeshc' from the group 'messaging' and don't ask to confirm:
PS C:\> remove-adgroupmember "messaging" "administrator","rakeshc" -Confirm:$false

Retrieve all the groups the administrator is a member of:
PS C:\> get-adprincipalgroupmembership -Identity Administrator

PS C:\> Get-ADUser rakeshc

PS C:\> Get-ADUser –Filter {Surname –eq “chaturvedi”}

PS C:\> Get-ADUser –Filter {GivenName –eq “Rakesh”}

PS C:\> Get-ADPrincipalGroupMembership –Identity rakeshc

PS C:\> Remove-ADGroupMember –Identity “Group Name” –Member  “rakeshc”

PS C:\> Get-ADPrincipalGroupMembership –Identity khess

PS C:\> New-ADUser –Name “Rakesh Chaturvedi” –GivenName Rakesh –Surname Chaturvedi –UserPrincipalName rakeshc@msexchangequery.com –SamAccountName rakeshc

PS C:\> Get-ADUser rakeshc

PS C:\> Add-ADGroupMember CS-Administrator rakeshc

PS C:\> New-ADUser –Name “Rakesh Chaturvedi” –GivenName Rakesh –Surname Chaturvedi –UserPrincipalName rakeshc@msexchangequery.com –SamAccountName rakeshc –Enabled 1 –AccountPassword (Read-Host –AsSecureString “Password”)

PS C:\> Search-ADAccount –AccountDisabled –UserOnly |FT Name

PS C:\> Set-ADAccountPassword –Identity rakeshc –NewPassword (Read-Host –AsSecureString “New Password”) –OldPassword (Read-Host –AsSecureString “Old Password”)

PS C:\> Enable-ADAccount –Identity rakeshc

PS C:\> Search-ADAccount –AccountDisabled –UserOnly |FT Name

PS C:\> Search-ADAccount –LockedOut –UsersOnly |FT Name

PS C:\> Unlock-ADAccount –Identity rakeshc

PS C:\> Unlock-ADAccount –Identity (Read-Host “rakeshc”)

PS C:\> Disable-ADAccount –Identity rakeshc

PS C:\> Enable-ADAccount -Identity Rakeshc

PS C:\> Remove-ADUser rakeshc

PS C:\> Remove-ADUser rakeshc

PS C:\> Set-ADAccountPassword -Identity rakeshc
PS C:\> $newPassword = (Read-Host -Prompt "Provide New Password" -AsSecureString)

PS C:\> Set-ADAccountPassword -Identity JMarbles -NewPassword $newPassword –Reset

PS C:\> Set-ADAccountPassword -Identity JMarbles -OldPassword (ConvertTo-SecureString -AsPlainText "0ldPaZZw0rd" -Force) -NewPassword (ConvertTo-SecureString -AsPlainText "p@ssw0rd2" -Force)
PS C:\> Get-ADDomain “msexchangequery.com” –Server “DC1” –Credential “msexchangequery.com\Administrator”
PS C:\> Get-ADUser rakeshc –Server “Dc1” –Credential “msexchangequery.com\Administrator”
PS C:\> Add-ADComputerServiceAccount -Computer Computer1 -serviceAccount SvcAc1
PS C:\>  Add-ADComputerServiceAccount  -Computer Computer1 -serviceAccount SvcAc1,SvcAc2