Bonjour à tous,

Etant juste débutant en Powershell, je dois réaliser un script novice, je m'explique:

Ayant referencé différents serveus Web à travers le parc informatique, la mission est de modifier des paramêtres contenus dans les fichiers "web.config" de chaque serveur.

Au niveau méthode voici à quoi j'ai pensé:
- Parcourir tous les serveurs et lister les emplacements des fichiers Web.conf. sur chaque serveur
- Verifier dans ces fichiers si les paramêtres sont ok ou non.
- Si non ok, remplacer les valeurs (true par false)
- Rassembler toutes ces infos dans un fichier excel avec Nom serveur, Chemin du fichier web.conf, Paramêtre 1= False ou true, Par 2= ...

Pour l'instant j'ai ceci, mais je bloque déjà car erreur:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Au niveau de C:\Temp\Lister et auditer\Script.ps1*: 4 Caractère*: 72
+       Copy-Item -LiteralPath $filePath -Destination ($filePath).Replace <<<<
($fileName,("_"+$fileName))
    + CategoryInfo          : InvalidOperation: (Replace:String) [], RuntimeEx
   ception
    + FullyQualifiedErrorId : InvokeMethodOnNull

Get-Content : Impossible de lier l'argument au paramètre «*Path*», car il a la
valeur Null.
Au niveau de C:\Temp\Lister et auditer\Script.ps1*: 6 Caractère*: 19
+       (Get-Content <<<<  $filePath) | ForEach-Object {
    + CategoryInfo          : InvalidData: (:) [Get-Content], ParameterBinding
   ValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,M
   icrosoft.PowerShell.Commands.GetContentCommand

Press any key to continue .
Voici mon script:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Get-ChildItem -Path "C:\Temp\Lister et auditer\Web.config\web.config1\" -Name "web.config" -Recurse | ForEach-Object {
      $filePath = $_.FullName
      $fileName = $_.Name
      Copy-Item -LiteralPath $filePath -Destination ($filePath).Replace($fileName,("_"+$fileName))
      
      (Get-Content $filePath) | ForEach-Object {
            $_ -Replace 'Compilation debug.?=.?"true"', 'Compilation debug="false"'
			$_ -Replace 'Trace enable.?=.?"true"', 'Trace enable="false"'
			$_ -Replace 'customErrors mode.?=.?"On"', 'customErrors mode="Off"'
			$_ -Replace 'directoryBrowse enabled.?=.?"true"', 'directoryBrowse enabled="false"'
	    } |
      Set-Content $filePath
	  Write-Host "Press any key to continue …" 
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
}
Merci d'avance pour votre aide, à comprendre et découvrir ce langage si intéressant.