如何從 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. 

這將為相關印表機伺服器上的所有現有印表機新增權限。

從印表機伺服器本地運行命令。  

相關內容