簡體   English   中英

從導入的 csv 文件創建打印機到多個打印服務器

[英]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的列,其中可能的值是FalseTrue ,您可以執行以下操作:

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.

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