backuppersonnalfolder

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
backuppersonnalfolder [2019/12/05 16:14] – [Script principal] nekanbackuppersonnalfolder [2021/03/05 16:12] (Version actuelle) nekan
Ligne 1: Ligne 1:
-~~CLOSETOC~~ 
 ====== Backup-PersonnalFolder - Sauvegarde de dossiers utilisateurs ====== ====== Backup-PersonnalFolder - Sauvegarde de dossiers utilisateurs ======
 +<label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/11/28 14:13//
  
 Il y a des utilisateurs qui prennent l'habitude de garder des documents sur leur poste au lieu de les déposer dans un partage du serveur de fichiers. Cette manière de fonctionner est à proscrire car la sécurité des documents n'est pas garantie. Les administrateurs en charge de l'infrastructure n'ont aucune vision sur leur intégrité ni leur sauvegarde. Les habitudes ayant la vie dure, on est souvent amené à s'adapter à ce genre de comportement. Il y a des utilisateurs qui prennent l'habitude de garder des documents sur leur poste au lieu de les déposer dans un partage du serveur de fichiers. Cette manière de fonctionner est à proscrire car la sécurité des documents n'est pas garantie. Les administrateurs en charge de l'infrastructure n'ont aucune vision sur leur intégrité ni leur sauvegarde. Les habitudes ayant la vie dure, on est souvent amené à s'adapter à ce genre de comportement.
Ligne 429: Ligne 429:
  # Formatage du chemin du ShadowCopy  # Formatage du chemin du ShadowCopy
  $CorrectPath = $ID.DeviceObject + "\"  $CorrectPath = $ID.DeviceObject + "\"
 + # Création du type d'objet [Custom.SymLink] pour le lien symbolique
 + Try
 + {
 +     $Null = [Win32.SymLink]
 + }
 + Catch
 + {
 +     Add-Type @"
 +         using System;
 +         using System.Runtime.InteropServices;
 +  
 +         namespace Win32
 +         {
 +             public class SymLink
 +             {
 +                 [DllImport("kernel32.dll")]
 +                 public static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags);
 +             }
 +         }
 +"@
 + }
 +                
  # Création du lien symbolique  # Création du lien symbolique
- cmd /c mklink /d C:\ShadowCopy $CorrectPath | Out-Null + [Win32.SymLink]::CreateSymbolicLink("C:\ShadowCopy", $CorrectPath, 1) 
- +
  # Identifiants pour l'élévation de droits  # Identifiants pour l'élévation de droits
  $Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $Pass  $Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $Pass
Ligne 455: Ligne 477:
  $FileToBackup | ForEach-Object {  $FileToBackup | ForEach-Object {
  $FileFullName = $_.FullName  $FileFullName = $_.FullName
- $PrintName = $FileFullName.Replace('ShadowCopy\', '')+ $PrintName = $FileFullName.Replace("ShadowCopy\", '')
  $TestFile = ($_.FullName).Replace($ScriptSource, "${Drive}:")  $TestFile = ($_.FullName).Replace($ScriptSource, "${Drive}:")
  $TestFileType = (Get-Item -Path $TestFile).GetType().Name  $TestFileType = (Get-Item -Path $TestFile).GetType().Name
- If ((Test-Path $TestFile) -and ($TestFileType -ne 'DirectoryInfo'))+ If ((Test-Path $TestFile) -and ($TestFileType -ne "DirectoryInfo"))
  {  {
  $SourceFileDate = Get-Date -Date (Get-ItemProperty -Path $FileFullName).LastWriteTime  $SourceFileDate = Get-Date -Date (Get-ItemProperty -Path $FileFullName).LastWriteTime
Ligne 468: Ligne 490:
  {  {
  Copy-Item -Path $FileFullName -Destination $TestFile  Copy-Item -Path $FileFullName -Destination $TestFile
- $CheckDate = Get-Date -Format 'G'+ $CheckDate = Get-Date -Format G
  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [GOOD]    $UpdateMessage $PrintName"  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [GOOD]    $UpdateMessage $PrintName"
  }  }
  Catch  Catch
  {  {
- $CheckDate = Get-Date -Format 'G'+ $CheckDate = Get-Date -Format G
  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [CRIT]    $UpdateErrorMessage $PrintName"  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [CRIT]    $UpdateErrorMessage $PrintName"
  }  }
Ligne 481: Ligne 503:
  {  {
  $RecentFile = $TestFile.Replace("${Drive}:", $ScriptDestination)  $RecentFile = $TestFile.Replace("${Drive}:", $ScriptDestination)
- $CheckDate = Get-Date -Format 'G'+ $CheckDate = Get-Date -Format G
  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [CRIT]    $FileIOnBackupMoreRecent $RecentFile"  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [CRIT]    $FileIOnBackupMoreRecent $RecentFile"
  }  }
Ligne 487: Ligne 509:
  If ($SourceFileDate -eq $DestinationFileDate)  If ($SourceFileDate -eq $DestinationFileDate)
  {  {
- $CheckDate = Get-Date -Format 'G'+ $CheckDate = Get-Date -Format G
  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [INFO]    $SameFile $PrintName"  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [INFO]    $SameFile $PrintName"
  }  }
Ligne 502: Ligne 524:
  {  {
  Remove-Item -Path $FileFullName -Force -Recurse 2> $Null  Remove-Item -Path $FileFullName -Force -Recurse 2> $Null
- $CheckDate = Get-Date -Format 'G'+ $CheckDate = Get-Date -Format G
  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [GOOD]    $DeleteMessage $FileFullName"  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [GOOD]    $DeleteMessage $FileFullName"
  }  }
  Catch  Catch
  {  {
- $CheckDate = Get-Date -Format 'G'+ $CheckDate = Get-Date -Format G
  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [WARN]    $DeleteErrorMessage $FileFullName"  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [WARN]    $DeleteErrorMessage $FileFullName"
  }  }
Ligne 517: Ligne 539:
  $FileFullName = $_.FullName  $FileFullName = $_.FullName
  $TestFile = ($_.FullName).Replace($ScriptSource, "${Drive}:")  $TestFile = ($_.FullName).Replace($ScriptSource, "${Drive}:")
- $PrintName = $FileFullName.Replace('ShadowCopy\', '')+ $PrintName = $FileFullName.Replace("ShadowCopy\", '')
  If (-not (Test-Path $TestFile))  If (-not (Test-Path $TestFile))
  {  {
Ligne 523: Ligne 545:
  {  {
  Copy-Item -Path $FileFullName -Destination $TestFile  Copy-Item -Path $FileFullName -Destination $TestFile
- $CheckDate = Get-Date -Format 'G'+ $CheckDate = Get-Date -Format G
  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [GOOD]    $NewFileMessage $PrintName"  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [GOOD]    $NewFileMessage $PrintName"
  }  }
  Catch  Catch
  {  {
- $CheckDate = Get-Date -Format 'G'+ $CheckDate = Get-Date -Format G
  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [CRIT]    $NewFileErrorMessage $PrintName"  Add-Content -Path "${Drive}:\$LocalBackupLogFile" -Value "$CheckDate    [CRIT]    $NewFileErrorMessage $PrintName"
  }  }
Ligne 538: Ligne 560:
   
  # Suppression du lien de shadowcopy  # Suppression du lien de shadowcopy
- cmd /c rmdir C:\ShadowCopy+ (Get-Item -Path C:\ShadowCopy).Delete() 
  }  }
   
Ligne 746: Ligne 768:
 Else Else
     {     {
-        echo "Unknown - Error in SaveReport.dat, please check"+        Write-Host "Unknown - Error in SaveReport.dat, please check"
         exit $ExitCode         exit $ExitCode
     }     }
  
-echo "$Output - Total : $Total, Saved : $Saved, Offline : $Offline, Warning : $Warning, Error : $Critical"+Write-Host "$Output - Total : $Total, Saved : $Saved, Offline : $Offline, Warning : $Warning, Error : $Critical"
 exit $ExitCode exit $ExitCode
  
 </sxh> </sxh>
- 
- --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/11/28 14:13// 
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  • backuppersonnalfolder.1575558851.txt.gz
  • Dernière modification : 2019/12/05 14:14
  • (modification externe)