$ACTIVE_PRINTERS = Get-Printer
try {
if (Get-Variable -Name LM -ErrorAction SilentlyContinue){
Write-Host "Lexmark Printers"
foreach ($PrinterName in $LM.Keys) {
$ip = $LM[$PrinterName]
if (!$ACTIVE_PRINTERS.Contains($PrinterName)) {
Add-PrinterPort "$ip"
Add-Printer -DriverName "Lexmark Universal v2" -Name $PrinterName -PortName "$ip"
}
Write-Host "$PrinterName : $ip Are Mapped"
}
} else {
Write-Host "No Lexmark Printers Located in $sqdrn"
}
} catch {
Write-Error "An error occurred: $($_.Exception.Message)"
}
Estou tentando fazer um script que percorre uma lista de endereços IP e mapeia a impressora e o nome, o aspecto de mapeamento e nomeação funciona, mas a filtragem não funciona e apenas me diz que o par impressora:ip existe e dá erro. Mesmo com as impressoras removidas/não mapeadas por meio de configurações e painel de controle. Aqui está um exemplo dos pares de valores-chave localizados na matriz LM.
$LM = @{"ROOM#1"="192.168.x.1";"ROOM#2"="192.168.x.2"}
Abaixo está o erro recebido.
Add-PrinterPort : The specified port already exists.
At C:\Users\foobar\Desktop\MappingPrinter.ps1:85 char:17
+ Add-PrinterPort "$ip"
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceExists: (MSFT_PrinterPortTasks:ROOT/StandardCimv2/MSFT_PrinterPortTasks) [Add-PrinterPort], CimException
+ FullyQualifiedErrorId : HRESULT 0x800700b7,Add-PrinterPort
Add-Printer : The specified printer already exists.
At C:\Users\foobar\Desktop\MappingPrinter.ps1:86 char:17
+ ... Add-Printer -DriverName "Lexmark Universal v2" -Name $Pri ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (MSFT_Printer:ROOT/StandardCimv2/MSFT_Printer) [Add-Printer], CimException
+ FullyQualifiedErrorId : HRESULT 0x8007070a,Add-Printer
Eu tentei muitas variações da instrução if para $ACTIVE_PRINTERS e sou relativamente novo no powershell. Se alguém precisar de mais informações ou se eu não dei o suficiente, por favor me avise!