使用PowerShell创建术语组/集/术语时遇lcid参数错误求助
问题原因与修复方案
错误根源
你遇到的lcid参数超出范围错误,核心原因是创建TermSet和Term时未指定有效的语言代码标识符(LCID)。SharePoint术语库是多语言架构,PnP PowerShell的New-PnPTermSet和New-PnPTerm cmdlet需要明确知道要为哪个语言版本创建术语集/术语,缺少这个参数时,cmdlet会尝试使用无效的默认值,从而触发报错。
另外你的脚本还有两个小问题:
$TermGroupDescription变量未定义,创建TermGroup时会传入空描述- Term存在性判断的提示文本写错了,把变量
$TermName写成了固定字符串TermName
修复后的脚本
下面是修正后的完整脚本,我添加了LCID参数(以简体中文2052为例,你可以根据实际需求换成其他LCID,比如英文1033),同时修复了上述两个小问题:
$TermGroup = Read-Host -Prompt 'Input your Term group' $TermSet = Read-Host -Prompt 'Input your Term set' $TermName = Read-Host -Prompt 'Input your Term name' # 初始化术语组描述,可根据需求修改 $TermGroupDescription = "Term group for $TermGroup" # 指定有效的LCID,这里用简体中文2052,英文用1033 $LCID = 2052 #Check if Term Group is empty If($TermGroup) { #Check if Term group exists If(-Not(Get-PnPTermGroup -Identity $TermGroup -ErrorAction SilentlyContinue)) { #Create new group in Termstore New-PnPTermGroup -Name $TermGroup -Description $TermGroupDescription Write-host -f Green "Term Group '$TermGroup' created successfully!" } Else { Write-host -f Yellow "Term Group '$TermGroup' already exists!" } } Else { Write-host -f Yellow "No 'TermGroup' provided" } #Check if Term Set is empty If($TermSet -and $TermGroup) { #Check if Term set exists If(-Not(Get-PnPTermSet -Identity $TermSet -TermGroup $TermGroup -ErrorAction SilentlyContinue)) { #Create new set in Termstore,添加LCID参数 New-PnPTermSet -Name $TermSet -TermGroup $TermGroup -LCID $LCID Write-host -f Green "Term Set '$TermSet' created successfully!" } Else { Write-host -f Yellow "Term Set '$TermSet' already exists!" } } Else { Write-host -f Yellow "No 'TermSet' provided or TermGroup is missing" } #Check if Term Name is empty If($TermName -and $TermSet -and $TermGroup) { #Check is Term Name exists If(-Not(Get-PnPTerm -Identity $TermName -TermSet $TermSet -TermGroup $TermGroup -ErrorAction SilentlyContinue)) { #Create new Term,添加LCID参数 New-PnPTerm -Name $TermName -TermSet $TermSet -TermGroup $TermGroup -LCID $LCID Write-host -f Green "Term '$TermName' created successfully!" } Else { Write-host -f Yellow "Term '$TermName' already exists!" } } Else { Write-host -f Yellow "No 'TermName' provided or TermSet/TermGroup is missing" }
关键修改点说明
- 添加LCID参数:在
New-PnPTermSet和New-PnPTerm中加入-LCID $LCID,确保cmdlet使用有效的语言上下文 - 初始化描述变量:定义
$TermGroupDescription,避免创建TermGroup时传入空值 - 增加依赖判断:在处理TermSet和Term时,先检查依赖的TermGroup/TermSet是否存在,避免无效操作
- 修正提示文本:把Term存在提示里的
TermName改成变量$TermName,显示正确的术语名称
内容的提问来源于stack exchange,提问作者DanielJ
相关产品推荐
相关产品推荐

