2 votes

Création d'une imprimante réseau via Powershell

J'essaie de créer des imprimantes réseau à l'aide d'un script Powershell script. Le script ci-dessous crée le port sans problème, mais ne crée pas la file d'attente. Quelqu'un peut-il confirmer que ce script fonctionne sur Windows Server 2008 ? (Remarque : le pilote doit être installé pour que cela fonctionne).

function CreatePrinterPort {
Param (
 [string]$IPAddress
)

$port = [wmiclass]"Win32_TcpIpPrinterPort"
$newPort = $port.CreateInstance()
$newport.Name= "IP_$IPAddress"
$newport.SNMPEnabled=$false
$newport.Protocol=1
$newport.HostAddress= $IPAddress
Write-Host "Creating Port $ipaddress" -foregroundcolor "green"
$newport.Put()
}

function CreatePrinter {
    Param (
    [string]$PrinterName,
    [string]$DriverName,
    [string]$IPAddress,
    [string]$Location,
    [string]$Comment
    )

$print = [WMICLASS]"Win32_Printer"
$newprinter = $print.createInstance()
$newprinter.Drivername = $DriverName
$newprinter.PortName = "IP_$IPAddress"
$newprinter.Shared = $true
$newprinter.Sharename = $PrinterName
$newprinter.Location = $Location
$newprinter.Comment = $Comment
$newprinter.DeviceID = $PrinterName
Write-Host "Creating Printer $printername" -foregroundcolor "green"
$newprinter.Put()

}

CreatePrinterPort -IPAddress "Localhost"

CreatePrinter  -PrinterName Print1 -DriverName "HP LaserJet 4" -PortName "Localhost"`
                -Location "Office" -Comment "Test comment"

L'erreur que j'obtiens se situe au niveau de la fonction CreatePrinter :

Exception lors de l'appel à "Put" avec un ou des arguments "0" : "Échec générique"

3voto

ChuckB Points 688

Votre nom de port ne devrait-il pas être "IP_$IPAddress" au lieu de "Localhost" ?

CreatePrinter  -PrinterName Print1 -DriverName "HP LaserJet 4" -PortName "IP_123.123.123.123" -Location "Office" -Comment "Test comment"

De plus, votre DriverName doit être le nom exact de ce pilote. Vous ne pouvez pas le choisir ; il est spécifié par le fabricant.

0voto

xenoterracide Points 2557

Le problème avec votre script est que vous déclarez $IPAddress dans votre fonction mais que vous spécifiez -portname lorsque vous appelez la fonction. Soit vous modifiez la fonction pour utiliser $PortName, soit vous utilisez -IPAddress lorsque vous appelez la fonction.

Personnellement, j'ai modifié votre fonction pour utiliser [string]$PortName

Voici votre fonction qui fonctionne correctement

  function CreatePrinter {
    Param (
    [string]$PrinterName,
    [string]$DriverName,
    [string]$PortName,
    [string]$Location,
    [string]$Comment
    )

$print = [WMICLASS]"Win32_Printer"
$newprinter = $print.createInstance()
$newprinter.Drivername = $DriverName
$newprinter.PortName = "IP_$PortName"
$newprinter.Shared = $true
$newprinter.Sharename = $PrinterName
$newprinter.Location = $Location
$newprinter.Comment = $Comment
$newprinter.DeviceID = $PrinterName
Write-Host "Creating Printer $printername" -foregroundcolor "green"
$newprinter.Put()

}

$printerport1 = "10.10.10.0"

CreatePrinterPort -IPAddress $printerport1

CreatePrinter  -PrinterName "Print1" -DriverName "HP LaserJet 4300 PCL 6" -PortName $printerport1 -Location "Office" -Comment "Test comment"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X