1

PowerShell 2.0 を使用して、SharePoint 2010 でドキュメントへのリンクを作成しようとしています。既に他のコンテンツ タイプを有効にして、問題のドキュメント ライブラリに「ドキュメントへのリンク」コンテンツ タイプを追加しました。

リンクしようとしているドキュメントは、同じサイト コレクション内の別の Web 上の別の共有ドキュメント リストにあります。実際のファイルは、「PM」というサブフォルダーにネストされています。ファイルの種類は、Excel ファイルから Word ファイル、PDF までさまざまです。

私はプロセスを手動でテストしました (共有ドキュメント -> 新しいドキュメント -> ドキュメントへのリンク -> ...) が正常に機能しました (完了時に右下隅に矢印が付いたドキュメント アイコンで示されているように) )、しかし、PowerShell で動作させることができないようです。何か案は?

これは、これまでに遭遇した唯一の非 PowerShell ソリューションです: http://howtosharepoint.blogspot.com/2010/05/programmatically-add-link-to-document.html

4

1 に答える 1

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ファイルもつなぎ合わせる可能性があります...

于 2013-03-26T15:51:48.390 に答える