zoukankan      html  css  js  c++  java
  • SharePoint 2010 PowerShell(3)使用PowerShell管理列表

    先让我来看一下我们有哪些列表模板可以使用,我们可以在SPWeb对象下使用ListTemplates参数来设置列表模板。首先,让我们先来初始化一个SPWeb的对象。

     

    PS > $spWeb = Get-SPWeb -Identity http://localhost

     

    然后,我们使用ListTemplates参数,并使用Select-Object参数,来查看我们有哪些列表模板可以使用

     

    当我们创建一个新的列表的时候可以使用这些的列表模板。当我们要在SharePoint2010中创建一个列表的时候,你需要在SPListCollection中使用Add方法。在下面的例子中我们将会使用三个参数,Title,description,这两个参数的类型是System.String,还有一个template这个参数的类型是SPListTemplateType。所以我们需要初始化一个对象来使用这些参数。

     

    PS > $listTemplate = [Microsoft.SharePoint.SPListTemplateType]::Contacts
    PS > $spListCollection = $spWeb.Lists
    PS > $spListCollection.Add("My Contacts","Description",$listTemplate)

     

    我们在使用Add方法是,一定要避免使用$spweb.Lists.Add。如果我们利用这个方法连续创建很多列表,就会重复获取网站的 lists的数据,这样会加大内存的消耗,如果指调用一次并保存在一个变量中,这样就只需要获取一次lists的数据,并可以重复使用。

     

    使用PowerShell更新SharePoint列表

    下面让我们来修改我们刚刚创建的列表,首先需要使用GetLists()方法获取到这个列表

     

    PS > $spList = $spWeb.GetList("/Lists/My Contacts")

    PS > $spList.OnQuickLaunch = "True"
    PS > $spList.Update()

     

    当我们使用了上面的命令后,列表的链接就会显示在网站的快速启动的中,如果设置了为false就会在快速启动中隐藏。如果我们要修改列表的说明信息,我们需要使用 Description参数。

     

    PS > $spList.Description = "My Contact List"
    PS > $spList.Update()

     

    使用PowerShellSharePoint列表中添加栏

    如果要向列表中添加一个新的栏,我们就需要使用SPFieldCollection类中的Add方法。现在我们创建一个比较简单的单行文本的栏。

     

    PS > $spFieldType = [Microsoft.SharePoint.SPFieldType]::Text
    PS > $spList.Fields.Add("TextField",$spFieldType,$false)

     

    上面使用的Add方法中有三个参数,第一个是栏的名称,第二个参数是栏的类型,这里我们使用了一个变量来保存单行文本的栏类型,第三个参数我们输入的false,这里表示的是这个新建的栏是否在保存表单时一定要输入一个值,也就是在网站创建栏选择的“要求此栏包含信息”选项。

    同时SharePoint 2010 还支持其他类型的栏,如果要添加一个选项类型的栏时会有一些不用,因为它需要设置一些可供选择的数据。我们可以将选项栏用的到数据保存到System.Collections.Specialized.StringCollection类中 ,我们来看下面的例子。

     

    PS > $choices = New-Object System.Collections.Specialized.StringCollection
    PS > $choices.Add("First Choice")
    PS > $choices.Add("Second Choice")
    PS > $choices.Add("Third Choice")

     

    现在我们可以使用这个变量,来创建一个类型为 Choice”类型的栏

     

    PS > $spFieldType = [Microsoft.SharePoint.SPFieldType]::Choice
    PS > $spList.Fields.Add("ChoiceField",$spFieldType,$false,$false,$choices)

     

    使用PowerShell管理列表视图

    让我们来继续看看如果利用PowerShell管理列表的视图。我们可以通过对视图定制来显示我们的需要的数据内容。当我们创建一个新的列表时,会有一个默认的视图。我们可以通过PowerShell来编辑默认的这个视图。我们可以使用GetViewFromUrl来获取视图的链接。

     

    PS > $spView = $spWeb.GetViewFromUrl("/Lists/My Contacts/AllItems.aspx")

     

    当我创建好一个新的栏时,它不会被添加到默认的视图中被显示。我们可以通过PowerShell将这个栏添加到这个默认视图中。我们需要先使用一个变量来保存栏。

     

    PS > $spField = $spList.Fields["TextField"]

     

    我们可以通过SPViewFieldCollection类中的 Add方法来向视图中添加栏,然后使用Update()方法来保存更新。

     

    PS > $spView.ViewFields.Add($spField)
    PS > $spView.Update()

     

    你可以使用更多的方法来管理列表视图,例如,创建视图,删除视图。

     

    使用PowerShell管理列表项目

    让我们来继续看看如何向一个列表中添加一个列表项目。SPLists类提供一个AddItem的方法,我们可以使用这个方法来添加一个列表项目。当我们使用AddItem方法时,它会返回一个Microsoft.SharePoint.SPListItem的对象。因为我们需要对这个列表项目来设置每个栏数据。

     

    PS > $spListItem = $spList.AddItem()

     

    现在我们开始对每一个栏来设置它的数据,SPListItem类中提供一个参数化Item属性,我们可以通过这个属性设置特定栏的值。例如:

     

    PS > $spListItem["Title"] = "New Item"

    PS > $spListItem["TextField"] = "Hey hey"
    PS > $spListItem["ChoiceField"] = "First Choice"

    PS > $spListItem.Update()

     

    如果要更新一个已经存在的列表项目我们该怎么做呢?SPList类中提供了很多方法可以提供给我来查找一个列表项目。最常用的命令式GetItemById() GetItems()

     

    GetItemById()方法是在我们知道这个item id时候可以获取到这个列表项目。但在很多时候,我们并不知道这个列表项目的Id,而只是知道标题,或者其他的一些栏的信息。在这个时候我们需要使用GetItems()这个方法。这个方法将会返回所有的列表项目或者在使用Caml Query定义时得到列表项目

    PS > $spQuery = New-Object Microsoft.SharePoint.SPQuery

     

    SPQuery对象是用来支持Query查询的类,在这个时候我们就可以CAML Query的语句,

     

    PS > $camlQuery =
    >> ‘<Where><Eq><FieldRef Name="Title" /><Value Type="Text">True</Value></Eq></Where>'

    PS > $spQuery.Query = $camlQuery

     

    在我们使用GetItems方法后,我们需要使用一些参数来设置返回的Item的行数限制,如果我们没有使用行数限制的参数,在获取一些数据量很大的列表数据时,就可能会失败。

     

    PS > $spQuery.RowLimit = 100

    PS > $spListItem = $spList.GetItems($spQuery)

     

    现在我们可以通过使用GetItems()方法获取到的数据,进行编辑。GetItems方法会返回一个ListItemCollection的类型。这个时候我们需要使用ForEach-Object命令来循环获取列表数据。

    PS > $spListItem | ForEach-Object {
    >> $_["Title"] = "New Value"; $_.Update()
    >>}

     

     

  • 相关阅读:
    【转载】C/C++中extern关键字详解
    【转载】extern "C"的用法解析(原博主就是抄百度百科的,不如另外一篇好)
    lua Date和Time
    MySQL-Linux安装
    Hive-0.13安装
    MR案例:单表关联查询
    MR案例:小文件处理方案
    MR案例:链式ChainMapper
    MR案例:定制Partitioner
    MR案例:多文件输出MultipleOutputs
  • 原文地址:https://www.cnblogs.com/yunliang1028/p/2136804.html
Copyright © 2011-2022 走看看