如何使用 PowerShell 在 SharePoint 列表中设置必填字段?
要求:在 SharePoint Online 列表中设置必填字段。
如何设置 SharePoint 中所需的列表字段?
SharePoint Online 中的必填字段是用户在创建或编辑项目时必须填写的列。必填字段是确保始终捕获某些信息以及输入到列表或库中的数据一致和完整的一种方法。用户在必填字段输入值之前无法保存项目。在本文中,我们将探讨如何使用列表设置和 PowerShell 脚本将网站栏设置为可选或必需。
要在 SharePoint 中将某个字段设置为必填字段,或在 SharePoint 列表中删除必填字段(使其成为非必填字段),请按照以下步骤操作:
PowerShell 设置 SharePoint Online 列表中所需的字段:
您想使用 PowerShell 将 SharePoint 列表中的字段设置为必填字段吗?这可以通过将字段的必需属性设置为 $true 来完成。在这篇博文中,我们将向您展示如何执行此操作。我们还将提供一个脚本,您可以使用该脚本将 SharePoint 列表中的所有字段设为必填。快乐的脚本编写!
以下是将列设置为“必填”的 PowerShell:
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Set parameter values
$SiteURL="https://Crescent.sharepoint.com/"
$ListName="Projects"
$FieldName="StartDate"
#Get Credentials to connect
$Cred= Get-Credential
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Get the List
$List = $Ctx.Web.lists.GetByTitle($ListName)
#Get the Field
$Field = $List.Fields.GetByInternalNameOrTitle($FieldName)
$Field.Required = $True
$Field.Update()
$Ctx.ExecuteQuery()
Write-host "Field 'Required' Settings Updated!"
这使得该字段在 SharePoint 中成为必需字段。同样,要删除 SharePoint 列表中多个字段的必填字段设置,请使用:
#Set parameter values
$SiteURL="https://Crescent.sharepoint.com/"
$ListName="Projects"
#Set Field Internal Names to make required or disable required
$FieldNames=@("StartDate","ProjectID","Category","Budget")
#Get Credentials to connect
$Cred= Get-Credential
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Get the List
$List = $Ctx.Web.lists.GetByTitle($ListName)
#Iterate through each field given
ForEach($FieldName in $FieldNames)
{
#Get the Field
$Field = $List.Fields.GetByInternalNameOrTitle($FieldName)
#disable "required" setting for the field
$Field.Required = $False
$Field.Update()
$Ctx.ExecuteQuery()
Write-host "Field '$FieldName' Required Settings Updated!"
}
PnP PowerShell 设置 SharePoint Online 中所需的列表列
#Config Variables
$SiteURL = "https://Crescent.sharepoint.com"
$ListName = "Team Projects"
$FieldName= "ProjectStatuss" #Internal Name
#Get Credentials to connect
$Cred = Get-Credential
Try {
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials $Cred
#Get the Field from List
$Field = Get-PnPField -List $ListName -Identity $FieldName -ErrorAction Stop
#Set the Field Required
$Field.Required = $True
$Field.Update()
$Field.Context.ExecuteQuery()
Write-host -f Green "Field '$FieldName' Set to Mandatory!"
}
catch {
write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}
设置所有必需的列怎么样?使用 Set-PnPField cmdlet!
#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/PMO"
$ListName = "Projects"
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive
#Get all fields from the list
Get-PnPField -List $ListName | Where { $_.Required -eq $False -and $_.Title -ne "Name" -and $_.ReadOnlyField -eq $false -and `
$_.Hidden -eq $false -and $_.InternalName -ne "ContentType" -and $_.InternalName -ne "Attachments"} | Set-PnPField -Values @{Required=$True}
同样,您可以使用以下命令删除 SharePoint Online 中所有字段的必填标志:
Get-PnPField -List $ListName | Where { $_.Required -eq $True -and $_.Title -ne "Name" -and $_.ReadOnlyField -eq $false -and $_.Hidden -eq $false -and $_.InternalName -ne "ContentType" -and $_.InternalName -ne "Attachments"} | Set-PnPField -Values @{Required=$False}
在本地 SharePoint 中禁用必填字段:
如果您需要删除 SharePoint 列表中字段的必填标志,请使用以下 PowerShell:
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
#Set Variables
$SiteURL="https://intranet.crescent.com"
$ListName="Projects"
$FieldName="StartDate"
#Get Web, List and Field Objects
$Web = Get-SPWeb $SiteURL
$List = $Web.Lists[$ListName]
$Field = $List.Fields[$FieldName]
#Set Required to False
$Field.Required = $False
$Field.Update()
Write-host "Field Required Setting updated!"
这将删除 SharePoint 列表中的必填字段(使该字段成为非必填字段)。
