[英]I need to add multiple printers to multiple print servers with Powershell and a single .csv file
[英]Create printers from an imported csv file to multiple print servers
我一直在使用這個腳本並成功地從 .csv 文件中獲取信息並將其添加到一台打印服務器。
現在我在腳本中硬編碼了打印服務器,它允許我將多個打印服務器添加到腳本中,但我想將打印服務器添加到我的 .csv 文件中的一列並從那里讀取以消除靜態代碼中的服務器。 這是我所擁有的:
我正在努力解決的第二部分是發布而不是發布打印機(是否在 AD 中列出)我正在考慮添加另一個名為已發布的列。 然后創建一個 if/then 來發布或不發布**
foreach ($server in @("printserver1")) {
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 -Shared -ShareName $printer.Printername -Published
}
}
如果PrinterList.csv
包含一個名為Publish
的列,其中可能的值是False
或True
,您可以執行以下操作:
foreach ($printer in (Import-Csv C:\PrinterList.csv)) {
$Params = @{ ComputerName = $server
Name = $printer.Printername
DriverName = $printer.Driver
PortName = $printer.IPAddress
Comment = $printer.Comment
Location = $printer.Location
ShareName = $printer.Printername
}
Add-Printer @Params -Shared -Published:([bool]::Parse($printer.Publish))
}
由於Publish
是[switch]
參數,您可以使用語法-Publish:$true
或-Publish:$false
。 Parse()
方法將字符串值解析為布爾值。
$Params
在這里不需要Splatting 。 它只是提供了更多的可讀性。
或者, [System.Convert]::ToBoolean($printer.Publish)
在建議的場景中具有相同的結果,但確實提供了更大的靈活性,因為[System.Convert]::ToBoolean(0)
返回False
和[System.Convert]::ToBoolean(1)
返回True
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.