PowerShell: исключение, вызывающее "GetListItems" с аргументом "7"

Попытка получить элементы списка из Sharepoint с помощью PowerShell.

Итак, я использовал пример из блога Windows Powershell и изменил его для использования с моим сайтом. Теперь я получаю следующую ошибку:

Исключение, вызывающее "GetListItems" с аргументом (ами) "7": "Возникло исключение типа" Microsoft.SharePoint.SoapServer.SoapServerException "." В строке:30 символов: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'            
        }            
}

$list

3 ответа

Вот решение сработало для меня..

Добавьте "?WSDL" в конец строки $uri

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

По этой ссылке: Чтобы вернуть описание службы веб-службы, созданной с использованием ASP.NET, добавьте "?WSDL" к URL-адресу веб-службы (например, http://www.ss64.com/MyWebService.asmx?WSDL)

Строка, в которой выдается ошибка:

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

Эта строка не перехвачена, но есть похожая проблема, которая выдает ту же ошибку. Если вы хотите попытаться получить лучшее исключение, заключите строку в другую попытку catch:

try{
$list = $service.GetListItems($listName, "", $query, $viewFields, $rowLimit, $queryOptions, "")
}
catch{
[System.Exception]
write-host ($_.Exception).Message
}

Пожалуйста, не забудьте добавить "?WSDL" в ваш URI, поэтому код ломается. Притворяется, будто не знает определения функции (по крайней мере, я думаю)...

Как показано ниже. Я был удивлен, увидев, что это заставило мой код работать. Weird..

$ uri = "http: //<> / sites / DefaultCollection / Engineering / Subsite% 20 (Великобритания)/_vti_bin/lists.asmx?WSDL"

Другие вопросы по тегам