existe uma maneira rápida e fácil de instalar todas as impressoras de um servidor de impressão em um console como o PowerShell?
Add-Printer do PowerShell não oferece suporte a curingas.
Eu tentei com Get-Printer e ForEach
Get-Printer -ComputerName print-server | Select name > Printers.txt
ForEach ($Printer in Get-Content "Printers.txt")
{
Add-Printer -ConnectionName \\print-server\"$Printer"
}
Mas recebo apenas a mensagem de que o nome do servidor não está acessível ou é inválido. No Powershlel é possível ver que $Printer não foi substituído pelo nome de impressão. Mas quando eu uso Write-Host $Printer isso funciona.
Responder1
Em vez de canalizar as impressoras para um arquivo de texto e depois tentar usá-las lendo-as novamente como strings básicas, use as propriedades dos objetos retornados de Get-Printer.
POR EXEMPLO:
# 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)"
}
}
Responder2
Para que o script funcione corretamente, uma impressora no servidor de impressão selecionado precisará ter todas as permissões necessárias adicionadas. A impressora em questão (SelectPrinter) será usada no script para obter configurações de segurança.
(Get-Printer 'SelectPrinter' Full).PermissionSDDL | Out-File 'C:\PrinterSecurity.txt' | $perms = Get-Content 'C:\PrinterSecurity.txt' | Set-Printer '*' -PermissionSDDL $perms.
Isto adicionará as permissões a todas as impressoras existentes no servidor de impressão em questão.
Execute o comando localmente no servidor de impressão.