Flash info

Les vrais admins utilisent la ligne de commande... (dixit le mag Windows IT Pro du 6/02/07) Avis aux amateurs pour affirmer leur virilité Surprised.
La suite est ici.

 
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: 45
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.
© 2019 PowerShell-Scripting.com