4 votes

Lire le fichier avec des paramètres en tant que paramètre dans le script PowerShell

J'ai essayé de créer un script PowerShell qui lit un fichier avec des paramètres :

Fichier avec des paramètres (params.ini) :

[domain]
domain="google.com"
[port]
port="80"

Script PowerShell qui lit le fichier :

Get-Content "params.ini" | ForEach-Object -Begin {$settings=@{}} -Process {$store = [regex]::split($_,'='); if(($store[0].CompareTo("") -ne 0) -and ($store[0].StartsWith("[") -ne $True) -and ($store[0].StartsWith("#") -ne $True)) {$settings.Add($store[0], $store[1])}}

$Param1 = $settings.Get_Item("domain")
$Param2 = $settings.Get_Item("port")

# Affichage des paramètres
Write-Host "Domaine: $Param1";
Write-Host "Port: $Param2";

Mais je veux que le fichier soit lu par paramètre. Par exemple :

> scriptExample.ps1 -fichier C:\params.ini

Quels changements dois-je appliquer ?

6voto

krisFR Points 12580

Vous devez donc gérer les arguments.

$file contient la valeur de l'argument -file que vous utiliserez dans votre script.


Argument facultatif :

Param(
  [string]$file
)

Argument obligatoire :

Param(
  [parameter(mandatory=$true)][string]$file
)

Code complet (en utilisant l'argument obligatoire) :

Param(
  [parameter(mandatory=$true)][string]$file
)

Get-Content "$file" | ForEach-Object -Begin {$settings=@{}} -Process {$store = [regex]::split($_,'='); if(($store[0].CompareTo("") -ne 0) -and ($store[0].StartsWith("[") -ne $True) -and ($store[0].StartsWith("#") -ne $True)) {$settings.Add($store[0], $store[1])}}

$Param1 = $settings.Get_Item("domain")
$Param2 = $settings.Get_Item("port")

# Affichage des paramètres
Write-Host "Domaine: $Param1";
Write-Host "Port: $Param2";

.\scriptExample.ps1 -file params.ini
Domaine: "google.com"
Port: "80"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X