2013年2月4日月曜日

◆SharePoint InfoPathフォーム テンプレートをアクティブ化する

PowerShell: ◆SharePoint InfoPathフォーム(xsn)をアップロードするでアップロードしたテンプレートは、そのままではまだ使えない。

テンプレートを使いたいサイトコレクションごとに「アクティブ化」という作業が必要になる。

GUIでの作業は、サーバー側の管理サイト「サーバー全体の管理」から行う方法と、サイトコレクションの「サイトの設定」から行う方法の2通りがある。

<サーバー全体の管理>

  • 「サーバー全体の管理」「アプリケーション全般設定」「フォームテンプレートの管理」をクリック
  • 「フォームテンプレートの管理」画面でテンプレートが一覧表示されるので対象のテンプレートのドロップダウンを表示させて「サイトコレクションへのアクティブ化」をクリック
    image
  • 「フォームテンプレートのアクティブ化」画面が表示されるので、アクティブ化したいサイトコレクションを選択し「OK」をクリック
    image

<サイトコレクション・サイト設定>

  • サイトコレクションのトップサイトを開く
  • 設定ボタンをクリックし、表示されたメニューから「サイトの設定」をクリック
    image
  • 表示された「サイトの設定」画面から「サイトコレクションの管理」「サイトコレクションの機能」をクリック
    image
  • 表示された「サイトコレクションの機能」画面でアップロードしたテンプレートを探し「アクティブ化」ボタンをクリックする
    image

<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 件のコメント:

コメントを投稿