PrintServer에서 모든 프린터(와일드카드 사용)를 설치하는 방법

PrintServer에서 모든 프린터(와일드카드 사용)를 설치하는 방법

PowerShell과 같은 콘솔을 통해 인쇄 서버의 모든 프린터를 빠르고 쉽게 설치할 수 있는 방법이 있나요?

PowerShell의 Add-Printer는 와일드카드를 지원하지 않습니다.

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. 

그러면 문제의 인쇄 서버에 있는 모든 기존 프린터에 권한이 추가됩니다.

인쇄 서버에서 로컬로 명령을 실행합니다.  

관련 정보