+menu-


Send SMS from Powershell through Unwire

At work we have bought an SMS gateway service through the danish company Unwire, so after we the deal was signed we got the information on how to send email through their services, so in order to test I wrote a quick Powershell script to test it.

Of course all company/Unwire specific data has been removed, since it relates to our company account.

<#
	.SYNOPSIS
		Send SMS through Unwire GW Server

	.DESCRIPTION
		Send SMS Text messages through Unwire.com SMS Gateway services

	.PARAMETER  Content
		The text that the message should contain (Strings above 160 Chars will be split) [Mandatory]

	.PARAMETER  Recipient
		The recipient phonenumber (Either 8 or 10 digits) [Mandatory]
		
	.PARAMETER  Sender
		The name/number that shows up on the recipients phone (Maximum 11 digits/chars)
		
	.EXAMPLE
		PS C:\>Send-SMS -Content "Hello handsome" -Recipient 42424242

	.EXAMPLE
		PS C:\> Send-SMS -Content "Hello handsome" -Recipient 42424242 -Sender "IT Helpdesk"

	.INPUTS
		System.String,System.Int64,System.String

	.OUTPUTS
		Sends SMS text message

	.NOTES
		

	.LINK
		about_functions_advanced

	.LINK
		about_comment_based_help

#>


function Send-SMS {
	[CmdletBinding()]
	param(
		[Parameter(Position=0, Mandatory=$true)]
		[System.String]
		$Content= "Hello There",
		[Parameter(Position=1, Mandatory=$true)]
		[System.Int64]
		$Recipient=42424242,
		[Parameter(Position=2, Mandatory=$false)]
		[System.String]
		$Sender="IT-Drift"
	)
	begin {
	
	If ( $Recipient -notmatch '^(\d{8}|\d{10})$' )
		{Write-Host "Error in Phone Number"
		break
		}
		If ($Sender.Length -gt 11)
		{Write-Host "Sender name too long"
		break
		}
	[Void] [System.Reflection.Assembly]::LoadWithPartialName("System.Web") 
	$objHTTP = New-Object -ComObject MSXML2.XMLHTTP
	
	$User = "xxxxx"
	$Password = "xxxxxx"
	$AppNr = "xxxxx"
	$smsc = "xxxxxx"
	$Price = "xxxxx"
	
	
	$Message = [System.Web.HttpUtility]::UrlEncode([System.Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes("$Content"))
	$SenderName = [System.Web.HttpUtility]::UrlEncode([System.Text.Encoding]::GetEncoding("ISO-8859-1").GetBytes("$Sender"))


[String] $unwireURL = "xxxxxxxx"
[String] $UnwireServer = "xxxxxxxx" 
[String] $UnwireHost ="xxxxxxxxxx"
	
	}
	
	process {




$PushString = @"
user=$user&password=$password&to=$Recipient&text=$Message&smsc=$smsc&price=$Price&type=text&appnr=$AppNr&from=$SenderName
"@


$objHTTP.open('POST', $UnwireServer, $False)

$objHTTP.setRequestHeader('POST', $unwireURL  + ' HTTP/1.1')
$objHTTP.setRequestHeader('Host', $UnwireHost)
$objHTTP.setRequestHeader('User-Agent:', 'CP agent') 
$objHTTP.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
$objHTTP.setRequestHeader('Content-Length', $($XMLString.Length))
$objHTTP.send("$PushString")
$objHTTP.status
$objHTTP.statusText

	}
}