Nom du fichier : Prepare-Deployment.ps1
# créer les dossiers nécessaires ;
# Il faut TOUJOURS s'assurer que les dossiers et fichiers critiques sont présents
# 1. On crée les variables utiles pour le script (chemins, fichiers, nombres...)
$Sources = "C:\TP-PowerShell\03-Deployment\Sources"
$SourcesScripts = "C:\TP-PowerShell\03-Deployment\Sources\Scripts"
# Variante $SourcesScripts = "$Sources\Scripts"
$AnswerFiles = "C:\TP-PowerShell\03-Deployment\Work\AnswerFiles"
$WorkScripts = "C:\TP-PowerShell\03-Deployment\Work\Scripts"
$WorkLogs = "C:\TP-PowerShell\03-Deployment\Work\Logs"
$Autounattend = "$Sources\autounattend.xml"
$Log = "$WorkLogs\journal.log"
# 2. On vérifie que les chemins existent, s'ils n'existent pas, on les crée
if ((Test-Path $WorkLogs) -eq $False){
# Le chemin contenu dans $WorkLogs n'existe pas
# On crée le chemin
New-Item -Path $WorkLogs -ItemType Directory
# Le chemin Work/Logs a été créé
# Je peux écrire dans le fichier de Logs
Set-Content -Path $Log -Value "Journal du $(Get-Date)"
Add-Content -Path $Log -Value "$(Get-Date) - Dossier $WorkLogs créé"
}else{
## Le dossier Logs existe je crée mon journal
Set-Content -Path $Log -Value "Journal du $(Get-Date)"
}
if ((Test-Path $Sources) -eq $False){
# Le chemin contenu dans $Sources n'existe pas
# On crée le chemin
New-Item -Path $Sources -ItemType Directory
Add-Content -Path $Log -Value "$(Get-Date) - Dossier $Sources créé"
}
if ((Test-Path $SourcesScripts) -eq $False){
# Le chemin contenu dans $SourcesScripts n'existe pas
# On crée le chemin
New-Item -Path $SourcesScripts -ItemType Directory
Add-Content -Path $Log -Value "$(Get-Date) - Dossier $SourcesScripts créé"
}
if ((Test-Path $AnswerFiles) -eq $False){
# Le chemin contenu dans $AnswerFiles n'existe pas
# On crée le chemin
New-Item -Path $AnswerFiles -ItemType Directory
Add-Content -Path $Log -Value "$(Get-Date) - Dossier $AnswerFiles créé"
}
if ((Test-Path $WorkScripts) -eq $False){
# Le chemin contenu dans $WorkScripts n'existe pas
# On crée le chemin
New-Item -Path $WorkScripts -ItemType Directory
Add-Content -Path $Log -Value "$(Get-Date) - Dossier $Workscripts créé"
}
# vérifier la présence du fichier autounattend.xml ;
# Si le fichier autounattend.xml n'existe pas je m'arrête
if ((Test-Path $Autounattend) -eq $False){
# Le fichier autounattend.xml n'existe pas
Add-Content -Path $Log -Value "$(Get-Date) - ERROR - Le fichier $Autounattend n'existe pas, fin du script"
exit # cette commande interrompt le script
}
# Le fichier autounattend.xml existe
# copier ce fichier dans Work\AnswerFiles ;
Copy-Item $Autounattend $AnswerFiles
Add-Content -Path $Log -Value "$(Get-Date) - Fichier $Autounattend copié avec succès"
# Copy-Item source destination
# rechercher les scripts présents dans Sources\Scripts ;
$Scripts = Get-ChildItem -Path $SourcesScripts -Filter "*.ps1"
# Pour chaque Script dans Scripts
foreach($Script in $Scripts){
# Ces lignes seront exécutées autant de fois qu'il y a de fichiers dans $Scripts
# copier ces scripts dans Work\Scripts ;
Copy-Item "$SourcesScripts\$Script" $WorkScripts
# Copy-Item $Script.FullName $WorkScripts
Add-Content -Path $Log -Value "$(Get-Date) - INFO - Fichier $Script copié avec succès"
}
# écrire toutes les actions dans un fichier journal.