1

PowerShell を使用して SharePoint からリスト アイテムを取得しようとしています。

このWindows PowerShell ブログの例を使用し、自分のサイトで使用するように変更しました。次のエラーが表示されます。

Exception calling "GetListItems" with "7" argument(s): "Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown."
At line:30 char:1
+ $list = $service.GetListItems($listName, "", $query, $viewFields, $rowLimit, $qu ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : SoapException

私が使用しているスクリプト:

# The uri refers to the path of the service description, e.g. the .asmx page            
$uri = "http://SITE/sites/DefaultCollection/Engineering/Subsite%20(UK)/_vti_bin/lists.asmx"             

# Create the service            
$service = New-WebServiceProxy -Uri $uri  -Namespace SpWs  -UseDefaultCredential            

# The name of the list             
$listName = "Test1"             

# Create xml query to retrieve list.             
$xmlDoc = new-object System.Xml.XmlDocument            
$query = $xmlDoc.CreateElement("Query")            
$viewFields = $xmlDoc.CreateElement("ViewFields")            
$queryOptions = $xmlDoc.CreateElement("QueryOptions")            
$query.set_InnerXml("FieldRef Name='Text1'")             
$rowLimit = "10"            

$list = $null             
$service = $null              

try
    {            
    $service = New-WebServiceProxy -Uri $uri  -Namespace SpWs  -UseDefaultCredential
    }            
catch
    {             
    Write-Error $_ -ErrorAction:'SilentlyContinue'             
    }

$list = $service.GetListItems($listName, "", $query, $viewFields, $rowLimit, $queryOptions, "")

if($service -ne $null)
    {            
    try
        {                    
        $list = $service.GetListItems($listName, "", $query, $viewFields, $rowLimit, $queryOptions, "")
        }            
    catch
        {             
        Write-Error $_ -ErrorAction:'SilentlyContinue'            
        }            
}

誰もこれを前に試しましたか?この問題を解決するにはどうすればよいですか?

4

3 に答える 3

3

これが私のために働いた解決策です..

$uri 文字列の末尾に「?WSDL」を追加します

$uri = "http://SITE/sites/DefaultCollection/Engineering/Subsite%20(UK)/_vti_bin/lists.asmx?WSDL"

このリンクによると、ASP.NET を使用して作成された Web サービスのサービス説明を返すには、Web サービスの URL に「?WSDL」を追加します (たとえば、 http://www.ss64.com/MyWebService .asmx?WSDL )

于 2015-10-06T20:42:45.567 に答える
0

エラーがスローされている行は次のとおりです。

$list = $service.GetListItems($listName, "", $query, $viewFields, $rowLimit, $queryOptions, "")

その行はキャッチされませんが、同じエラーをスローする同様の問題があります。より良い例外を取得したい場合は、行を別の try catch でラップします。

try{
$list = $service.GetListItems($listName, "", $query, $viewFields, $rowLimit, $queryOptions, "")
}
catch{
[System.Exception]
write-host ($_.Exception).Message
}
于 2013-04-02T10:55:03.227 に答える
-1

URI に「?WSDL」を必ず追加してください。これがコードの破損の原因です。関数の定義を知らないふりをします(少なくとも私は推測します)...

以下のように。これが私のコードを機能させたことに驚きました。変..

$uri = "http://<>/sites/DefaultCollection/Engineering/Subsite%20(UK)/_vti_bin/lists.asmx?WSDL"

于 2014-12-09T01:11:11.157 に答える