如何使用PowerShell设置新SharePoint字段的内部名称?

时间:2016-03-21 20:38:38

标签: powershell sharepoint

我尝试将新字段添加到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)

6 个答案:

答案 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来设置你需要的内部名称:

  
      
  1. 定义您的CAML,以便您想要使用的内部名称   实际设置为显示名称
  2.   
  3. 通过调用AddFieldAsXml
  4. 创建字段   
  5. 创建字段后,使用内部名称检索它,并将Title属性设置为您想要的实际显示名称   在第一位
  6.   

您还需要两个步骤:检索字段并设置内部名称

答案 2 :(得分:1)

使用:

$list.Fields.AddFieldAsXml($newFieldXML, $true,[Microsoft.SharePoint.SPAddFieldOptions]::AddFieldInternalNameHint)

而不是

$list.Fields.AddFieldAsXml($newFieldXML)

参考this link

答案 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>'