O novo campo não está acessível via Powershell
-
28-09-2020 - |
Pergunta
Tenho uma lista "Pedidos" em SP, onde tenho alguns dados.A definição de lista e a instância foram criadas anteriormente no Visual Studio e implantadas com êxito.
Hoje abri o VS novamente e adicionei um novo campo de escolha "OrderType" ao schema.xml
arquivo.Também adicionei este campo a todas as visualizações.Agora, posso vê-lo nas páginas de exibição de lista. Posso definir com êxito esse campo no codebehind ao adicionar um novo item:
SPListItem item = SPContext.Current.List.AddItem();
item["Title"] = "MyNewTitle";
item["OrderType"] = "Choice1";
item.Update();
Mas, quando tento acessar este campo do Powershell, recebo um erro:
$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()
Erro:
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
Na verdade, não consigo encontrar o campo na web:
$list.Fields.GetField("OrderType")
Erro:
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
Tenho permissões de acesso total para o item.Ainda consigo ver esse campo e seus dados nas minhas páginas de exibição de lista.
Onde estou errado?
Solução 2
Encontrei a solução, simplesmente abri meu campo "problemático" via "Lista" -> "Configurações do site" -> "OrderType" e pressionei "OK" (não fiz nenhuma alteração).Agora posso acessá-lo via Powershell.Graças a esta postagem (trata-se de colunas de sites, mas a solução é semelhante)!
Outras dicas
Você pode encontrar exemplos do PowerShell aqui para obter/definir campos de escolha: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
Por exemplo, você deve ser capaz de definir o valor do seu campo assim:
$item["OrderType"] = $list.Fields["OrderType"].GetFieldValue("Choice1");
$item.Update();