首页 > 解决方案 > 通过powershell将打印机添加到打印服务器

问题描述

仅当尚未使用该打印机名称和打印机端口时,我才想将打印机及其端口添加到打印服务器。

到目前为止我有这个

   $prnt = Import-Csv C:\scripts\printer.csv

   foreach ($printer in $prnt) {
   $var = Get-Printer

   If (($var.name -contains $printer.Printername) -and ($var.portname -contains 
   $printer.IPAddress))
   {
    Write-Host "$printer exist!" -ForegroundColor Blue
   }
   else
   {
    Add-PrinterPort -ComputerName Printsrv01 -Name $printer.IPAddress - 
    PrinterHostAddress $printer.IPAddress
    Add-Printer -ComputerName Printsrv01 -Name $printer.Printername - 
    DriverName $printer.Driver -PortName $printer.IPAddress -Location 
    $printer.Location
   }
   }

问题主要出在我的“if”语句上。它捕获打印机名称,但不捕获端口号/IP。(端口号是 ip)。而且我还认为我的 if 语句正在比较 csv 文件中的整个值数组,而不仅仅是我想要的数组中的特定值。任何帮助,将不胜感激。

CSV 文件是这样设置的 在此处输入图像描述

标签: shellpowershellcommand-line

解决方案


尝试这个:

$prnt = Import-Csv C:\scripts\printer.csv
$printers = (Get-Printer).Name
$ports = (Get-PrinterPort).PrinterHostAddress
foreach ($printer in $prnt)
{
    If (($printers -contains $printer.Printername) -or ($ports -contains $printer.IPAddress))
    {
        Write-Host "$printer exist!" -ForegroundColor Blue
    }
    else
    {
        Add-PrinterPort -ComputerName Printsrv01 -Name $printer.IPAddress -PrinterHostAddress $printer.IPAddress
        Add-Printer -ComputerName Printsrv01 -Name $printer.Printername -DriverName $printer.Driver -PortName $printer.IPAddress -Location $printer.Location
    }
}

推荐阅读