PowerShell base operate about list

來源:互聯網
上載者:User

先讓我來看一下我們有哪些列表模板可以使用,我們可以在SPWeb對象下使用ListTemplates參數來設定列表模板。首先,讓我們先來初始化一個SPWeb的對象。

PS>$spWeb=Get-SPWeb-Identityhttp://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()

使用PowerShell向SharePoint列表中添加欄

如果要向列表中添加一個新的欄,我們就需要使用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-ObjectSystem.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-ObjectMicrosoft.SharePoint.SPQuery

SPQuery對象是用來支援Query查詢的類,在這個時候我們就可以CAML Query的語句,

PS>$camlQuery=

>>‘<Where><Eq><FieldRefName="Title"
/><ValueType="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()

>>}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.