-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPowerShell_Windows_BackUpFiles
125 lines (97 loc) · 4.02 KB
/
PowerShell_Windows_BackUpFiles
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
Import-Module ActiveDirectory
Set-ExecutionPolicy Unrestricted
cls
##################################################
#Lister tous les utilisateur dans $DC :
function creerListUser {
$listU=@()
$b=Get-ADUser -Filter * -Properties * | where{$_.enabled -eq $true}
foreach ($g in $b) {
$user = $g
$listU += $user
}
$listU = $listU.SamAccountName | Sort-Object
return $listU
}
##################################################
#gestion des erreurs
Trap {
#continue
}
###################################################
#FUNCTION: Creer liste de tous les post dans réseaux
function makeList{
$list_pcf = Get-ADComputer -Filter * | Where-Object {$_.Name -like "DESTOP*"}
$list_pcf = $list_pcf.name | Sort-Object
return $list_pcf
}
###################################################
#FUNCTION: Creer path de chaque post et mettre dans un list
#ATTENTION: Cette fonction a besoin les fonctions: makeList et creerListUser
#
function backupPCs{
$listPath=@()
$listPC= makeList
echo "Liste de tous les PC dans réseau:`n"
$listPC
$listUser= creerListUser
echo "`n`nListe de tous les utilisateurs du base `"$baseSearch`":`n"
$listUser
$date = Get-Date -Format d.MMMM.yyyy
$destinationUserFolder = "\\sv1paris\sav$\backUpPCs.$date"
$pathIsHere = test-Path $destinationUserFolder
if ($pathIsHere -eq $true) {
write-Host "`n`nDossier existe déjà"
}
else{
mkdir $destinationUserFolder
write-Host "`n`n$destinationUserFolder créé"
}
foreach ($pc in $listPC){
write-Host "`n`n$pc>>>`n"
$destinationPCfolder = "\\sv1paris\sav$\backUpPCs.$date\$pc"
$path1 = test-Path $destinationPCfolder
# Backup Server Process started
if ($path1 -eq $true) {
write-Host "Dossier pour sauvegarder $pc existe déjà"
}
elseif ($path1 -eq $false) {
write-Host "Dossier pour sauvegarder $pc non existe, dossier $pc creer>>>"
mkdir $destinationPCfolder
}
$listFolderUseronThisPC= Get-ChildItem \\$pc\C$\Users -Directory | ForEach-Object name
foreach ($folderUser in $listFolderUseronThisPC) {
foreach ($nameuser in $listUser){
if ("$folderUser" -match "$nameuser"){
$pathtest = "\\$pc\C$\Users\$folderUser"
write-Host "Vérifier $nameuser correspondre à $pathtest"
$pathIsGood = test-Path $pathtest
if ($pathIsGood -eq $true){
#System Variable for backup pc
write-Host "$pathtest est correct. Sauvegarde $folderUser COMMENCE >>>>>>"
$destination = "$destinationPCfolder\$folderUser"
$source = $pathtest
$path = test-Path $destination
# Backup Server Process started
if ($path -eq $true) {
write-Host "Dossier existe déjà"
}
elseif ($path -eq $false) {
mkdir $destination
write-Host "`n`n$destination créé"
robocopy $source $destination /XJ /E /R:1 /W:1 /SEC /SECFIX /LOG+:"$destination\backupPCs_log.txt"
#$backup_log = Dir -Recurse $destination | out-File "$destination\backupPCs_log.txt"
#$attachment = "$destination\backupPCs_log.txt"
}
}
}
}
}
}
write-host "Sauvegarde réussie"
}
###################################################
#Principal
cls
backupPCs $listPCs