使用PowerShell在SharePoint共享文档列表中创建“文档链接”

时间:2013-03-25 21:49:07

标签: sharepoint powershell sharepoint-2010 powershell-v2.0

我正在尝试使用PowerShell 2.0在SharePoint 2010中创建指向文档的链接。我已启用其他内容类型,并将“链接到文档”内容类型添加到相关文档库中。

我要链接到的文档位于同一网站集中另一个网站上的不同共享文档列表中。实际文件嵌套在名为“PM”的子文件夹中。文件类型可以从excel文件到Word文件到PDF。

我手动测试了这个过程(共享文档 - >新文档 - >链接到文档 - > ...)并且工作正常(如文档图标所示,底部有箭头)当我完成时右上角),但我似乎无法使用PowerShell。有什么想法吗?

这是迄今为止我遇到的唯一非PowerShell解决方案: http://howtosharepoint.blogspot.com/2010/05/programmatically-add-link-to-document.html

1 个答案:

答案 0 :(得分:0)

我通过移植上述解决方案最终实现了它。这里有一些多余的细节,但它的要点很容易解析出来:

# Push file links out to weekly role page
$site = New-Object Microsoft.SharePoint.SPSite($roleURL)
$web = $site.OpenWeb()
$listName = "Shared Documents"
$list = $web.Lists[$listName]
$fileCollection = $list.RootFolder.files
ForEach ($doc in $docLoadList) {
    $parsedFileName = $d.Split("\")
    $index = $parsedFileName.Length
    $index = $index - 1
    $actualFileName = $parsedFileName[$index]
    $existingFiles = Get-ExistingFileNames $homeURL
    If ($existingFiles -Match $actualFileName) {
        $existingFileObject = Get-ExistingFileObject $actualFileName $homeURL
        $docLinkURL = Get-ExistingFileURL $actualFileName $homeURL
        # Create new aspx file
        $redirectFileName = $actualFileName
        $redirectFileName += ".aspx"
        $redirectASPX = Get-Content C:\Test\redirect.aspx
        $redirectASPX = $redirectASPX -Replace "#Q#", $docLinkURL
        $utf = new-object System.Text.UTF8Encoding
        $newFile = $fileCollection.Add($redirectFileName, $utf.GetBytes($redirectASPX), $true)
        # Update the newly added file's content type
        $lct = $list.ContentTypes["Link to a Document"]
        $lctID = $lct.ID
        $updateFile = $list.Items | ? {$_.Name -eq $redirectFileName}
        $updateFile["ContentTypeId"] = $lctID
        $updateFile.SystemUpdate()
        $web.Dispose()
    }
}

我可能最终也会在脚本中将.aspx文件串起来......