Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Modification de la date d’écriture d’un fichier sur un ensemble de serveurs en parallèle / Changing the last write time of a file on a set of servers using a parallel processing

English version
Lors d’une de mes sessions de formation PowerShell, un client m’a demandé la possibilité de modifier la date de dernière écriture d’un fichier sur un ensemble de serveurs (pour des problématiques de backup) en parallèle (pour des raisons de performance). Les workflows PowerShell permettent justement d’effectuer des tâches en parallèle. Après plusieurs tentatives de scripts infructueuses, j’ai bouti au script suivant (assez simple au prime abord – Le code source est disponible ici) :

01. 02.         This Sample Code is provided for the purpose of illustration only
03.         and is not intended to be used in a production environment.  THIS
04.         SAMPLE CODE AND ANY RELATED INFORMATION ARE PROVIDED “AS IS” WITHOUT
05.         WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
06.         LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS
07.         FOR A PARTICULAR PURPOSE.  We grant You a nonexclusive, royalty-free
08.         right to use and modify the Sample Code and to reproduce and distribute
09.         the object code form of the Sample Code, provided that You agree:
10.         (i) to not use Our name, logo, or trademarks to market Your software
11.         product in which the Sample Code is embedded; (ii) to include a valid
12.         copyright notice on Your software product in which the Sample Code is
13.         embedded; and (iii) to indemnify, hold harmless, and defend Us and
14.         Our suppliers from and against any claims or lawsuits, including
15.         attorneys’ fees, that arise or result from the use or distribution
16.         of the Sample Code.
17.
18.         Laurent VAN ACKER – [email protected]
19. #>
20.
21. workflow Set-LastWriteTime-WF
22. {
23.     [CmdletBinding()]
24.     Param(
25.         [String[]]$Computers,
26.         [String]$FullName,
27.         [Datetime]$LastWriteTime
28.     )
29.
30.     foreach -parallel($Computer in $Computers)
31.     {
32.         Set-ItemProperty -Path $FullName -Name LastWriteTime -Value $LastWriteTime -PSComputerName $Computer
33.     }
34. }
35.
36. Clear-Host
37. $Computers = “2012R2-MS”, “2012R2-DC”, “WIN8-WS”
38. Set-LastWriteTime-WF -Computers $Computers -FullName “C:WindowsWindowsUpdate.log” -LastWriteTime $(Get-Date) -Verbose

Quelques explications s’imposent :

  • Ligne de 1 à 19 : Disclaimer vous précisant que ce script est fourni à titre d’exemple sans aucune garantie plus divers autres points que je vous invite à lire attentivement
  • Ligne 21 : Définition du WorkFlow
  • Ligne 25 : Liste des serveurs cibles passée en paramètre via le paramètre Computers
  • Ligne 26 : Chemin absolu local du fichier dont on souhaite modifier la date via le paramètre FullName
  • Ligne 27 : Nouvelle date à valoriser pour le fichier via le paramètre LastWriteTime 
  • Ligne 30 : Boucle pour exécution en parallèle en parcourant la collection de serveurs passée en paramètre
  • Ligne 32 : Modification de la propriété LastWriteTime en utilisant la cmdlet  Set-ItemProperty pour l’ordinateur en cours de traitement. L’utilisation de la cmdlet Set-ItemProperty est possible dans ce contexte car elle a été packagée comme activité de Workflow.
  • Ligne 37 : On crée une liste de machines cibles
  • Ligne 38 : Lignes d’exemples : On lance le workflow sur les serveurs définis à la ligne précédente en modifiant la date du fichier “C:WindowsWindowsUpdate.log”à la date actuelle.

Laurent.


English Version Below …


Version française
Laurent.

Share the post

Modification de la date d’écriture d’un fichier sur un ensemble de serveurs en parallèle / Changing the last write time of a file on a set of servers using a parallel processing

×

Subscribe to Msdn Blogs | Get The Latest Information, Insights, Announcements, And News From Microsoft Experts And Developers In The Msdn Blogs.

Get updates delivered right to your inbox!

Thank you for your subscription

×