LoginSignup
0
1

More than 1 year has passed since last update.

【PowerShell】カスタムリストの選択肢列の項目を更新する

Last updated at Posted at 2021-11-05

Sharepoint カスタムリストの選択肢列の項目を PnP.PowerShell を使って更新する方法です。


関連ページ

PnP.PowerShell の使用方法は以下を参照してください。


選択肢列の項目を更新する

文字列の配列を指定して、選択肢列の項目を更新します。

Update-Choices.ps1
<#
.Synopsis
   選択肢更新
.DESCRIPTION
   選択肢の項目を更新します。
#>
function Update-Choices {
    [OutputType([string])]
    Param (
        # XML 文字列
        [Parameter(Mandatory, Position=0)]
        [string] $Xml,

        # 選択肢項目の配列
        [Parameter(Mandatory, Position=1)]
        [string[]] $Items
    ) Begin {
        [xml]$SchemaXml = $Xml
        $Choices = $SchemaXml.CreateElement("CHOICES")
    } Process {
        $Items | % {
            $element = $SchemaXml.CreateElement("CHOICE")
            $element.InnerText = $_
            $Choices.AppendChild($element) | Out-Null
        }
    } End {
        $SchemaXml.Field.AppendChild($Choices) | Out-Null
        $SchemaXml.OuterXml
    }
}

列を新規追加する場合

$ListName = 'List1'

# 列新規追加
$Field = Add-PnPField -List $ListName -DisplayName '果物' -InternalName Fruit -Type Choice -AddToDefaultView
$OuterXml = Update-Choices $Field.SchemaXml @('りんご', 'バナナ', 'みかん')
Set-PnPField -List $ListName -Identity $Field.Id -Values @{ SchemaXml = $OuterXml } -UpdateExistingLists

既存の列を更新する場合

$ListName = 'List1'

# 選択肢更新
$Field = Get-PnPField -List $ListName -Identity Fruit

## 選択肢クリア
[xml]$SchemaXml = $Field.SchemaXml
$SchemaXml.Field.CHOICES.RemoveAll()
[string] $Xml = $SchemaXml.OuterXml.Replace('<CHOICES></CHOICES>', '')

$OuterXml = Update-Choices $Xml @('ぶどう', 'メロン', '梨')
Set-PnPField -List $ListName -Identity $Field.Id -Values @{ SchemaXml = $OuterXml } -UpdateExistingLists

参考サイト

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1