2017-11-06 9 views
0

プリンタのリストと、リストされているプリントサーバーのExcelファイルに対して実行されるスクリプトがあります。Powershellと単一の.csvファイルを使用して、複数のプリンタサーバーに複数のプリンタを追加する必要があります

私は理解できない問題は、200行のExcelシートを持たずに複数のプリントサーバーに複数のプリンタを追加する方法です。

プリントサーバーをPowershellスクリプトにリストし、foreachコマンドを各サーバーに動的にリストしたいと考えています。

これまでのコードは次のとおりです。私は$serverにサーバーのリストを持たせ、その機能の一部をリストの次のサーバーに変更できるようにしようとしています。 .csvの書式の例を添付しました。 example of the formatting of the .csv file誰もが提供できるお手伝いをありがとう。

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 
} 

答えて

0

既存のコマンドを使用してプリンタ管理を行うことはできません。

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 
} 

EDIT:複数のサーバーでは

Add-PrinterPortAdd-Printerは何をしたいだろう。また

$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 
    } 
} 
+0

感謝をどのような作品です。サーバーとプリンタのリストの一覧に対してこれを実行するにはどうすればよいですか? – Nick

+0

それはすでにそれを行うことができます、あなたのCSVをそれに応じて更新するだけです。複数のサーバに同じプリンタが必要な場合は、 'Printserver'カラムとプリンタの下にサーバを追加して、行を複製し、' Printserver'を次のサーバ名。 –

+0

それは私の現在のスクリプトの仕組みです。あなたのコードははるかにシンプルで見栄えが良いです。私は大きなエクセルシートを避けようとしていました。 8台のプリントサーバーに約100台のプリンタを追加する必要があります。だから、Excelシートは800行の長さのハハです。私はそれがサーバーのリストを持つことができたところにしようとしていたし、プリンタの属性を持つ100台のプリンタのリストをExcelシート上に800行を避けるようにしました。 – Nick

0

申し訳ありませんと言うする必要はありません...あなたはあなたの日から時間を取ったoランダムな男のための質問に答える。これが私の最後のスクリプトは次のようになり、それが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 
    } 
} 

-Nick-

関連する問題