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