powershell ExecuteQuery()的奇怪行为-“输入字符串的格式不正确”,

t40tm48m  于 2023-08-05  发布在  Shell
关注(0)|答案(1)|浏览(143)

直到上周五,我还在使用下面的powershell脚本使用CSOM在Sharepoint Online上操作列表,没有任何问题。

$spOcredentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($spOuser, $secpasswd)
$spOctx = New-Object Microsoft.SharePoint.Client.ClientContext($spOSiteURL)
$spOctx.Credentials = $spOcredentials

$spOList = $spOctx.Web.Lists.GetByTitle($spOListName)
$spOctx.Load($spOList)
$spOctx.Load($spOList.Fields)
$spOctx.ExecuteQuery()

字符串
该脚本基于此article
昨天我发现脚本停止工作,调用ExecuteQuery()返回一个错误:

Exception calling "ExecuteQuery" with "0" argument(s): "Input string was not in a correct format."
At C:\Develop\Kontrola sloupcu seznamu.ps1:36 char:1
+ $spOctx.ExecuteQuery()
+ ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ServerException


我搜索了它是什么样的错误以及如何防止它,但我没有找到相关的解决方案。
今天,纯属偶然,我想到了一个让剧本发挥作用的方法。当我两次调用ExecuteQuery()时,第一次以上述错误结束,但第二次运行正常。我对此感到困惑,这当然不像是一个干净的解决方案。

luaexgnf

luaexgnf1#

您在使用PowerShell脚本和ExecuteQuery()方法时遇到的行为可能由各种因素引起。一个可能的原因是SharePoint Online环境或CSOM库可能已进行更新或更改,从而导致行为上的差异。
正如您所描述的,多次调用ExecuteQuery()可能是确保脚本成功执行的一种解决方法。但是,这不是一个理想或干净的解决方案,因为它可能导致冗余请求并影响性能。您可以尝试以下步骤
1.检查脚本依赖项:请确保安装了SharePoint Online客户端组件SDK和CSOM库的适当版本。您可以从Microsoft下载中心下载最新版本。
1.验证凭据:请验证您用于SharePoint Online身份验证的凭据是否正确,以及是否具有访问网站和目标列表所需的权限。
1.查看SharePoint Online服务状态:SharePoint Online有时可能会遇到临时服务中断或问题。检查SharePoint服务运行状况页面或Office 365管理中心,以确保没有报告的问题。

相关问题