我尝试将新字段添加到SharePoint列表并设置其内部名称。我同时指定了静态名称和显示名称,但我无法确定内部名称设置为First_x0020_Name
的原因。
$web = Get-SPWeb 'https://server'
$list = $web.Lists['listName']
$newFieldXML = '<Field Type="Text" StaticName="FirstName" DisplayName="First Name"></Field>'
$list.Fields.AddFieldAsXml($newFieldXML)
答案 0 :(得分:4)
这对我来说很有用 -
XML格式应为:
$newFieldXML = '<Field Type="Text" Name="FirstName" StaticName="FirstName" DisplayName="First Name"></Field>'
在PowerShell中使用[Microsoft.SharePoint.SPAddFieldOptions]::AddFieldInternalNameHint
作为AddFieldAsXml
函数
$spListFields = $spList.Fields.AddFieldAsXml($newFieldXML, $true, [Microsoft.SharePoint.SPAddFieldOptions]::AddFieldInternalNameHint)
答案 1 :(得分:1)
看起来像AddFieldAsXml cannot be used to set the internal name
根据文章,如果你想使用AddFieldAsXml来设置你需要的内部名称:
- 定义您的CAML,以便您想要使用的内部名称 实际设置为显示名称
- 通过调用AddFieldAsXml
创建字段- 创建字段后,使用内部名称检索它,并将Title属性设置为您想要的实际显示名称 在第一位
醇>
您还需要两个步骤:检索字段并设置内部名称
答案 2 :(得分:1)
使用:
$list.Fields.AddFieldAsXml($newFieldXML, $true,[Microsoft.SharePoint.SPAddFieldOptions]::AddFieldInternalNameHint)
而不是
$list.Fields.AddFieldAsXml($newFieldXML)
答案 3 :(得分:1)
<强>解决:强>
请在下面的帖子中查看答案:
Set Field Internal Name For New Fields
示例代码:
请使用[Microsoft.SharePoint.Client.AddFieldOptions] :: AddFieldInternalNameHint
$fieldXml="<Field Type='Text' DisplayName='"+ $Field_DisplayName +"'
Required='"+$Field_Required+"' MaxLength='255'
StaticName='"+$Field_InternalName+"' Name='"+$Field_InternalName+"' />
$spoList.Fields.AddFieldAsXml($fieldXml,$true,[Microsoft.SharePoint.Client.AddFieldOptions]::AddFieldInternalNameHint)
$spoList.Update()
$clientContext.ExecuteQuery()
答案 4 :(得分:0)
您可以使用此脚本创建具有内部名称的字段,然后更新显示名称。
$web = Get-SPWeb 'https://server'
$list = $web.Lists['listName']
$newFieldXML = '<Field Type="Text" StaticName="FirstName"
DisplayName="FirstName"></Field>'
$list.Fields.AddFieldAsXml($newFieldXML)
$fld = $list.Fields["FirstName"]
$fld.Title = "First Name"
$fld.Update();
答案 5 :(得分:0)
创建后,您无法更改字段的internalName。 如果使用XML创建字段: 字段的internalName使用属性设置:&#34; 名称&#34;
所以你的字段XML定义应该是:
$newFieldXML = '<Field Type="Text" Name="FirstName" StaticName="FirstName" DisplayName="First Name"></Field>'