2012-05-08 6 views
2

PowerShellとSOAPを使用してCRM 2011にクエリを実行しようとしています。次のPowerShellスクリプトは、連絡先のフルネームを返すはずですが、何も得られません。PowerShellを使用してCRM 2011 SOAPエンドポイントに問い合わせる

$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 

そして、ここでの応答です:

$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> 

私はちょうど私が間違っているのかわかりません。なぜコードは "fullname"を返しません、それはcolumnSetにありますか?

答えて

2

のようなあなたの要求のこの部分を変更してみてください。

$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>" 

あなたがここにいくつかの他のSOAPの例をチェックアウトすることができます: http://code.msdn.microsoft.com/CRM-Online-2011-WebServices-14913a16

+0

、おかげでそれをやったこと! –

関連する問題