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 PowerShell : 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
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 :
Merci pour votre aide...![]()
Partager