[SharePoint 2010] Récupérer la date d’un répertoire pour mettre à jour une propriété d’un document

Un petit script prenant le nom d’un répertoire similaire à :

XYZ_110904_ABC

et permettant d’extraire la date (ici “110904”) et de la spécifier comme propriété (ici la propriété “Date de la revue”) sur les documents contenus dans le répertoire parent.

if(-not(Get-PSSnapin « Microsoft.SharePoint.PowerShell » -ErrorAction SilentlyContinue | Where {$_.Name -eq « Microsoft.SharePoint.PowerShell »}))
{
    Write-Host « Chargement de la librairie SharePoint pour PowerShell »
    Add-PSSnapin Microsoft.SharePoint.PowerShell
}

$web = Get-SPWeb http://companyweb
$listRP = $web.Lists[« Revue de presse »]

# On récupère uniquement les répertoire contenant 6 chiffres dans leur nom
$listRP.Folders | ? { $_.Name -match « (?<num>\d{6}) » } | % {
    $_ -match « (?<num>\d{6}) » | out-null ;
    Write-Host « Update =>  » $_.Name
    $year = 0;
    $month = 0;
    $day = 0;
    [System.Int32]::TryParse($matches[0].Substring(0,2), [ref] $year)
    [System.Int32]::TryParse($matches[0].Substring(2,2), [ref] $month)
    [System.Int32]::TryParse($matches[0].Substring(4,2), [ref] $day)
    $year = $year+2000 # 11 => 2011
    $revueDate = New-Object System.DateTime($year, $month, $day)
    $files = $_.Folder.Files
   foreach ($file in $files)
   {
        Write-host « Traitement du fichier ==>  » $file.Name
        $file.Item[« Date de la revue »] = $revueDate
        $file.Item.Update();
   }
}

Si cela peut vous sauver quelques minutes de votre longue journée !