我正在尝试将Wiki页面添加到Sharepoint online / 365网站。为此,我需要能够
$wikiFile = $wikiPages.RootFolder.Files.Add($targetPath, [Microsoft.SharePoint.SPTemplateFileType]::WikiPage)
我在其他人的片段中看到的代码是什么,似乎对他们有效,因为他们做了
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
在他们的代码的开头。不幸的是,上面没有为我做任何事情,
Unable to find type [Microsoft.SharePoint.SPTemplateFileType]: make sure that the assembly containing this type is loaded
可能是因为我没有安装客户端SDK(并且我的工作计算机上没有管理员权限)。我已经通过使用MICROSOFT.SHAREPOINT.CLIENT.DLL得到了我已经从SDK安装文件中提取并通过执行加载
[Reflection.Assembly]::LoadFrom("$scriptdir\dll\Microsoft.SharePoint.Client.dll")
所以现在我希望我还需要加载一些额外的dll,这样我就可以访问Microsoft.SharePoint.SPTemplateFileType ...我已经尝试加载所有其他的DLL该SDK安装文件,但不会删除该错误。有谁知道要使用哪个DLL文件?当然,下载链接也会受到赞赏。
答案 0 :(得分:0)
不会工作,因为"添加"你使用的方法不是带有两个参数的方法。这是Files.Add,它只接受一个参数,而你认为你正在使用的是SPFileCollection.Add。
不知道如何编写代码,以便在不使用实际服务器的情况下使用第二个代码。
答案 1 :(得分:0)
使用this project中的信息并将其与this answer相结合,我将以下代码放在一起,以便从客户端计算机向SharePoint O365发送内容(确保在更改路径时更改路径你使用这段代码!):
# global vars
$clientContext
$rootSiteUrl
#the $PSScriptRoot variable changes over time so let's stick the value to our own variable
$scriptdir = $PSScriptRoot
function Initialize-SPPS
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$true, Position=1)]
[string]$siteURL,
[Parameter(Mandatory=$false, Position=2)]
[bool]$online,
[Parameter(Mandatory=$false, Position=3)]
[string]$username,
[Parameter(Mandatory=$false, Position=4)]
[string]$password
)
Write-Host "Loading the CSOM library" -foregroundcolor black -backgroundcolor yellow
[Reflection.Assembly]::LoadFrom("$scriptdir\dll\Microsoft.SharePoint.Client.dll")
Write-Host "Succesfully loaded the CSOM library" -foregroundcolor black -backgroundcolor green
Write-Host "Create client context for site $siteUrl" -foregroundcolor black -backgroundcolor yellow
$context = New-Object Microsoft.SharePoint.Client.ClientContext($siteURL)
$context.RequestTimeOut = 1000 * 60 * 10;
if ($online)
{
Write-Host "Setting SharePoint Online credentials" -foregroundcolor black -backgroundcolor yellow
$context.AuthenticationMode = [Microsoft.SharePoint.Client.ClientAuthenticationMode]::Default
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($username, $securePassword)
$context.Credentials = $credentials
}
Write-Host "Check connection" -foregroundcolor black -backgroundcolor yellow
$web = $context.Web
$site = $context.Site
$context.Load($web)
$context.Load($site)
$context.ExecuteQuery()
Set-Variable -Name "clientContext" -Value $context -Scope Global
Set-Variable -Name "rootSiteUrl" -Value $siteURL -Scope Global
Write-Host "Succesfully connected" -foregroundcolor black -backgroundcolor green
}
# get files for variables
# get file for pagename
$pageName = [IO.File]::ReadAllText("C:\workspace\PortableSoft\UniServerZ\www\wikimigration\powershell\pageName.txt")
# get file for page contents
$pageContent = [IO.File]::ReadAllText("C:\workspace\PortableSoft\UniServerZ\www\wikimigration\powershell\pageContent.txt")
# connect
Initialize-SPPS -siteURL "https://xxx.sharepoint.com/sites/123456/" -online $true -username "user@xxx.com" -password "myPass"
# put page
$fullPageName = "$pageName.aspx"
Write-Host "Adding page" -foregroundcolor black -backgroundcolor yellow
Create-WikiPage -Context $clientContext -WikiLibraryTitle "Site Pages" -PageName $fullPageName -PageContent $pageContent
Write-Host "New page added" -foregroundcolor black -backgroundcolor green
$clientContext.Dispose()
您可以从SharePoint SDK获取Microsoft.SharePoint.Client.dll。如果像我一样,您正在为拥有严格用户权限的公司工作,那么您将无法实际安装它:只需使用7zip或其他东西打开下载的文件,就像它是压缩文件一样以这种方式提取dll。