使用powershell删除Wiki页面

时间:2016-04-19 09:18:43

标签: powershell sharepoint

我的代码需要帮助。 我首先尝试在SharePoint 2013中创建一个新的wiki页面,并且完美运行。 现在我正在尝试删除一个wiki页面,但效果不佳。

我的代码:

Add-Type –Path "C:\Users\Benutzername\AppData\Local\Apps\OfficeDevPnP.PowerShell.V15.Commands\Modules\OfficeDevPnP.PowerShell.V15.Commands\Microsoft.SharePoint.Client.dll"  
Add-Type –Path "C:\Users\Benutzername\AppData\Local\Apps\OfficeDevPnP.PowerShell.V15.Commands\Modules\OfficeDevPnP.PowerShell.V15.Commands\Microsoft.SharePoint.Client.Runtime.dll" 

Function Delete-WikiPage ([Microsoft.SharePoint.Client.ClientContext]$Context, [string]$WikiLibraryTitle,[string]$PageName)
{
    $wikiLibrary = $context.Web.Lists.GetByTitle($wikiLibraryTitle)
    $context.Load($wikiLibrary.RootFolder.Files)
    $context.ExecuteQuery()

    $wikiPage = $wikiLibrary.RootFolder.Files | Where {$_.Name -eq $pageName}
    $context.Load($wikiPage)
    $context.DeleteObject()
}
$Url = "hhtps://sharepoint.com"
$context = New-Object Microsoft.SharePoint.Client.ClientContext($Url)
$pageName = "Testlauf.aspx"
Delete-WikiPage -Context $context -WikiLibraryTitle "Testwiki" -PageName $pageName

我收到有关DeleteObject()方法的错误消息,但我没有找到任何可以解决的问题:

Error when calling the method [Microsoft.SharePoint.Client.ClientContext] no method found with the name "DeleteObject".
In C:\Users\Benutzername\Desktop\Projektarbeit_Wiki\PowerShell\Delete_WikiPage.ps1:12 Zeichen:5
+     $context.DeleteObject()
+     ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

我只能使用Add-Types中的方法。任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:0)

您在PowerShell中使用CSOM。 (您加载CSOM DLL)。 所以你应该用SharPoint CSOM搜索信息。

要回答您的问题,请在对象上使用: DeleteObject()上下文。 Context对象上不存在此方法。但是文件中存在这种方法。

你应该尝试类似的东西:

$wikiPage = $wikiLibrary.RootFolder.Files | Where {$_.Name -eq $pageName}
$context.Load($wikiPage)
$context.ExecuteQuery() //Get the item, but not sure this is needed
$wikiPage.DeleteObject()
$context.ExecuteQuery()

个人注意: 您应该使用CAML查询来检索您的WikiPage,而不是:$ wikiPage = $ wikiLibrary.RootFolder.Files |其中{$ _。名称-eq $ pageName} 使用此类查询时,您的性能会有不佳,您可以提高例外列表阈值