NiComoAyudarte.com

    Podcasts & Blogs de Sistemas y Computo en Mexico


Busqueda:

 Principal   |  Podcasts   |  Posts   |
 
Bienvenido al Podcast Mexico.

NiComoAyudarte es un podcast que tratara temas tecnologicos, en materia de sistemas y computo. Participa y disfruta con nosotros de un punto de vista diferente.

Nombre: Agregando records en una lista de Sharepoint usando powershell scripts

Comentario count: 0

Si estas usando la herramienta de Organizacion de Documentos de Microsoft Sharepoint, seguramente sabras que muchas veces es necesario tener datos que vienen de un archivo "CSV" para hacer esta informacion accessible.

Bueno aqui esta una receta muy sencilla, basicamente usa "Power Shell" que por cierto esta incluida en las versiones de Windows 7, pues basicamente la ventaja es que en un script de PowerShell podemos usar sintaxis de C# y VB.Net... bueno aqui usaremos las librerias de C# para abrir la conexion con tu Sitio de Sharepoint, luego con las funciones nativas de PowerShell usamos la funcion de CSV import y basicamente pasamos estas variables directo a nuestra lista de Sharepoint y listo, en un dos por tres tendras tu lista en Sharepoint

Iniciamos con crear un archivo de PowerShell en este caso: c:\AWCreateListItems.ps1 , recuerda que tendra la extension .ps1

################################################################################
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

function get-SPList([string] $url, [string] $listname) {
$site = new-object Microsoft.SharePoint.SPSite($url)
$web = $site.OpenWeb()
$list = $web.Lists[$listname]

$list
}

function CreateListItems([string] $filename, [string] $url, [string] $listname) {
$splist = SPList $url $listname

Import-csv $filename | foreach-object {
$item = $splist.Items.Add()
$item["Phone"] = $_.Phone
$item[“EmailAddress”] = $_.EmailAddress
$item[“AddressLine1”] = $_.AddressLine1
$item[“City”] = $_.City
$item[“StateProvinceName”] = $_.StateProvinceName
$item.Update();
}

}
CreateListItems $args[0] $args[1] $args[2]
################################################################################

Pon el contenido de tu archivo csv en: c:\AW.csv este es un ejemplo sencillo del CSV de Adventure Works donde pasamos sencillamente un directorio telefonico.

Para darte una idea el archivo CSV [c:\AW.csv] se ve como algo asi:
Phone,EmailAddress,AddressLine1,City,StateProvinceName
139-555-0131,jan0@adventure-works.com,6040 Main Street SW ,Lakewood ,Washington
299-555-0113,jun0@adventure-works.com,15600 NE 8th Street ,Bellevue ,Washington
992-555-0194,ascott0@adventure-works.com,545 BELLEVUE WAY ,Bellevue ,Washington
438-555-0172,alan0@adventure-works.com,619 N Columbia Center Blvd. ,Kennewick ,Washington
668-555-0130,alejandro0@adventure-works.com,4010 A St SE ,Auburn ,Washington
819-555-0198,alex0@adventure-works.com,10105 224th St E ,Graham ,Washington
333-555-0173,alice0@adventure-works.com,253 High School Rd NE ,Bainbridge Island ,Washington
775-555-0164,amy0@adventure-works.com,110 E 3rd St ,Port Angeles ,Washington
181-555-0124,andreas0@adventure-works.com,33702 21st Ave SW ,Federal Way ,Washington
207-555-0192,andrew1@adventure-works.com,703 Highway 2 ,Leavenworth ,Washington
908-555-0159,andrew0@adventure-works.com,10234 SE 256th Street ,Kent ,Washington
118-555-0110,andy0@adventure-works.com,2002 S Commons ,Federal Way ,Washington
150-555-0194,angela0@adventure-works.com,400 N Ruby St ,Ellensburg ,Washington
106-555-0120,anibal0@adventure-works.com,2255 Carillon Point ,Kirkland ,Washington
125-555-0196,annette0@adventure-works.com,6911 Coal Creek Pkwy SE ,Newcastle ,Washington

NOTA: Si por alguna razon tu directorio viene de PeopleSoft y/o algo asi y tiene "," enmedio de tu cadena de caracteres, asegurate que los datos estan entre comillas ..,"Apellido, Nombre",... y funcionara sin problema.

El script tomara 3 parametros donde para hacer las cosas mas faciles cree un archivo .bat donde pongo todo y solo lo ejecuto el .bat llama a su vez el script de power shell.

Ahora Crea un archivo c:\AWCreateListItems.bat que es el que ejecutaras de DOS.

powershell c:\AWCreateListItems.ps1 c:\AW.csv http://your_sharepoint_site.com 'AW'

Cuando ejecutes en una ventana de DOS este batch file llamara a su vez a tu archivo de PowerShell, invoca como parametro tu archivo .csv para importar, el URL de tu sitio de Sharepoint y la lista que debe existir con las columnas necesarias para importar los datos.

Tambien incluyo otro ejemplo de un script similar y lo que hace es borrar los records de la lista, esto podria ser util si tienes una lista que debe actualizarse con cierta regularidad puedes eliminar los records de la lista y luego re-cargar tu lista de Sharepoint completa, quizas no es lo mejor pero funciona al menos te dara una idea de como se podria hacer.

El archivo c:\DeleteListItems.ps1

################################################################################
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")

function get-SPList([string] $url, [string] $listname) {
$site = new-object Microsoft.SharePoint.SPSite($url)
$web = $site.OpenWeb()
$list = $web.Lists[$listname]

$list
}

function DisplayListItems([string] $url, [string] $listname) {
$splist = SPList $url $listname
$splist.Items | foreach-object {
$_.Delete();
}
}

DisplayListItems $args[0] $args[1]
################################################################################

Tu archivo bat: c:\DeleteListItems.bat
powershell c:\DeleteListItems.ps1 http://your_sharepoint_site.com 'AW'

Cuando lo ejecutes basicamente llama el powershell pasa como parametro el sitio de Sharepont y la Lista, entonces tu script de powershell eliminara cada record en la lista Sharepoint.

Espero que te sea de util la receta y hasta la proxima.

Dinooz

Links:

http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
http://sharepoint.microsoft.com/Pages/Default.aspx
http://msdn.microsoft.com/en-us/vcsharp/default.aspx

Webmasters
Dino Lopez
Paco Sanchez
Entertainment
Entertainment
Consultoria en Toluca, Mexico???
    Contactanos para cualquier asistencia y/o nuevo proyecto via telefonica.:
    .: Por correo: webmaster@guiatoluca.com
Participa en el Podcast
    Si te interesa algun tema en particular contactanos para cualquier sugerencia.:
    .: Por correo: webmaster@nicomoayudarte.com
AnunciateGratis.com
    1.- Tu aviso de texto categorizado en la seccion correspondiente para consulta y accesso inmediato.
    2.- Los avisos no expiraran mientras el sitio este activo y mientras el anuncio no sea ofensivo a la comunidad mexiquense.
    3.- Podemos agregar una imagen que represente a tu negocio, enviala y/o llamanos para una sesion fotografica, esta visita si tendra costo.
    4.- Porque buscar y encontrar tu negocios en google/yahoo es importante, no importa que tengas sitio de web te anunciamos de cualquier forma.
    5.- Si es totalmente Gratuito !!!
Copyright 2007 NiComoAyudarte.com ::D1N00Z::