Question installation et automatisation d'imprimantes

Plus d'informations
il y a 1 an 3 mois #32913 par lagon
Bonjour,

Je suis vraiment débutant sur PowerShell. J'ai créé ce script avec bcp d'aide mais malheureusement il ne fonctionne pas.
Mon objectif serait d'automatiser l'installation d'imprimantes d'un parc informatique.
Pour le moment, j'essai de faire fonctionner mon script "juste" avec le 1er choix (si j'arrive à faire fonctionner le 1er choix (Imprimante Brother), je pourrais ensuite faire le nécessaire sur les choix suivants).
Je cherche à faire fonctionner ce script sous PowerShell mais j'ai plusieurs soucis.
1er souci : j'aimerai qu'il test avant l'installation de l'imprimante si l'imprimante n'est pas déjà installé. La vérification ne se fait pas.
2eme souci : j'ai l'erreur suivante lors de l'installation de l'imprimante : Le jeu de paramètres ne peut pas être résolu à l'aide des paramètres nommés spécifiés.
Je pense que le 2eme souci se situe sur ma ligne de commande add-printer mais je n'arrive pas à voir ou exactement.
Je suis vraiment débutant sur PowerShell...du coup, si une personne comprends mes erreurs, je veux bien qu'il m'explique le problème...
Merci d'avance.

Voici mon script :
# Demande le type d'imprimante à installer
$printerType = Read-Host -Prompt "Choisissez le type d'imprimante à installer :
1. Imprimante BROTHER
2. Imprimante jet d'encre
3. Imprimante multifonction
Entrez le numéro de votre choix "

# Initialise la variable qui indique si l'entrée de l'utilisateur est valide à False
$inputIsValidIP = $False

# Boucle jusqu'à ce que l'entrée de l'utilisateur soit valide
while ($inputIsValidIP -eq $False) {
  # Demande à l'utilisateur d'entrer l'adresse IP
  $ipAddress = Read-Host -Prompt "Entrez l'adresse IP "

# Vérifie si l'adresse IP entrée correspond au format d'une adresse IP valide
if ($ipAddress -match "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$") {
  # Si l'adresse IP est valide, affiche un message de confirmation
  $inputIsValidIP = $True
}
else {
  # Si l'adresse IP n'est pas valide, affiche un message d'erreur et recommence la boucle
  Write-Host "Adresse IP non valide. Veuillez entrer une adresse IP valide."
    
    }
                                }    

# Affiche un message de confirmation une fois que l'entrée de l'utilisateur est valide
Write-Host "Adresse IP valide"

# Initialise la variable qui indique si l'entrée de l'utilisateur est valide à False
$inputIsValidNom = $False

# Boucle jusqu'à ce que l'entrée de l'utilisateur soit valide
while ($inputIsValidNom -eq $False) {
  # Demande à l'utilisateur d'entrer le nom de l'imprimante
  $printerName = Read-Host -Prompt "Entrez le nom de l'imprimante "

# Vérifie si le nom de l'imprimante correspond au format d'un nom valide
if ($printerName -match "^[a-zA-Z0-9]+$") {
  # Si le nom d'imprimante est valide, affiche un message de confirmation
  $inputIsValidNom = $True
}
else {
  # Si le nom d'imprimante n'est pas valide, affiche un message d'erreur et recommence la boucle
  Write-Host "Nom d'imprimante non valide. Veuillez entrer un nom valide."
    
    }
                                }    


# Importe le module d'installation de périphérique
Import-Module PrintManagement

# Selon le type d'imprimante choisi, essaie d'installer l'imprimante en utilisant le pilote approprié

# Récupère les noms des imprimantes locales
$localPrinters = Get-Printer | Select-Object -ExpandProperty Name

# Vérifie si l'imprimante est déjà présente parmi les imprimantes locales
if ($localPrinters -contains "$printerName") {
  # Si l'imprimante est déjà présente, affiche un message d'erreur
  Write-Host "L'imprimante $printerName est déjà présente sur le système."
}
else {
  # Si l'imprimante n'est pas déjà présente, continue l'installation
try {
  if ($printerType -eq "1") {
    Add-Printer  -ConnectionName "\\$ipAddress" -Name "$printerName" -DriverName "C:\Temp\TestTemp\BRPRI16A.INF"
  }
  elseif ($printerType -eq "2") {
    Add-Printer -ConnectionName "\\$ipAddress" -Name $printerName -DriverName "driver_inkjet"
  }
  elseif ($printerType -eq "3") {
    Add-Printer -ConnectionName "\\$ipAddress" -Name $printerName -DriverName "driver_multifunction"
  }
  Set-Printer -Name $printerName -AsDefault $true
  Write-Host "Installation de l'imprimante réussie !"
}
# Si l'installation échoue, affiche un message d'erreur
catch {
  Write-Host "Erreur lors de l'installation de l'imprimante : $($_.Exception.Message)"
}
}

 

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 3 mois #32915 par rhiwotar
Bonjour,
Je ne te serais pas d'une grande aide car j'ai toujours pas réussi et finalement abandonné le projet mais je suis intéressé par la réponse si elle apparait

Au cas ou, je te donne une partie du script que j'avais fait, la partie qui coince pour moi, c'est le driver
$printer= "Nom_IMP"
$port = "10.20.30.40"
$driver = "Canon iR-ADV C5045/5051 PCL6"
$inf = "\\Serveur\Drivers Imprimantes\canon ir C5051\Driver\Cnp60MA64.INF"
    if(-not(Get-PrinterDriver $driver -ErrorAction SilentlyContinue)){
        pnputil.exe /a /i $inf
        Add-PrinterDriver -Name $driver -InfPath $inf
    }
    if(-not(Get-PrinterPort -Name $port -ErrorAction SilentlyContinue)){
        Add-PrinterPort -Name $port -PrinterHostAddress $port
    }
    if(-not(Get-Printer -name $printer -ErrorAction SilentlyContinue)){
        Add-Printer -DriverName $driver -Name $printer -PortName $port
    }

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.064 secondes
Propulsé par Kunena