MVP - Most Valuable Professional
rss

Just can't get enough of IT

This blog is about mostly anything in IT. But the primary focuses are Microsoft Technologies like Exchange, Office 365, Azure and Cloud Security.

Description

This script helps you to monitor message flow in a NoSpamProxy environment using a PRTG custom PowerShell sensor.

This custom sensor contains the following five channels:

  • In/Out Success
    Total of inbound/outbound successfully delivered messages over the last X minutes
  • Inbound Success
    Number of inbound successfully delivered messages over the last X minutes
  • Outbound Success
    Number of outbound successfully delivered messages over the last X minutes
  • Inbound PermanentlyBlocked
    Number of inbound blocked messages over the last X minutes
  • Outbound DeliveryPending
    Number of outbound messages with pending delivery over the last X minutes

The default interval is five minutes. But you might want to change the interval as needed for your environment.

These channels can easily be modified and additional channels can be added as well.

NoSpamProxy is a powerful anti-spam gateway solution providing additonal functionality like centralized S/MIME and PGP encryption for on-premises and Exchange Online deployments.

PRTG is a industry standard system monitoring solution.

Examples

The script itself does not take any additional attributes and is called by PRTG probe.

To verify your setup, you easily execute the PowerShell script. It returns a Xml result.

PS C:\Scripts> .\Get-NoSpamProxyPrtgData.ps1
<prtg>
  <result>
    <channel>In/Out Success</channel>
    <value>0</value>
    <unit>Count</unit>
  </result>
  <result>
    <channel>Inbound Success</channel>
    <value>0</value>
    <unit>Count</unit>
  </result>
  <result>
    <channel>Outbound Success</channel>
    <value>0</value>
    <unit>Count</unit>
  </result>
  <result>
    <channel>Inbound PermanentlyBlocked</channel>
    <value>0</value>
    <unit>Count</unit>
  </result>
  <result>
    <channel>Inbound DeliveryPending</channel>
    <value>0</value>
    <unit>Count</unit>
    <limitmaxwarning>10</limitmaxwarning>
    <limitmode>1</limitmode>
  </result>
</prtg>

The PRTG channel configuration

PRTG channel using a custom sensor

The following screenshot shows PRTG example graphs.

NoSpamProxy monitored using a PRTG custom sensor

Notes

The custom PowerShell script must be saved to the following location of the PRTG probe:

[INSTALLPATH]\PRTG Network Monitor\Custom Sensors\EXEXML

Ensure to have the PowerShell execution policy set correctly. Otherwise the PRTG service won't be able to execute the PowerShell script.

Ensure that the service account used by the PRTG probe has access to the script and is a member of the NoSpamProxy Monitoring Administrators security group.

Version History

  • 1.0, Initial community release

Links

Additional Credits

Additional credits go to Brian Addicks, https://github.com/brianaddicks/prtgshell

Follow

Read More »

Exchange Server 2013Exchange Server 2016Description

This script imports multiple PST files located in a single directory into a user mailbox or a user mailbox archive. 

Due to some filename limitations of the New-MailboxImportRequest cmdlet in reagards to the UNC path, the PST filenames are sanitized. Any unsupported (unwanted) character is removed. You can modify the replacement function as needed. This might be necessary as the PST filenames can be used as target folder names during import.

Original filenames:

Filenames before renaming

Renamed filenames:

Filenames after renaming

When using the FilenameAsTargetFolder switch each PST file is imported into a separate target folder.

PST filenames used as target folder

After successfully importing a PST file, the PST can optionally be renamed to .imported. This simplifies a re-run of the script in the case that you a lot of PST files for a user or a large number of files as part of archive solution offboarding process.

NOTE:
This script utilizes the GlobalFunctions PowerShell module for logging. Please prepare your system for the use of the GlobalFunctions module first.

Steps performed:

  1. Sanitize PST filenames
  2. Create new mailbox import request
  3. Monitor status of created import request
    1. When still running, continue monitoring status
    2. When successfully finished, save import request statistics report to log file and continue with next PST
    3. Rename the imported PST file to .imported
    4. When aborted, continue with next PST or exit script

Examples

 

Example PowerShell Output

.\Start-MailboxImport.ps1 -Identity JohnDoe -Archive -FilePath "\\ROBERTKWEISS\e$\PSTImport\JohnDoe" -FilenameAsTargetFolder -BadItemLimit 10 -ContinueOnError -SecondsToWait 90
Note: Script will wait 90s between each status check!
Create New-MailboxImportRequest for user: JohnDoe and file: \\ROBERTKWEISS\e$\PSTImport\JohnDoe\Myoldarchive.pst into the archive. Targetfolder:"Myoldarchive".
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: InProgress
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: InProgress
Waiting for import JohnDoe-Myoldarchive.pst to be completed. Status: InProgress
Import request JohnDoe-Myoldarchive.pst completed successfully.
Import request JohnDoe-Myoldarchive.pst deleted.
Create New-MailboxImportRequest for user: JohnDoe and file: \\ROBERTKWEISS\e$\PSTImport\JohnDoe\Myoldarchive1.pst into the archive. Targetfolder:"Myoldarchive1".
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: Queued
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: InProgress
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: InProgress
Waiting for import JohnDoe-Myoldarchive1.pst to be completed. Status: InProgress
Import request JohnDoe-Myoldarchive1.pst completed successfully.
Import request JohnDoe-Myoldarchive1.pst deleted.
Script finished.

Version History

  • 1.0, Initial community release
  • 1.1, log will now be stored in a subfolder (name equals Identity)
  • 1.2, PST file renaming added
  • 1.3, Module ActiveDirectory removed
  • 1.4, AcceptLargeDatalost would now be added if BadItemLimit is over 51
  • 1.5, Parameter IncludeFodlers added
  • 1.6, Parameter TargetFolder added
  • 1.7, Parameter Recurse added
  • 1.8, PST file rename after successful import added

Links

Last updated: 2017-02-02

Follow me

Additional Note

This Powershell script has been optimized using the ISESteroids™ add-on. Learn more about ISESteroidshere.

 

 

Read More »

Issue

When a SharePoint list is being email enabled the Central Administration service accounts creates a new contact object in Active Directory. The object attributes configured by SharePoint are fully sufficient for the Exchange transport routing engine when addressed directly. Which means that a new email sent to the email address of the email enabled list is routed to SharePoint.

However, when the contact has been added to an Exchange distribution list, the Exchange routing engine will not resolve the contact object. You won't see any information on this situation in the Exchange message tracking log.

Solution

The solution is pretty simple but require the intervention of an Exchange administrator. Execute the following on the mail contact object:

Get-Contact CONTACTNAME | Set-Contact

The use of Set-Contact without any additonal parameters forces Exchange to validate the currently exisiting attributes and the follow four attributes:

  • legacyExchangeDN
  • msExchUMDtmfMap
  • proxyAddresses
  • textEncodedORAddress

Now the mail contact object is a fully routable member or the Exchange organization.

Blame it on SharePoint, not Exchange.

Enjoy Exchange.

 

Read More »

Description

This script fetches the disk volume (Win32_Volume) information via WMI and shows the results in the PowerShell command line window. Optionally, you can have the report sent as an Html email to a recipient of your choice.

The switch -AllExchangeServer simplifies gathering the disk volume information across all Exchange servers in your environment.

The following screenshot shows the command line output when using

.\Get-Diskpace.ps1 -ComputerName MYSERVER

Get-Diskspace command line output

The following screenshot shows an example of the html email output when using

.\Get-Diskpace.ps1 -ComputerName MYSERVER -SendMail -MailFrom postmaster@sedna-inc.com -MailTo exchangeadmin@sedna-inc.com -MailServer mail.sedna-inc.com

Get-Diskspace email example

Examples

# EXAMPLE 1
# Get disk information from computer MYSERVER in MB

Get-Diskpace.ps1 -ComputerName MYSERVER -Unit MB

# EXAMPLE 2
# Get disk information from all Exchange servers and send html email

Get-Diskpace.ps1 -AllExchangeServer -SendMail -MailFrom postmaster@sedna-inc.com -MailTo exchangeadmin@sedna-inc.com -MailServer mail.sedna-inc.com

Version History

  • 1.0, Initial community release
  • 1.1,  Email reports added
  • 1.11, Send email issue fixed
  • 1.12, PowerShell hygiene applied

Links

Follow

Additional Note

This Powershell script has been optimized using the ISESteroids™ add-on. Learn more about ISESteroids™ here.

Read More »

Troubleshooting Outlook connectivity issues with Office 365 is tricky. Administrators can use two valuable tools provided by Microsoft to identify and even fix client related connectivity issues.

1. Outlook Account Test Page

Start with the Outlook account problems test page in the Office 365 portal. You need to log on as the Office 365 user having issues.

SARA Server

The site tests for the following:

  • You cannot create an Outlook profile or you are asked for your password repeatedly when creating one.
  • You cannot connect to your mailbox or receive an error that a mailbox cannot be found.
  • You are getting invalid license errors or messages that Office cannot verify the license.

If no issues are identified after you've logged on to Office 365, move to the next step.

2. Support and Recovery Assistant

The Microsoft Support and Recovery Assistant (SARA) for Office 365 is click to run tool that is installed and executed locally.

Support and Recovery Assistant (SARA)

These two tools fix most of the Outlook connectivity issues you are facing as an Office 365 administrator.

Links

 

Enjoy Office 365

Read More »