Создание принтеров из импортированного CSV-файла на нескольких серверах печати. - PullRequest
0 голосов
/ 28 января 2020

Я работал с этим сценарием, успешно извлек информацию из файла .csv и добавил его на один сервер печати. ​​

В настоящий момент сервер печати жестко запрограммирован в сценарии, и это позволяет мне чтобы добавить несколько серверов печати в сценарий, но я хотел бы добавить серверы печати в столбец в моем файле .csv и прочитать оттуда, чтобы исключить stati c серверы в коде. Вот что у меня есть:

Вторая часть, с которой я борюсь, это публикация, а не публикация принтеров (перечисление в AD или нет). Я думал о добавлении еще одного столбца под названием опубликованный. Затем создать if / then to publi sh или not publi sh**

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
    }
}

1 Ответ

0 голосов
/ 28 января 2020

Если 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...