こんにちは、SharePoint サポートの佐伯です。今回の投稿では、PowerShell を使用して列の基本的な操作を実施する方法についてご紹介します。あまり PowerShell のご経験がない方にも分かりやすくするために、ここではシンプルなサンプルをご紹介していきます。目的の処理を実装する際にご参考になりましたら幸いです。実装の際は MSDN の資料も合わせてご参照ください。
■列の作成
#サイトを取得します。
$web = Get-SPWeb <Web サイトの URL>
#リストを取得します
$list = $web.Lists["<リスト名>"]
#列のコレクションを取得します。
$fields = $list.Fields
#列を追加します。
例) 1 行テキスト列を追加する$web = Get-SPWeb http://sharepoint/sites/team$list = $web.Lists["ニュース"]$fields = $list.Fields$fields.Add("メモ", [Microsoft.SharePoint.SPFieldType]::Text, $false)例) 日付と時刻列を追加する$web = Get-SPWeb http://sharepoint/sites/team$list = $web.Lists["会議資料"]$fields = $list.Fields$fields.Add("開催日", [Microsoft.SharePoint.SPFieldType]::DateTime, $true)参考 : その他の <列の種類> は下記の資料をご参照ください。SPFieldType enumerationhttp://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.spfieldtype(v=office.15).aspx
#文字列のコレクションを作成します。
$strings = New-Object System.Collections.Specialized.StringCollection
$strings.Add("<選択肢1>")
$strings.Add("<選択肢2>")
$strings.Add("<選択肢3>")
例) 選択肢列を追加する$web = Get-SPWeb http://sharepoint/sites/team$list = $web.Lists["ドキュメント"]$fields = $list.Fields$strings = New-Object System.Collections.Specialized.StringCollection$strings.Add("議事録")$strings.Add("社内通知")$strings.Add("調査書")$strings.Add("その他")$fields.Add("DocumentCategory", [Microsoft.SharePoint.SPFieldType]::Choice, $false, $false, $strings)
#参照先のリストの ID を取得します。
$refListId = $web.Lists["<参照先のリスト名>"].ID
$fName = $fields.AddLookup("<列名>", $refListId, <必須列か否か>)
#追加した列を取得します。
$field = $list.Fields.GetField($fName)
#参照する列を設定します。
$field.LookupField = "<参照する列の内部名>"
#列を更新します。
$field.Update()
例) 参照列を追加する$web = Get-SPWeb http://sharepoint/sites/team$list = $web.Lists["会議記録"]$fields = $list.Fields$refListId = $web.Lists["施設リスト"].ID$fName = $fields.AddLookup("施設", $refListId, $false)$field = $list.Fields.GetField($fName)$field.LookupField = "Title"$field.Update()■列の取得
#列を取得します。
$field = $fields.GetField("<列のタイトルまたは内部名>")
#列のプロパティ値を取得します
例) ���の内部名を取得する$web = Get-SPWeb http://sharepoint/sites/team$list = $web.Lists["ニュース"]$fields = $list.Fields$field = $fields.GetField("メモ")$field.InternalName参考 : その他の <列のプロパティ> は下記の資料をご参照ください。SPField propertieshttp://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.spfield_properties(v=office.15).aspx例) 列のプロパティ情報を *.txt ファイルに出力する$web = Get-SPWeb http://sharepoint/sites/team$list = $web.Lists["ニュース"]$fields = $list.Fields$field = $fields.GetField("メモ")$field >C:\news.txt■列の編集
$field = $fields.GetField("<列名または列の内部名>")
#列のプロパティに値を設定します。
$field.<列のプロパティ> = <変更後のプロパティ値>
例) 列のタイトルを変更する$web = Get-SPWeb http://sharepoint/sites/team$list = $web.Lists["ドキュメント"]$fields = $list.Fields$field = $fields.GetField("DocumentCategory")$field.Title= "文書のカテゴリ"$field.Update()参考 : その他の <列のプロパティ> は下記の資料をご参照ください。SPField propertieshttp://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.spfield_properties(v=office.15).aspx■列の削除
#列を削除します。
例) 列を削除する$web = Get-SPWeb http://sharepoint/sites/team$list = $web.Lists["ニュース"]$fields = $list.Fields$field = $fields.GetField("メモ")$field.Delete()- 補足目的の処理を実施した後は、SPWeb.Dispose メソッドを使用して SPWeb オブジェクトを閉じ、リソースを解放します。
例) 日付と時刻列を追加し、既定値を今日の日付に設定する $web = Get-SPWeb http://sharepoint/sites/team$list = $web.Lists["ニュース"]$fields = $list.Fields$fName = $fields.Add("投稿日", [Microsoft.SharePoint.SPFieldType]::DateTime, $false)$field = $list.Fields.GetField($fName)$field.DisplayFormat = [Microsoft.SharePoint.SPDateTimeFieldFormatType]::DateOnly$field.DefaultValue = "[today]"$field.Update() $web.Dispose()