从零开始的生活是充实的!
SharePoint搞到牛叉!

先让我来看一下我们有哪些列表模板可以使用,我们可以在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()
>>}

 

 

posted on 2011-05-14 21:55  Yunliang Yu  阅读(690)  评论(0编辑  收藏  举报