PowerShell: ◆SharePoint サイトコレクションにサイトを追加する
上記でサイトの追加まで出来たので、今度はそのサイトにライブラリを追加する。
ここでは、「データ接続ライブラリ」を追加してみた。
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 | #ライブラリ追加 $DLIB = "D接続LIB" $web = Get-SPWeb "http://server/sites/web1" if($web.Lists.title -notcontains $DLIB){ $listid = $web.Lists.Add($DLIB,"汎用データ接続ライブラリ","DataConnectionLibrary") $url = $web.Lists | ? id -eq $listid | % defaultviewurl $pubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web) $nvnode = New-Object Microsoft.SharePoint.Navigation.SPNavigationNode($DLIB,$url) $prvnode = $pubweb.Navigation.CurrentNavigationNodes | ? title -eq "ドキュメント" $pubweb.Navigation.CurrentNavigationNodes.Add($nvnode,$prvnode) } |
基本的には、3行目でWebサイトを取得して、その「Lists」コレクションに「Add」してあげれば良い。
Add(ライブラリ名称,説明,ライブラリの種類)
としてあげれば良いのだが、このライブラリの種類(テンプレート)をどう指定すればよいのかちょっと考えてしまう。
きっと英語ならそのままなのだろうが・・・。
サイトテンプレートは「Get-SPWebTemplate」が用意されていたが、ライブラリの場合はWebサイトのインスタンスから直接取得できるようだ。
ただし、「Add」メソッドに指定するのは日本語ではないので、果たしてどのプロパティか?となるのだが、眺めてみても今一つしっくりこない。
とりあえず「Type」が使えた(どのライブラリでも使えるのかは?)。
ライブラリの追加自体はこれでOKとなったのだが、通常ライブラリはサイドリンクバーに表示する。
これをGUIでやるには「サイトの設定」メニューで「ナビゲーション」を選び、
「構造ナビゲーション」で「現在のナビゲーション」に追加してあげれば良い。
これを「PowerShell」でやるために、9,10行目で現在のWebサイトの「PublishengWeb」を取得。(それって何?って話もあるが、とりあえずGUIメニューで選んだ「ナビゲーション」そのものと思っておく)
あとは15行目で、「PublishengWeb」の「Navigation」ノードに追加してあげれば良い。
追加するにはライブラリを「SPNavigationNode」オブジェクトにしないといけないのだが、これは「名前」と「url」から直接コンストラクトできる。
15行目の「CurrentNavigationNodes」が返してくる「SPNavigationNodeCollection」には「Add」メソッド以外にも「AddAsFirst」と「AddAsLast」メソッドがあり、後ろに追加していくだけなら「AddAsLast」を使った方が簡単だが、2013ではトップサイトのナビゲーションに自動で「最近使った項目」なるものが表示される。(非表示にもできるが)
できればそいつの前に追加したかったので、「ドキュメント」ライブラリを見つけて、その後ろに追加する事とした。
また、7,8行目では追加したライブラリのURLを取得している。
通常であれば第1引数で指定したタイトルがそのまま使われるのだが、タイトルに日本語を含む場合はその部分が削除されるようだ。
例えば、「D接続LIB」であればURLには「DLIB」が使われる。
これで決め打ちしても良いのだが、一応追加されたIDで取得しなおしてURLを拾っている。
ADDメソッドにはURLを指定するオーバーロードもあるのだがSharePoint的に今一つ使い方が判っていないので・・・。
0 件のコメント:
コメントを投稿