Thomas Stensitzki is a leading technology consultant focusing on the Microsoft messaging and collaboration technologies and the owner of Granikos GmbH & Co. KG.
He is an MVP for Office Apps & Services since 2018.
Thomas is an MCT Regional Lead for Germany and delivers Microsoft Learning training courses for Office 365, Microsoft Teams, and Exchange Server.
He holds Master certifications as Microsoft Certified Solutions Master Messaging and as Microsoft Certified Master for Exchange Server 2010. These certifications make him a subject matter expert for any messaging topic related to Microsoft Exchange, Exchange Online, Microsoft 365, and hybrid configurations.
Follow Thomas: LinkedIn, Twitter
His sessions: https://sessionize.com/thomas-stensitzki
MVP Blog: https://blogs.msmvps.com/thomastechtalk Personal blog: http://justcantgetenough.granikos.eu Personal website: http://www.stensitzki.de Thomas' Tech Talk: youtube.com/ThomasStensitzki
Contact Thomas at thomas@mcsmemail.de
This script removes/disables HealthMailboxes that show an inconsistent error when querying monitoring mailboxes using
Get-Mailbox -Monitoring
and receiving a warning like
"WARNING: The object DOMAINNAME/Microsoft Exchange System Objects/Monitoring Mailboxes/Health_Mailbox_GUID has been corrupted,
# Remove the HealthMailbox(es) having an empty database attribute .\Fix-HealthMailboxes.ps1 -Remove
When you maintain a number of servers which require to trigger the same scheduled task manually, you can simplify the process by triggering the scheduled task remotely.
In this example, I assume that the script is being executed on a dedicated management server (aka job server) within an Exchange Server 2013 environment. The scheduled task must exist on all servers having the same name.
Create a simple PowerShell script at a file location of your choice (i.e. D:\Scripts\Start-RemoteScheduledTasks.ps1)
$cimSession = New-CimSession -ComputerName SERVER1,SERVER2,SERVER3,SERVER4 Start-ScheduledTask TASKNAME -CimSession $cimSession Remove-CimSession $cimSession
Now create a new shortcut on your server desktop with the following configuration:
Target: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "& D:\Scripts\Start-RemoteScheduledTasks.ps1"
If required, select "Run as Administrator" in Shortcut -> Advanced settings.
Enjoy.
This post has been published originally on my legacy blog SF-Tools.
This script removes the proxy address(es) for a selected protocol from mail-enabled public folders.
Any proxy address with a given protocol is removed from the proxy addresses list.
The script can fix the alias of mail-enabled public folders as well. The code used is based upon a blog post by Shay Levy.
# EXAMPLE 1 # Check mail enabled public folders for proxy addresses having "MS:" as a protocol type. # Do not remove and update addresses, but log found addresses to RemovedAddresses.txt .\Clean-MailEnabledPublicFolders.ps1 -ProtocolToRemove "MS:*" # EXAMPLE 2 # Check mail enabled public folders for proxy addresses having "MS:" as a protocol type. # Remove and update addresses and log found addresses to RemovedAddresses.txt .\Clean-MailEnabledPublicFolders.ps1 -ProtocolToRemove "MS:*" -UpdateAddresses
This Powershell script has been optimized using the ISESteroids™ add-on. Learn more about ISESteroids™ here.
This script deletes all Exchange and IIS logs older than X days from all Exchange 2013+ servers that are fetched using the Get-ExchangeServer cmdlet.
The Exchange log file location is read from the environment variable and used to build an administrative UNC path for file deletions.
Optionally, you can use the Active Directory configuration partition to determine the Exchange install path dynamically, if supported in your Active Directory environment.
# EXAMPLE 1 # Delete Exchange and IIS log files older than 14 days .\Purge-LogFiles -DaysToKeep 14 # EXAMPLE 3 # Delete Exchange and IIS log files older than 7 days with automatic discovery .\Purge-LogFiles -DaysToKeep 7 -Auto # EXAMPLE 3 # Delete Exchange and IIS log files older than 7 days with automatic discovery and send email report .\Purge-LogFiles -DaysToKeep 7 -Auto -SendMail -MailFrom postmaster@sedna-inc.com -MailTo exchangeadmin@sedna-inc.com -MailServer mail.sedna-inc.com # EXAMPLE 4 # Delete Exchange and IIS log files older than 14 days, but copy files to a central repository and compress the log files before final deletion .\Purge-LogFiles -DaysToKeep 14 -RepositoryRootPath \\OTHERSERVER\OtherShare\LOGS -ArchiveMode CopyZipAndDelete # EXAMPLE 5 # Delete Exchange Server, IIS, and HTTPERR log files older than 7 days, and send an HTML email. Identify Exchange file paths using AD configuration objects. .\Purge-LogFiles.ps1 -DaysToKeep 7 -SendMail -MailFrom postmaster@sedna-inc.com -MailTo exchangeadmin@sedna-inc.com -MailServer mail.sedna-inc.com -UseDynamicExchangePaths -IncludeHttpErr
Brian Reid, C7 Solutions, http://www.c7solutions.com/2013/04/removing-old-exchange-2013-log-files-html
Uninstalling Exchange Server 2013 will fail if the PowerShell MachinePolicy or UserPolicy is set by GPO.
You will receive an error message referencing Microsoft KB article 981474, which refers primarily to Exchange Server 2010.
The following PowerShell command removes the GPO setting.
Set-ItemProperty -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\PowerShell -Name ExecutionPolicy –Value ""
After setting the ExecutionPolicy attribute to an empty string, Exchange Server 2013 can be uninstalled successfully.
Do you plan to deploy Exchange Server 2016 or do you plan to go hybrid with Office 365? Check out the enterprise technology services provides by Granikos http://www.granikos.eu/en