Sharepoint:哪个 dll 持有 Microsoft.SharePoint.SPTemplateFileType
Sharepoint: which dll holds Microsoft.SharePoint.SPTemplateFileType
我正在尝试将 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(而且我的工作计算机上没有管理员权限可以这样做)。我已经通过使用从 SDK 安装文件中提取并通过
加载的 MICROSOFT.SHAREPOINT.CLIENT.DLL 获得了尽可能多的信息
[Reflection.Assembly]::LoadFrom("$scriptdir\dll\Microsoft.SharePoint.Client.dll")
所以现在我希望有一些额外的 dll 需要加载,这样我就可以访问 Microsoft.SharePoint.SPTemplateFileType...我已经尝试从该 SDK 安装文件加载所有其他 DLL,但是那不会消除错误。有人知道要使用哪个 DLL 文件吗?下载 link 当然不胜感激。
不起作用,因为您使用的 "Add" 方法不是采用两个参数的方法。这是 Files.Add,它只接受一个参数,而你认为你使用的是 SPFileCollection.Add。
不知道如何编写代码,所以您在不在实际服务器上时使用了第二个代码。
使用 this project and combining it with 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方式。
我正在尝试将 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(而且我的工作计算机上没有管理员权限可以这样做)。我已经通过使用从 SDK 安装文件中提取并通过
加载的 MICROSOFT.SHAREPOINT.CLIENT.DLL 获得了尽可能多的信息[Reflection.Assembly]::LoadFrom("$scriptdir\dll\Microsoft.SharePoint.Client.dll")
所以现在我希望有一些额外的 dll 需要加载,这样我就可以访问 Microsoft.SharePoint.SPTemplateFileType...我已经尝试从该 SDK 安装文件加载所有其他 DLL,但是那不会消除错误。有人知道要使用哪个 DLL 文件吗?下载 link 当然不胜感激。
不起作用,因为您使用的 "Add" 方法不是采用两个参数的方法。这是 Files.Add,它只接受一个参数,而你认为你使用的是 SPFileCollection.Add。
不知道如何编写代码,所以您在不在实际服务器上时使用了第二个代码。
使用 this project and combining it with 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方式。