如何在PowerShell中为SharePoint列表创建新表单?

时间:2014-07-31 16:36:05

标签: powershell sharepoint sharepoint-2010

我发现了there's no easy way to just upload a file to a list's SPFolder and make it work as a form的困难方式。 (如果有,请纠正我,因为尝试这种方法的人似乎失败了,因为我做了......上传的文件但从未被识别为表格。)

是否有更简单的方法来创建新表单,并从头开始添加Web部件?我已经尝试发送一个空的表格文件,甚至是一个空白的文本文件,并且在推测为他们两个都添加了Web部件后,它们会生成相同的空壳......理论上,这应该有项目,但它是什么都不显示,完全忽略了我在“添加”后将项目注入表单的尝试。

“虚拟形式”尝试:

Write-Host > DoubleDummy.aspx
$file = Get-ChildItem -LiteralPath "DoubleDummy.aspx"
Add-SPFormFile $list.rootFolder $file $newname

结果(它在浏览器中不显示任何内容):

<%@ Page language="C#" MasterPageFile="~masterurl/default.master" Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage..."  %>
<%@ Register Tagprefix="SharePoint"  ... %>
...
<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">
<SharePoint:UIVersionedContent UIVersion="4" runat="server">
    <ContentTemplate>
    <div style="padding-left:5px">
    </ContentTemplate>
</SharePoint:UIVersionedContent>
    <table cellpadding="0" cellspacing="0" id="onetIDListForm" style="width:100%">
     <tr>
     <td>
     <WebPartPages:WebPartZone runat="server" FrameType="None" ID="Main" Title="loc:Main"><ZoneTemplate>
        <WebPartPages:DataFormWebPart... PageType="PAGE_EDITFORM" FrameState="Normal" ...>
....

1 个答案:

答案 0 :(得分:0)

对于列表$ list和网站$ web上的表单,以下代码有效。 Add()有很多覆盖,其中没有一个将两者一个默认的表单类型一个布尔值来允许覆盖,所以有&#39; sa&# 34;条件&#34;删除我写到了这个。

$rootFolder = $list.RootFolder
$part0 = $web.ServerRelativeUrl
$part1 = $rootFolder.URL
$newFormUrl = "${part0}/${part1}/${newname}"

# Delete file first.
try {
    $list.RootFolder.Files.Delete($list.RootFolder.Files[$newFormUrl].url)
} catch {
    # It's optional.
    Write-Host "Delete failed."
}
$done = $list.RootFolder.Files.Add($newFormUrl,
        [Microsoft.SharePoint.SPTemplateFileType]::FormPage)