Modificación del campo "Creado por" de una lista de Sharepoint 2010

Por defecto el campo “Creado por”, al igual que algunos otros dentro de una lista de SharePoint 2010, no pueden ser modificados por medio de una interfaz gráfica por defecto de SharePoint o un workflow, sin embargo, por medio de Powershell es posible hacerlo ejecutando algunos comandos.


Comparto con ustedes esta secuencia de comandos que funcionaron para mi en SharePoint 2010 con una lista llamada “Gestión Documental” y un campo secuencial “Código del documento” que sirve como identificador adicional de cada documento.


Las líneas “Read-Host” solicitan al usuario que ejecuta el script que ingrese el código del documento a modificar y el usuario con el cual se va a actualizar.


$Codigo = Read-Host “Ingrese el código del documento”
$Usuario = Read-Host “Ingrese el nombre del propietario”
$Web = Get-SPWeb http://sitiosharepoint
$List = $Web.Lists["Gestión Documental"]
$items = $List.Items


Foreach($item in $items)
{
if($item["Código del documento"] -eq $Codigo)
{
$item["Creado por"]=$usuario
$item["UsuarioCambios"]=”dominio\nombre_usuario”
$item.Update()
}
}


El formato del usuario debe ser ingresado como: ID;#nombre_usuario. Para obtener esta información el usuario debe estar registrado en SharePoint. Se puede obtener esta información con la siguiente secuencia de comandos:


$web=Get-SPWeb http://sitiosharepoint
$user=$web.SiteUsers["dominio\nombre_usuario"]
$user.id
42


En el caso de actualizaciones masivas es posible utilizar sentencias o consultas CAML para poder filtrar la cantidad de registros a retornar, por ejemplo (Extraído del sitio http://get-spscripts.com/2010/09/get-all-column-values-from-sharepoint.html):


#Check if the item is a file or list item and run a different query accordingly
    if ($list.BaseType -eq “DocumentLibrary”) {
        $queryString = “<Where><Eq><FieldRef Name=’FileLeafRef’ /><Value Type=’File’>” + $ItemName + “</Value></Eq></Where>”
    }
    else
    {
        $queryString = “<Where><Eq><FieldRef Name=’Title’ /><Value Type=’Text’>” + $ItemName + “</Value></Eq></Where>”
    }


    #Create the CAML query to find the item
    $query = New-Object Microsoft.SharePoint.SPQuery
    $query.Query = $queryString
    $item = $list.GetItems($query)[0]


Para poder construir las consultas CAML utilizando la herramienta “U2U CAML Query Builder” que se lo puede descargar de http://www.u2u.net/Tools/wincamlquerybuilder/CamlQueryBuilder.aspx


Algunos enlaces adicionales que les pueden servir:


- http://sharepointrelated.com/2012/05/03/addedit-list-items-using-powershell-in-sharepoint-2010/


- http://davidlozzi.com/2012/02/14/playing-with-sharepoint-data-in-powershell/

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>