locked
Using PowerShell to query CRM 2011 SOAP endpoint RRS feed

  • Question

  • I don’t know what I am doing wrong. All I am trying to do is to query  CRM 2011 via PowerShell and SOAP. The following PowerShell script should return the Contact’s full name, but I get nothing. Any ideas??

    $xml = "<?xml version='1.0' encoding='utf-8'?>"
    $xml += "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"
    $xml += "<soap:Body>"
    $xml += "<Retrieve xmlns='http://schemas.microsoft.com/xrm/2011/Contracts/Services'>"
    $xml += "<entityName>contact</entityName>"
    $xml += "<id>12345678-1234-1234-1234-123456789012</id>"
    $xml += "<columnSet xmlns:q1='http://schemas.microsoft.com/xrm/2011/Contracts' xsi:type='q1:ColumnSet'>"
    $xml += "<q1:Attributes>"
    $xml += "<q1:Attribute>fullname</q1:Attribute>"
    $xml += "<q1:Attribute>telephone1</q1:Attribute>"
    $xml += "</q1:Attributes>"
    $xml += "</columnSet>"
    $xml += "</Retrieve></soap:Body></soap:Envelope>"
     
    $url="http://crmserver.company.com/Organization/XRMServices/2011/Organization.svc/web"
    $http_request = New-Object -ComObject Msxml2.XMLHTTP
    $http_request.Open('POST', $url, $false)
    $http_request.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Retrieve");
    $http_request.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    $http_request.setRequestHeader("Content-Length", $xml.length);
    $http_request.send($xml);
    $http_request.responseText

    And here is the response:

    $http_request.responseText
     
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body><RetrieveResponse xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services">
    <RetrieveResult xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
    <a:Attributes xmlns:b="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
    <a:KeyValuePairOfstringanyType>
    <b:key>accountid</b:key>
    <b:value i:type="c:guid" xmlns:c="http://schemas.microsoft.com/2003/10/Serialization/">12345678-1234-1234-1234-123456789012</b:value>
    </a:KeyValuePairOfstringanyType>
    </a:Attributes>
    <a:EntityState i:nil="true"/><a:FormattedValues xmlns:b="http://schemas.datacontract.org/2004/07/System.Collections.Generic"/>
    <a:Id>12345678-1234-1234-1234-123456789012</a:Id><a:LogicalName>account</a:LogicalName>
    <a:RelatedEntities xmlns:b="http://schemas.datacontract.org/2004/07/System.Collections.Generic"/>
    </RetrieveResult>
    </RetrieveResponse>

    I just don’t know what I am doing wrong. Why won’t the code return "fullname", it is in the columnSet.

    • Changed type jbmurphy Tuesday, May 8, 2012 3:49 PM
    Monday, May 7, 2012 9:32 PM

Answers

  • Try modifying this part of your request as such:
    xml += "<columnSet xmlns:q1='http://schemas.microsoft.com/xrm/2011/Contracts' xsi:type='q1:ColumnSet'>"
    $xml += "<q1:Columns xmlns:c='http://schemas.microsoft.com/2003/10/Serialization/Arrays'>"
    $xml += "<c:string>fullname</c:string>"
    $xml += "<c:string>telephone1</c:string>"
    $xml += "</q1:Columns>"
    You can check out some other SOAP examples here: http://code.msdn.microsoft.com/CRM-Online-2011-WebServices-14913a16

    Jason Lattimer


    Tuesday, May 8, 2012 4:30 PM
    Moderator

All replies

  • Try modifying this part of your request as such:
    xml += "<columnSet xmlns:q1='http://schemas.microsoft.com/xrm/2011/Contracts' xsi:type='q1:ColumnSet'>"
    $xml += "<q1:Columns xmlns:c='http://schemas.microsoft.com/2003/10/Serialization/Arrays'>"
    $xml += "<c:string>fullname</c:string>"
    $xml += "<c:string>telephone1</c:string>"
    $xml += "</q1:Columns>"
    You can check out some other SOAP examples here: http://code.msdn.microsoft.com/CRM-Online-2011-WebServices-14913a16

    Jason Lattimer


    Tuesday, May 8, 2012 4:30 PM
    Moderator
  • Thanks! Again!
    Tuesday, May 8, 2012 5:37 PM