bugfix> powershell > 投稿

foreach を使用した簡単なスクリプトがありますリスト要素。 各アイテムについて、 ContentTypeId を置き換えるだけです新しいものと。 私の ContentTypeId リストに対して有効です。 しかし、私はあるエラーがあります

SystemUdapte with 0 arg(s) value is not in the range

か何か 英語のように(メッセージはフランス語です)。

$web = Get-SPWeb http://mysite
$list = $web.Lists["MyList"]; 
$spqQuery = New-Object Microsoft.SharePoint.SPQuery
$spqQuery.Query = ""
$spqQuery.ViewFields= '<FieldRef Name="Title" /><FieldRef Name="ContentType" /><FieldRef Name="FileRef" /><FieldRef Name="ContentTypeId" />'
$spqQuery.ViewFieldsOnly = $true
$spqQuery.RowLimit = 5000    
$listItems = $list.GetItems($spqQuery)
foreach ($item in $listItems)
{
  $item["ContentTypeId"] = "0x01010054AD59695853624FB33312A5507FAF03030076DEFBBE080151418469AFD0CC4364C6"
  $item.SystemUpdate()
}

アイデアはありますか?

回答 1 件
  • 以下のようにスニペットを変更します。

    $web = Get-SPWeb http://sp/sites/dev
    $list = $web.Lists["RestDate"]; 
    $spqQuery = New-Object Microsoft.SharePoint.SPQuery
    $spqQuery.Query = ""
    $spqQuery.RowLimit = 5000    
    $listItems = $list.GetItems($spqQuery)
    foreach ($item in $listItems)
    {
      $item["ContentTypeId"] = "0x010800DE27E128A6FA704285FC5BD90F4D2D22"
      $item.Update()
    }
    
    

    「0x010800DE27E128A6FA704285FC5BD90F4D2D22」はタスクコンテンツタイプIDであり、期待どおりに機能します。

あなたの答え