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 adminstrative UNC path for file deletions.
# 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 firstname.lastname@example.org -MailTo email@example.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
This PowerShell script requires the GlobalFunctions module, described here.
When using PowerShell 5 or later you can simply use Install-Module GlobalFunctions to install the module to your system.
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 go hybrid with Office 365? Check out the enterprise technology services provides by Granikos http://www.granikos.eu/en
The script sends a given number of test email to a configured SMTP host for test purposes (primarily Exchange queues, transport agents or anti-virus engines).
Do not forget to adjust script variables to suit your local Exchange infrastructure.
# EXAMPLE 1
# Send 10 normal emails
.\Send-TestMail.ps1 -Normal -MessageCount 10
# EXAMPLE 2
# Send an Eicar test email
This script reconfigures the IIS log folder to use a different folder instead of the default C:\inetpub\logs folder.
Additionally the log settings can be adjusted as well. The script changes the default log file location and settings on a server level.
By default the settings are inherited by websites. If manual changes have been made on a webite level, not all settings will be inherited.
Change the IIS log file location to D:\IISLogs
.\Set-Webserver.ps1 -LogFolderPath D:\IISLogs
Change the IIS log period to an hourly period
.\Set-Webserver.ps1 -LogFilePeriod Hourly
Use the local time for filenames and log file rollover
.\Set-Webserver.ps1 -LocalTimeRollover $true
Additional credits go to Michel de Rooij, https://eightwone.com
Add remote IP address ranges to an Exchange Server 2013/2016 receive connctor.
Create a new text file containing the new remote IP address ranges
The script creates a new sub folder named ReceiveConnectorIpAddresses and saves the currently configured remote IP address ranges first.
While adding the new remote IP address ranges, the script checks, if the new ranges already exist.
# Add IP addresses from ip.txt to MYCONNECTOR
.\Add-ReceiveConnectorIpAddress.ps1 -ConnectorName MYCONNECTOR -FileName D:\Scripts\ip.txt
.\Add-ReceiveConnectorIpAddress.ps1 -ConnectorName REMOTECONNECTOR -FileName .\ip-new.txt -ViewEntireForest $true