2009-06-11 16 views
1

J'utilise le ilovesharepoint Lookup Field with Picker qui est codé sur un environnement standard Moss 2007. J'ai exécuté le projet d'installation, puis dans Powershell a publié la commande appropriée pour modifier un champ de recherche à la recherche avec sélecteur (ConvertLookupToLookupFieldWithPicker.ps1) qui est illustré ci-dessous.Modifier le type de colonne de la liste à partir de Recherche dans Sharepoint

# http://www.iLoveSharePoint.com 
# by Christian Glessner 

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; 

$schema.Field.Type = "LookupFieldWithPicker" 

if($schema.SelectSingleNode("//@SearchFields") -eq $null) 
{ 
    $searchFields = $schema.CreateAttribute("SearchFields"); 
    $searchFields.PSBase.Value = [Microsoft.SharePoint.SPBuiltInFieldId]::ID.ToString(); 
    $schema.Field.PSBase.Attributes.Append($searchFields); 
} 

$field.SchemaXml = $schema.PSBase.OuterXml; 

Write-Output "Done." 

Je continue à voir cette erreur venir

1d22ea11-1e32-424e-89AB-9fedbadb6ce1 paramètre Exception "SchemaXml":. « Champ non soutenu par le changement de type Le champ ne peut pas être changé Pour le nouveau type, veuillez vérifier le nouveau type et réessayer. " C: \ Documents and Settings \ xgrmmart \ Desktop \ icgpm \ deploy \ ConvertLookupToLookupFieldWithPicker.ps1: 29 ombles: 8 + field.S $ < < < < chemaXml = $ schema.PSBase.OuterXml;

Aucune idée de pourquoi cela ne fonctionne pas .... fonctionnait parfaitement dans l'environnement de test. Je ne suis pas un expert sur PowerShell et toute aide est très appréciée. Merci.

Répondre

1

Ok J'ai corrigé ce problème. Le problème se produit si vous exécutez le script PowerShell avant d'exécuter le fichier de commandes (je ne savais pas que quelqu'un l'avait déjà exécuté). Vous devez donc utiliser le fichier de script PowerShell convertible ConvertLookupFieldWithPickerToLookup.ps1 et l'appliquer aux colonnes. Une fois que vous avez terminé, réappliquez le premier fichier ci-dessus et tout devrait fonctionner.

Le code est le suivant:

# http://www.iLoveSharePoint.com 
# by Christian Glessner 

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." 
Questions connexes