Below is a PowerShell function to create a contact in CRM 2011. Hope it is helpful to some one.
FUNCTION JBM-CRM-CreateContact { PARAM( [string][ValidateSet("crmserver.company.com", "dev-crmserver.company.com")]$ServerName="crmserver.company.com", [string][string][ValidateSet("CRMOrganizationName")]$OrganizationName="CRMOrganizationName", [string][parameter(Mandatory=$true)]$FirstName, [string][parameter(Mandatory=$true)]$LastName, [string]$MiddleName,[string]$Suffix,[string]$Email,[string]$JobTitle, [string]$Telephone,[string]$Description,[string]$ParentCustomerId,[string]$Address_Line1,[string]$Address_Line2, [string]$Address1_Country,[string]$Address1_PostalCode,[switch]$MyDebug ) $ContactInfo = @{ FirstName=$FirstName LastName=$LastName MiddleName=$MiddleName Suffix=$Suffix EMailAddress1=$Email NickName=$NickName JobTitle=$JobTitle Telephone1=$Telephone Address1_Line1=$Address_Line1 Address1_Line2=$Address_Line2 Address1_City=$Address1_City Address1_PostalCode=$Address1_PostalCode Address1_Country=$Address1_Country Description=$Description } if (!($ParentCustomerId -eq "")){ $ContactInfo.Add("ParentCustomerId" , @{Id=$ParentCustomerId;LogicalName= "account"}) } if ($MyDebug){ $ParentCustomerId $ContactInfo } $assembly = [Reflection.Assembly]::LoadWithPartialName("System.Web.Extensions") $json=new-object System.Web.Script.Serialization.JavaScriptSerializer $ContactInfoData=$json.Serialize($ContactInfo) $url="http://$ServerName/$($OrganizationName)/xrmservices/2011/OrganizationData.svc/ContactSet" $http_request = New-Object -ComObject Msxml2.XMLHTTP $http_request.open('POST', $url, $false) $http_request.setRequestHeader("Accept", "application/json") $http_request.setRequestHeader("Content-Type", "application/json; charset=utf-8") $results=$http_request.send($ContactInfoData) if ($MyDebug){ $http_request.statusText $http_request } $ContactId=$($json.DeserializeObject($http_request.responseText)).d.ContactId return $ContactId }