好的,我解决了这个问题。如果在运行批处理文件之前运行PowerShell脚本(我不知道以前有人运行过该脚本),则会发生此问题。因此,您需要使用converse powershell脚本文件convertlookupfieldwithpickertolookup.ps1并对列应用它。完成后,重新应用上面的第一个文件,它将全部工作。
代码如下:
param([string]$webUrl=$(throw 'Parameter -webUrl is missing!'),
[string]$listName=$(throw 'Parameter -listName is missing!'),
[string]$fieldTitle=$(throw 'Parameter -fieldTitle is missing!'))
$ErrorActionPreference = "Stop";
$env:12HivesDir = "$env:CommonProgramFiles\Microsoft Shared\web server extensions\12\";
$null = [System.Reflection.Assembly]::LoadFrom("$env:12HivesDir\ISAPI\Microsoft.SharePoint.dll");
$site = New-Object -TypeName "Microsoft.SharePoint.SPSite" -ArgumentList $webUrl;
$web = $site.OpenWeb();
$list = $web.Lists[$listName];
$field = $list.Fields[$fieldTitle];
$schema = [xml]$field.SchemaXml;
if ($schema.Field.AllowMultipleValues -eq $true)
{
$schema.Field.Type = "LookupMulti"
}
else
{
$schema.Field.Type = "Lookup"
}
$schema.Field.RemoveAttribute("SearchFields");
$schema.Field.RemoveAttribute("EntityEditorRows");
$schema.Field.RemoveAttribute("MaxSearchResults");
$field.SchemaXml = $schema.PSBase.OuterXml;
Write-Output "Done."