Назад | Перейти на главную страницу

Powershell для добавления принтеров на основе AD Site

Я пытаюсь сопоставить принтер по умолчанию на основе местоположения, указанного на сайтах и ​​службах AD. Я могу определить местонахождение компьютера, используя [System.DirectoryServices.ActiveDirectory.ActiveDirectorySite]::GetComputerSite().Name

Как только я определил местоположение, я хотел бы нанести на карту 2 принтера в зависимости от местоположения. На каждом из наших 10 сайтов есть 2 принтера по умолчанию, которые я хотел бы иметь у «пользователей домена». Затем любые связанные с группой безопасности отображаются с помощью другого скрипта, который у меня уже есть.

У меня уже есть сценарий, использующий VB для этого, но поскольку я в настоящее время изучаю PS, мне нужны некоторые указатели по этому поводу.

заранее спасибо

Я люблю писать сценарии, но это, вероятно, то, что вам не нужно писать сценарии. Я думаю, что наиболее официальный и стандартный способ сделать это - совместное использование принтеров с «сервера печати», либо одного централизованного, либо сервера печати на каждом сайте. Обычной практикой является добавление этой роли сервера печати на другой сервер, который уже выполняет некоторые другие функции, например файловый сервер. Файловые службы и службы печати часто хорошо сочетаются друг с другом. Используйте консоль управления печатью для установки, совместного использования, развертывания и публикации принтеров. Если вы свяжете объект групповой политики с каждым сайтом, а затем развернете принтеры с помощью этих связанных с сайтом объектов групповой политики, пользователи будут получать обновленный список принтеров при перемещении между сайтами.

Настройте все принтеры для пользователей и переключите принтер по умолчанию в зависимости от сайта, например:

$CurrentSite = [System.DirectoryServices.ActiveDirectory.ActiveDirectorySite]::GetComputerSite().Name

    Switch ($CurrentSite)
    {

    "SiteA" {
    $Printer = gwmi win32_printer -filter "Name='SiteA-PrinterName'"
    $Printer.SetDefaultPrinter()
    }

    "SiteB" {
    $Printer = gwmi win32_printer -filter "Name='SiteB-PrinterName'"
    $Printer.SetDefaultPrinter()
    }

    "SiteC" {
    $Printer = gwmi win32_printer -filter "Name='SiteC-PrinterName'"
    $Printer.SetDefaultPrinter()
    }

    "SiteD" {
    $Printer = gwmi win32_printer -filter "Name='SiteD-PrinterName'"
    $Printer.SetDefaultPrinter()
    }

}