如何从 PrintServer 安装每台打印机(带通配符)

如何从 PrintServer 安装每台打印机(带通配符)

是否有一种快速简便的方法可以通过 PowerShell 之类的控制台从打印服务器安装每台打印机?

PowerShell 中的添加打印机不支持通配符。

我尝试使用 Get-Printer 和 ForEach

Get-Printer -ComputerName print-server | Select  name > Printers.txt

ForEach ($Printer in Get-Content "Printers.txt")
{
Add-Printer -ConnectionName \\print-server\"$Printer"
}

但我只收到服务器名称不可访问或无效的消息。在 powershlel 中可以看到 $Printer 没有替换为打印名称。但当我使用 Write-Host $Printer 时,它起作用了。

答案1

不要将打印机传输到文本文件,然后尝试通过将它们读回作为基本字符串来使用它们,而是使用从 Get-Printer 返回的对象的属性。

例如:

# Get list of printers from computer "print-server".
$Printers = Get-Printer -ComputerName print-server

# Iterate through the returned list of printers.
ForEach ($Printer in $Printers)
{
    # Check to see if the current printer is shared or not.
    If ($Printer.Shared) {
        # If it's shared, add it by using the print server name and printer name properties of the current printer object.
        Add-Printer -ConnectionName "\\$($Printer.ComputerName)\$($Printer.Name)"
    }
}

答案2

为了使脚本正常运行,所选打印服务器上的打印机需要添加所有必要的权限。脚本将使用相关打印机 (SelectPrinter) 来提取安全设置。

(Get-Printer 'SelectPrinter' Full).PermissionSDDL | Out-File 'C:\PrinterSecurity.txt' | $perms = Get-Content 'C:\PrinterSecurity.txt' | Set-Printer '*' -PermissionSDDL $perms. 

这会将权限添加到相关打印服务器上的所有现有打印机。

从打印服务器本地运行该命令。  

相关内容