Auf das neue Feld kann nicht über Powershell zugegriffen werden
-
28-09-2020 - |
Frage
Ich habe in SP eine Liste „Bestellungen“, in der ich einige Daten habe.Die Listendefinition und die Instanz wurden zuvor in Visual Studio erstellt und dann erfolgreich bereitgestellt.
Heute habe ich VS erneut geöffnet und ein neues Auswahlfeld „OrderType“ hinzugefügt schema.xml
Datei.Außerdem habe ich dieses Feld zu allen Ansichten hinzugefügt.Jetzt kann ich es auf Listenansichtsseiten sehen. Ich kann dieses Feld erfolgreich über CodeBehind festlegen, wenn ich ein neues Element hinzufüge:
SPListItem item = SPContext.Current.List.AddItem();
item["Title"] = "MyNewTitle";
item["OrderType"] = "Choice1";
item.Update();
Wenn ich jedoch versuche, über Powershell auf dieses Feld zuzugreifen, erhalte ich die Fehlermeldung:
$web = Get-SPWeb http://myweb
$list = $web.lists["Orders"]
$items = $list.items
$item = $items[0] # Item with filled fields
$item["OrderType"] # Returns nothing
$item["OrderType"] = "Choice1" # Returns error
$item.Update()
Fehler:
Unable to index into an object of type Microsoft.SharePoint.SPListItem.
At line:1 char:7
+ $item[ <<<< "OrderType"] = "Choice1"
+ CategoryInfo : InvalidOperation: (OrderType:String) [], RuntimeException
+ FullyQualifiedErrorId : CannotIndex
Tatsächlich kann ich das Feld nicht einmal im Internet finden:
$list.Fields.GetField("OrderType")
Fehler:
Exception calling "GetField" with "1" argument(s): "Column 'OrderType' does not exist. It may have been deleted by another user."
At line:1 char:22
+ $list.Fields.GetField <<<< ("OrderType")
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
Ich habe volle Zugriffsberechtigungen für den Artikel.Ich kann dieses Feld und seine Daten immer noch auf meinen Listenansichtsseiten sehen.
Wo irre ich mich?
Lösung 2
Ich habe die Lösung gefunden, einfach mein „problematisches“ Feld über „Liste“ -> „Site-Einstellungen“ -> „OrderType“ geöffnet und dann auf „OK“ geklickt (ich habe keine Änderungen vorgenommen).Jetzt kann ich über Powershell darauf zugreifen.Dank an dieser Beitrag (Es geht um Site-Spalten, aber die Lösung ist ähnlich)!
Andere Tipps
Hier finden Sie PowerShell-Beispiele zum Abrufen/Festlegen von Auswahlfeldern:http://social.technet.microsoft.com/wiki/contents/articles/20831.sharepoint-a-complete-guide-to-getting-and-setting-fields-using-powershell.aspx#Set_and_Get_a_Choice_Field
Sie sollten Ihren Feldwert beispielsweise wie folgt festlegen können:
$item["OrderType"] = $list.Fields["OrderType"].GetFieldValue("Choice1");
$item.Update();