PowerShell: ◆SharePoint InfoPathフォーム(xsn)をアップロードするでアップロードしたテンプレートは、そのままではまだ使えない。
テンプレートを使いたいサイトコレクションごとに「アクティブ化」という作業が必要になる。
GUIでの作業は、サーバー側の管理サイト「サーバー全体の管理」から行う方法と、サイトコレクションの「サイトの設定」から行う方法の2通りがある。
<サーバー全体の管理>
- 「サーバー全体の管理」「アプリケーション全般設定」「フォームテンプレートの管理」をクリック
- 「フォームテンプレートの管理」画面でテンプレートが一覧表示されるので対象のテンプレートのドロップダウンを表示させて「サイトコレクションへのアクティブ化」をクリック
- 「フォームテンプレートのアクティブ化」画面が表示されるので、アクティブ化したいサイトコレクションを選択し「OK」をクリック
<サイトコレクション・サイト設定>
- サイトコレクションのトップサイトを開く
- 設定ボタンをクリックし、表示されたメニューから「サイトの設定」をクリック
- 表示された「サイトの設定」画面から「サイトコレクションの管理」「サイトコレクションの機能」をクリック
- 表示された「サイトコレクションの機能」画面でアップロードしたテンプレートを探し「アクティブ化」ボタンをクリックする
<PowerShellでの設定>
PowerShellからは「Enable-SPInfoPathFormTemplate」コマンドレットを使えば一発で設定が可能だ。
>Enable-SPInfoPathFormTemplate -Identity xsnファイル名 -Site サイト |
前回のテンプレートアップロード時に一緒にやってしまえば良いだろう。
このコマンドは既に「アクティブ」な機能に対して行うとエラーが返ってくるので(無視しても良いが)一応確認してから登録することにした。
アクティブな機能を取ってくるのはとりあえず以下のような感じ。(ベストかとどうかは判らない)
>(Get-SPSite "http://sv/sites/hoge").Features | % properties | ? name -eq "OriginalFileName" | % value |
登録するInfoPathファイルがここで返ってくるコレクションに含まれるかチェックすればよい。
前回のアップロードに今回の「アクティブ化」を追加したのが以下のソース。
001 002 003 004 005 006 007 008 009 010 011 012 013 014 | #サイトコレクション取得 $Root = "http://sv01/sites/hoge" $siteCol = Get-SPSite $Root #InfoPathフォームアップロード&アクティブ化 $xsnDocs = $siteCol.Features | % properties | ? name -eq "OriginalFileName" | % value $oldSitePath = "\\spsv2010\DavWWWRoot\sites\site1\FormServerTemplates" #旧サイト dir $oldSitePath | %{ Install-SPInfoPathFormTemplate -Path $_.FullName if($xsnDocs -notcontains $_.Name){ Enable-SPInfoPathFormTemplate -Identity $_.Name -Site $Root } } |
0 件のコメント:
コメントを投稿