PowerShellからSharePointを操作できる。
C#で書くのとほぼ同じことができ、APIも一緒だということを頭に入れておくとすぐに作れる。
参考: Collaborative Application Markup Language のコア スキーマ
カスタムリストを作成する
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$siteUrl = "http://sharepointurl/hogesite/" $web = Get-SPWeb -identity $siteUrl # カスタムリストを作成 # サイト名に日本語文字列を入れるとそういうURLになってしまうので # 一旦英字のURLで作成してから日本語のタイトルを振りなおす $lists = $web.Lists $listGuid = $lists.Add("cat", "ねこちゃんリスト", [Microsoft.SharePoint.SPListTemplateType]::GenericList) $myCustomList = $lists.GetList($listGuid, $false) $myCustomList.Title = "ねこちゃんリスト" $myCustomList.Update() $web.Dispose() |
既存のリストを取得する
1 2 3 4 5 6 7 |
$siteUrl = "http://sharepointurl/hogesite/" $web = Get-SPWeb -identity $siteUrl $listUrl = "http://sharepointurl/hogesite/Lists/cat/"; $myCustomList = $web.GetList($listUrl) … |
リストのプロパティを更新する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
(省略) $myCustomList = $web.GetList($listUrl) # コンテンツタイプの管理を許可する $myCustomList.ContentTypesEnabled = $true # コンテンツタイプの紐付け $ContentType = $web.ContentTypes["対象のコンテンツタイプ"] $myCustomList.ContentTypes.Add($ContentType) $myCustomList.Update() # 既定のコンテンツタイプの設定 $result = New-Object System.Collections.Generic.List[Microsoft.SharePoint.SPContentType] $currentOrder = $myCustomList.ContentTypes foreach ($ct in $currentOrder) { if ($ct.Name.Contains("対象のコンテンツタイプ")) { # フォームの紐付け $ct.DisplayFormUrl = "_layouts/aaaaa.aspx" $ct.EditFormUrl = "_layouts/bbbbb.aspx" $ct.NewFormUrl = "_layouts/ccccc.aspx" $ct.Update() $result.Add($ct) } } $rootFolder = $myCustomList.RootFolder $rootFolder.UniqueContentTypeOrder = $result $rootFolder.Update() $myCustomList.Update() $web.Dispose() |
リストに列を追加/削除/更新する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
(省略) $myCustomList = $web.GetList($listUrl) # 列の追加 $Col01 = "<Field Type='Text' DisplayName='ほげ' MaxLength='255' StaticName='Hoge' Name='ほげ' />" $myCustomList.Fields.AddFieldAsXml($Col01,$true,[Microsoft.SharePoint.SPAddFieldOptions]::AddFieldToDefaultView) # 列の削除 $Col02 = $myCustomList.Fields.GetField('もげ') $Col02.Delete() # 列の更新 $Col03 = $myCustomList.Fields.GetField('まげ') $Col03.Type = [Microsoft.SharePoint.SPFieldType]::Text $Col03.MaxLength = 255 $Col03.DefaultValue = "あいうえお" $Col03.Update() $myCustomList.Update() $web.Dispose() |
サイト コンテンツ タイプを追加する
1 2 3 4 5 6 7 8 9 10 11 12 |
$siteUrl = "http://sharepointurl/hogesite/" $web = Get-SPWeb -identity $siteUrl $TypeName = "コンテンツタイプ名" $TypeParent = $web.AvailableContentTypes["Item"] $Type = New-Object Microsoft.SharePoint.SPContentType($TypeParent, $web.ContentTypes, $TypeName) $Type.Group = "グループ名" $web.ContentTypes.add($Type) $web.Dispose() |
他にもいろんなことができる。
参考