Powershell 根据 AD 站点添加打印机

Powershell 根据 AD 站点添加打印机

我正在尝试根据在 AD 站点和服务中找到的位置映射默认打印机。我可以使用以下方法获取计算机的位置[System.DirectoryServices.ActiveDirectory.ActiveDirectorySite]::GetComputerSite().Name

一旦我获取了位置,我希望它根据位置映射 2 台打印机。我们的 10 个站点中的每一个都有 2 台默认打印机,我希望“域用户”拥有这些打印机。然后,任何与安全组相关的打印机都通过我已有的另一个脚本进行映射。

我已经有一个使用 VB 的脚本来执行此操作 - 但由于我目前正在学习 PS,所以我希望得到一些指点。

提前致谢

答案1

我喜欢编写脚本,但这可能是您不需要编写脚本的一件事。我认为最正式和最标准的方式是从“打印服务器”共享打印机,该服务器可以是一台集中式服务器,也可以是每个站点的打印服务器。通常的做法是将此打印服务器角色添加到已经执行其他功能的另一台服务器上,例如文件服务器。文件和打印服务通常可以很好地结合在一起。使用打印管理控制台安装、共享、部署和发布打印机。如果您将 GPO 链接到每个站点,然后使用这些站点链接的 GPO 部署打印机,则用户在站点之间移动时将获得更新的打印机列表。

打印机

答案2

为用户设置所有打印机,并根据站点切换默认打印机,例如:

$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()
    }

}

相关内容