2 pièce(s) jointe(s)
Ajouter des entrées dns dans un fichier hosts
Salut à tous,
J'ai besoin de faire un script powershell qui:
1°) ajoute des entrée DNS au fichier C:\Windows\System32\drivers\etc\hosts à 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| $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 :
Pièce jointe 497438
Merci pour votre aide... :)