2011-12-08 1 views
3

J'ai reçu une liste de sharepoint personnalisée, avec une colonne de titre qui contient ServerNames et je me suis beaucoup de fichiers .csv qui a le même nom que le titreUploader des fichiers aux éléments de la liste Sharepoint

est-il en quelque sorte possible de télécharger em à l'élément de liste en pièce jointe avec un script? Peut-être Powershell? J'ai reçu plus de 100 fichiers, ce qui serait pénible si je devais tout faire manuellement.

Le fichier et la colonne Titre ressemble à ceci:

Title 
Server1.domain.com 

.csv 
Server1.domain.com.csv 

Ont été la recherche d'un certain temps, mais havent pu trouver tout ce que je pouvais utiliser

Répondre

4

Approche:

  1. Itérer sur les éléments de la liste SharePoint.
  2. Chargez le fichier CSV correspondant à l'aide du SPListItem.Title
  3. Ajoutez le fichier en pièce jointe au SPListItem.

Script:

$w = Get-SPWeb http://List/Location/Url 
$l = $w.Lists["TheList"] 

foreach ($item in $l.Items) 
{ 
    $file = Get-Item "$($item.Title).csv" 
    $stream = $file.OpenRead() 
    $buffer = New-Object byte[] $stream.length 
    [void]$stream.Read($buffer, 0, $stream.Length) 

    $item.Attachments.AddNow($file.Name, $buffer) 
} 

Considérations:

  1. Mise au rebut du flux de fichiers
  2. Mise au rebut de l'objet SPWeb
  3. fichiers manquants Manipulez

Modifier

Deux erreurs dans la première tentative:

  1. SPAttachmentCollection.Add attend un tableau d'octets.
  2. SPAttachmentCollection.AddNow doit être utilisé pour ajouter la pièce jointe directement (sans mise à jour du SPListItem)

Mise à jour le code ...

+0

Salut Stefan, Merci pour la réponse rapide, je reçois l'erreur suivante. Impossible de convertir l'argument "1" avec la valeur: "System.IO.FileStream", pour "Ajouter" de taper "System.Byte []": "Impossible de convertir la valeur" System.IO.FileStream "de type" System. IO.FileStream "to type" System.Byte [] "." À C: \ Scripts \ Upload Attachment.ps1: 7 char: 27 + $ item.Attachments.Add <<<< ($ file.Name, $ file.OpenRead()) + CatégorieInfo: NotSpecified: (:) [], MethodException + FullyQualifiedErrorId: MethodArgumentConversionInvalidCastArgument – Casper

+0

Désolé, à ce sujet. Mise à jour de la question – Stefan

+0

Merci beaucoup Stefan! Ça marche. Dernière question: existe-t-il un moyen pour le script de supprimer une pièce jointe de l'élément s'il existe déjà un fichier avant de le télécharger? – Casper

Questions connexes