Flash info

Prenez une longueur d'avance avec PowerShell. Faire ce choix c'est anticiper l'avenir des produits Microsoft mais aussi être plus performant dans son travail quotidien d'admin système.

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
Abdel59700
Utilisateur

PowerShelleur Débutant
Messages: 1
graphgraph
Karma: 0  
Ajouter des entrées dns dans un fichier hosts - 14/08/19 08:33 Salut à tous,
J'ai besoin de faire un script powershell qui:
1°) ajoute des entrée DNS au fichier C:WindowsSystem32driversetchosts à l'aide d'un fichier csv
2°) encadre ces entrées dns entre 2 chaînes de caractères qui annonce le "début des entrées dns" et la "fin des entrées dns".
3°) n'écrase pas les entrée dns déjà présentent dans le fichier hosts.

J'ai fait un script mais il y a des erreurs quand je le joue et je ne vois pas du tout ce qui cloche.

Code:

  $file "C:\Windows\System32\drivers\etc\hosts" $data Import-Csv D:\hosts_modify\liste_des_entrees_dns_hosts.csv -Delimiter ";" function add-host([string]$filename, [string]$ip, [string]$hostname) {     remove-host $filename $hostname     $ip "`t`t" $hostname Out-File -encoding ASCII -append $filename } function remove-host([string]$filename, [string]$hostname) {     $c Get-Content $filename     $newLines = @()     foreach ($line in $c) {         $bits = [regex]::Split($line"\t+")         if ($bits.count -eq 2) {             if ($bits[1] -ne $hostname) {                 $newLines += $line             }         } else {             $newLines += $line         }          # Write file     Clear-Content $filename     foreach ($line in $newLines) {         $line Out-File -encoding ASCII -append $filename     } } function print-hosts([string]$filename) {     $c Get-Content $filename     foreach ($line in $c) {         $bits = [regex]::Split($line"\t+")         if ($bits.count -eq 2) {             Write-Host $bits[0] `t`t $bits[1]         }     } } try {     if ($args[0] -eq "add") {     Add-Content $file "`n*****Ajout CSI*****"                  foreach ($item in $data) {             $filename = $($item.filename)             $iP  = $($item.ip)             $hostname  = $($item.hostname)             printf  $filename $ip$hostname             add-host $filename $ip$hostname             }        Add-Content $file "`*****Fin Ajout CSI*****"         }     } elseif ($args[0] -eq "remove") {         if ($args.count -lt 2) {             throw "Not enough arguments for remove."         } else {             remove-host $file $args[1]         }     } elseif ($args[0] -eq "show") {         print-hosts $file     } else {         throw "Invalid operation '" $args[0] + "' - must be one of 'add', 'remove', 'show'."     } } catch  {     Write-Host $error[0]     Write-Host "`nUsage: hosts add <ip> <hostname>`n       hosts remove <hostname>`n       hosts show" } function printf($a) {     foreach ($i in $a) {         Write-Host $i     }  }



Voici les erreurs que j'ai :


Au caractère D:hosts_modifytest_modifyhost.ps1:47 : 6
+ } elseif ($args[0] -eq "remove") {
+ ~
Le bloc Catch ou Finally manque dans l’instruction Try.
Au caractère D:hosts_modifytest_modifyhost.ps1:47 : 38
+ } elseif ($args[0] -eq "remove") {
+ ~
Jeton inattendu « { » dans l’expression ou l’instruction.
Au caractère D:hosts_modifytest_modifyhost.ps1:53 : 7
+ } elseif ($args[0] -eq "show") {
+ ~~~~~~
Jeton inattendu « elseif » dans l’expression ou l’instruction.
Au caractère D:hosts_modifytest_modifyhost.ps1:53 : 36
+ } elseif ($args[0] -eq "show") {
+ ~
Jeton inattendu « { » dans l’expression ou l’instruction.
Au caractère D:hosts_modifytest_modifyhost.ps1:55 : 7
+ } else {
+ ~~~~
Jeton inattendu « else » dans l’expression ou l’instruction.
+ CategoryInfo : ParserError: ( [], ParseException
+ FullyQualifiedErrorId : MissingCatchOrFinally


Merci pour votre aide...

  | | L'administrateur a désactivé l'accés public en écriture.
Whitatrax
Utilisateur

PowerShelleur Débutant
Messages: 47
graphgraph
Karma: 4  
Re:Ajouter des entrées dns dans un fichier hosts - 14/08/19 09:48 Bonjour,

Devant ton elseif tu fermes ton "Try"
Je pense que ça va corriger pas mal de choses
Regarde la quote, j'ai ajouté des chiffrages

try { (1)
if ($args[0] -eq "add") {(2)
Add-Content $file "`n*****Ajout CSI*****"
foreach ($item in $data) {(3)
$filename = $($item.filename)
$iP = $($item.ip)
$hostname = $($item.hostname)
printf $filename $ip, $hostname
add-host $filename $ip, $hostname
} (fin3)
Add-Content $file "`*****Fin Ajout CSI*****"
}(fin2)
}(fin1) elseif ($args[0] -eq "remove") {


Whitatrax
  | | L'administrateur a désactivé l'accés public en écriture.
© 2020 PowerShell-Scripting.com