Skip to content

Instantly share code, notes, and snippets.

@jacksoneyton
Created February 15, 2017 23:20
Show Gist options
  • Save jacksoneyton/6d112028840d384e7708135f6a440a32 to your computer and use it in GitHub Desktop.
Save jacksoneyton/6d112028840d384e7708135f6a440a32 to your computer and use it in GitHub Desktop.
PremiumMemberRuleAutomatedUpdater
#Update Premium Members Rule
#test exchange connectivity and connect to EMS
if((get-command -listimported).Name -notcontains "Get-Mailbox")
{
. ($env:exchangeinstallpath + 'bin\RemoteExchange.ps1')
Connect-ExchangeServer -auto -ClientApplication:ManagementShell
}
function Invoke-SQL {
param(
[string] $dataSource = ".\SQLEXPRESS",
[string] $database = "MasterData",
[string] $sqlCommand = $(throw "Please specify a query.")
)
$connectionString = "Data Source=$dataSource; " +
"Integrated Security=SSPI; " +
"Initial Catalog=$database"
$connection = new-object system.data.SqlClient.SQLConnection($connectionString)
$command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
$connection.Open()
$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataSet) | Out-Null
$connection.Close()
$dataSet.Tables
}
$SQLQuery = @"
SELECT DISTINCT * FROM
(
SELECT DISTINCT Substring(Contact_Communication_Type.Description,CharIndex('@',Contact_Communication_Type.Description)+1 ,LEN(Contact_Communication_Type.Description)) as Premium_Domains, Company.Company_ID
FROM Contact_Communication_Type
JOIN Contact on contact.Contact_RecID = Contact_Communication_Type.Contact_RecID
JOIN Company on company.Company_RecID = Contact.Company_RecID
JOIN Company_Status on Company_Status.Company_Status_RecID = company.Company_Status_RecID
WHERE Communication_Type_RecID = '1'
AND Company_Status.Description like '%prem%'
AND LEN(Contact_Communication_Type.Description)>1
AND Company.Company_ID not in ('arrc','connectwise')
UNION ALL
SELECT DISTINCT replace(replace(replace(Website_URL,'www.',''),'http://',''),'/','') AS Premium_Domains, Company.Company_ID
FROM Company
JOIN Company_Status ON Company_Status.Company_Status_RecID = company.Company_Status_RecID
WHERE Company_Status.Description like '%prem%'
AND Website_URL != ''
AND Company.Company_ID not in ('arrc','connectwise')
)
AS Premium_Domains
WHERE Premium_Domains NOT IN ('gmail.com','yahoo.com','msn.com','me.com')
ORDER BY Premium_Domains ASC
"@
$SQLResult = Invoke-SQL -dataSource "ct-sql1" -database "cwwebapp_chartec" -sqlCommand $SQLQuery
$Premium_Domains = $SQLResult.Premium_Domains
#echo $Premium_Domains
Set-TransportRule -Identity 'Premium Partners Rule' -Name 'Premium Partners Rule' -Comments 'Flag Messages where FROM address contains premium member domain' -FromAddressContainsWords $Premium_Domains
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment