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"