簡體   English   中英

我需要使用 Powershell 和單個 .csv 文件將多台打印機添加到多個打印服務器

[英]I need to add multiple printers to multiple print servers with Powershell and a single .csv file

我有一個腳本,它將針對打印機列表以及列出的打印服務器的 Excel 文件運行。

我無法弄清楚的問題是如何在沒有 200 行的 Excel 工作表的情況下將多台打印機添加到多個打印服務器。

我希望在 Powershell 腳本中列出打印服務器,並讓foreach命令通過動態列出的每個服務器。

這是我到目前為止的代碼。 我試圖讓$server能夠擁有服務器列表並將函數中的部分更改為列表中的下一個服務器。 我附上了一個 .csv 格式的示例。 .csv 文件格式示例感謝任何人提供的任何幫助。

function CreatePrinter {
    $server = $args[0]
    $print = ([WMICLASS]"\\$server\ROOT\cimv2:Win32_Printer").createInstance() 
    $print.drivername = $args[1]
    $print.PortName = $args[2]
    $print.Shared = $false
    $print.Sharename = $args[3]
    $print.Location = $args[4]
    $print.Comment = $args[5]
    $print.DeviceID = $args[6]
    $print.Put() 
}

function CreatePrinterPort {
    $server =  $args[0] 
    $port = ([WMICLASS]"\\$server\ROOT\cimv2:Win32_TCPIPPrinterPort").createInstance()
    $port.Name= $args[1]
    $port.SNMPEnabled=$false 
    $port.Protocol=1 
    $port.HostAddress= $args[2]
    $port.Put() 
}

$printers = Import-Csv C:\test\NewPrinters.csv

foreach ($printer in $printers) {
    CreatePrinterPort $printer.Printserver $printer.Portname $printer.IPAddress
    CreatePrinter $printer.Printserver $printer.Driver $printer.Portname 
    $printer.Sharename $printer.Location $printer.Comment $printer.Printername
}

當您可以使用現有命令進行打印機管理時,無需重新發明輪子。

Add-PrinterPortAdd-Printer將滿足您的需求:

foreach ($printer in $printers) {
    Add-PrinterPort -ComputerName $printer.Printserver -Name $printer.Portname -PrinterHostAddress $printer.IPAddress
    Add-Printer -ComputerName $printer.Printserver -Name $printer.Printername -DriverName $printer.Driver -Shared -ShareName $printer.Sharename -PortName $printer.Portname -Comment $printer.Comment -Location $printer.Location
}

編輯:

對於多台服務器:

$servers = "printserver01","printserver02","printserver03"

foreach ($server in $servers) {
    foreach ($printer in $printers) {
        Add-PrinterPort -ComputerName $server -Name $printer.Portname -PrinterHostAddress $printer.IPAddress
        Add-Printer -ComputerName $server -Name $printer.Printername -DriverName $printer.Driver -Shared -ShareName $printer.Sharename -PortName $printer.Portname -Comment $printer.Comment -Location $printer.Location
    }
}

也不需要說對不起......你抽出時間來回答一些隨機的家伙的問題。 這就是我的最終腳本的樣子,它可以在 Windows Server 2012 上完美運行。

foreach ($server in @("Printserver1","Printserver2","Printserver3")) {
   foreach ($printer in @(Import-Csv C:\PrinterList.csv)) {
      Add-PrinterPort -ComputerName $server -Name $printer.IPAddress -PrinterHostAddress $printer.IPAddress
      Add-Printer -ComputerName $server -Name $printer.Printername -DriverName $printer.Driver -PortName $printer.IPAddress -Comment $printer.Comment -Location $printer.Location
   }
}

-尼克-

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM