想要使用已具有库的power shell在SharePoint 2013中创建文档库

时间:2017-07-29 11:05:30

标签: sharepoint-2013

我有一个SharePoint网站集,例如: - http://bp1amsapt229:14146/gom/mdrcs

和此网站集中的库

1.常规
2.Order

我想创建一个名为“W_General”的新库,它具有相同的属性(可以说只是重复)作为“常规”库,但“W_General”应该为空(没有文档只有文件夹)

请注意,这些库大小非常大,因此模板不是一个好选择。我希望所有这些都在power shell脚本中。请帮忙

2 个答案:

答案 0 :(得分:0)

如果您不使用内容类型,则需要在新库上重新创建源库的字段。在PowerShell中使用SPFieldCollection的AddFieldAsXml方法非常简单,如下例所示:

if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) {
    Add-PSSnapin "Microsoft.SharePoint.PowerShell"
}
$web = get-spweb "http://bp1amsapt229:14146/gom/mdrcs"
$source = $web.lists["General"]
$newListId = $web.lists.add("W_General", $source.Description, $source.BaseTemplate)
$web.Update()
$list = $web.lists.GetList($newListId,$true)
$source.fields | ForEach-Object{
    if(-not $_.FromBaseType){
        write-host "adding $($_.Title)... " -NoNewline -ForegroundColor Yellow
        $dest.Fields.AddFieldAsXml($_.SchemaXml);
        $dest.Update();
    }else{
        write-host "skipped adding $($_.Title)" -ForegroundColor Gray
    }
}
$source.Views | ForEach-Object{
    write-host "adding view '$($_.Title)'... "
    $dest.Views.Add($_.Title, $_.ViewFields, $_.Query, $_.RowLimit, $_.Paged, $_.DefaultView)
    $dest.Update()
}
$web.Dispose()

请注意,如果需要,您还需要将源库中的视图添加到目标库。

上述脚本不会复制附加到库中的任何表单或工作流程。

答案 1 :(得分:0)

感谢您的出色解决方案。我正在使用内容类型,如果我启用Parser,我可以使用您的解决方案。 解析器启用代码

if($ web.ParserEnabled -ne $ true) {

$ web.ParserEnabled = $ true $ web.Update()

}

任何人都可以告诉我这是否会对我的记录库造成任何影响,因为默认情况下它处于停用阶段。如果我在创建我的重复库后将禁用它,它将回滚启用它后激活的所有功能。它会对文档元数据产生什么影响。请解释