2017-01-03 1 views
0

Powershell v2 스크립트를 통해 Windows 7 컴퓨터에 프린터 드라이버를 설치하려고합니다. 지금 포트 및 드라이버를 설치하고 올바르게 구성하려면 필요한 모든 것이 있지만 프린트 서버 등록 정보 양식을 설정하는 방법에 관해서는 아무것도 찾을 수 없습니다.인쇄 서버 속성 Windows 7

올바른 인쇄 크기를 얻기 위해 인쇄 서버 등록 정보 양식을 설정하는 방법이 필요합니다. 누구든지이 크기가 Windows 또는 레지스트리에 저장되는 위치를 알고 있습니까?

는 참고로, 여기에 내가 스크립트에 관해서 지금까지 무엇을 가지고 :

# Printer Info 
$printerID = "HP Designjet Z3200 24in Photo" 
$printerID1 = "HP Designjet Z3200 24in Photo - Canvas" 
$printerID2 = "HP Designjet Z3200 24in Photo - Cover" 
$printerIP = Read-Host 'What is the Poster Printer IP Address?' 
$portName = $printerIP 
$portName1 = $printerIP + "_1" 
$portName2 = $printerIP + "_2" 
$printerModel = "HP Designjet Z3200 24in Photo" 
$driverINFPath = "C:\V5\HP WFP\Driver\hpdjz3200serieswx64pcl\hpi32pxs.inf" 
$driverConfigPath = "C:\V5\HP WFP\Config\Photo.dat" 
$driverConfigPath1 = "C:\V5\HP WFP\Config\Canvas.dat" 
$driverConfigPath2 = "C:\V5\HP WFP\Config\Cover.dat" 

#installs the printer port 
Function CreatePort { 
    param ($printerIP, $portName) 
    $newPort = ([wmiclass]"Win32_TcpIpPrinterPort").CreateInstance() 
    $newPort.HostAddress = $printerIP 
    $newPort.Name = $portName 
    $newPort.portNumber = "9100" 
    $newPort.Protocol = "1" 
    $newPort.SNMPEnabled = $true 

    $newPort.Put() 
    } 
CreatePort -printerIP $printerIP -portName $portName 
CreatePort -printerIP $printerIP -portName $portName1 
CreatePort -printerIP $printerIP -portName $portName2 

#installs the printer driver and printer 
printui.exe /if /b "$printerID" /f "$driverINFPath" /u /r "$portName" /m "$printerModel" 
Start-Sleep -s 10 
printui.exe /if /b "$printerID1" /f "$driverINFPath" /u /r "$portName1" /m "$printerModel" 
Start-Sleep -s 10 
printui.exe /if /b "$printerID2" /f "$driverINFPath" /u /r "$portName2" /m "$printerModel" 

#Configures the printer from specified file 
printui.exe /Sr /n "$printerID" /a "$driverConfigPath" d g r 
Start-Sleep -s 10 
printui.exe /Sr /n "$printerID1" /a "$driverConfigPath1" d g r 
Start-Sleep -s 10 
printui.exe /Sr /n "$printerID2" /a "$driverConfigPath2" d g r 
+0

레지스트리에 이러한 항목이 저장되어 있습니다. 여기에서 파일 경로는 다음과 같습니다. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Print \ Forms 이제 일관성이 있는지 확인하고 레지스트리에 추가하기 위해 필요한 것이 모두 있는지 확인하십시오. –

답변

0

당신은 WPF 애플리케이션을위한 [System.Printing] 닷넷 클래스를 사용할 수 있습니다. 다음은 듀플렉스 및 컬러 모드를 설정하기 위해 만든 스크립트에서 변환 한 기능입니다.

Function Set-PrinterPageSize { 
    param (
     [string]$PrinterName, 

     [ValidateSet("NorthAmericaLegal","NorthAmerica11x17","NorthAmericaLetter")] 
     [String] 
     $PageSize 
    ) 
    Try { 
     #Set Perms to a variable to use when constructing instance of PrintServer 
     $Permissions = [System.Printing.PrintSystemDesiredAccess]::AdministrateServer 
     #Set Perms to a variable to use when retrieving Queues from PrintServer 
     $QueuePerms = [System.Printing.PrintSystemDesiredAccess]::AdministratePrinter 
     #Construct using PrintServer as using LocalPrintServer 
     $PrintServer = new-object System.Printing.LocalPrintServer -argumentList $Permissions 
     #Create New Queue object to assign properties to WITH permissions to change settings (getting queue from printserver won't have perms) 
     $NewQueue = new-object System.Printing.PrintQueue -argumentList $PrintServer,$PrinterName,1,$QueuePerms 
     #Check that Queue is capable of that page size, and set if so 
     $PageCaps = $NewQueue.GetPrintCapabilities().PageMediaSizeCapability 
     if ($null -ne $PageCaps) { 
      if ($PageCaps.PageMediaSizeName.Contains([System.Printing.PageMediaSizeName]::$PageSize)) { 
       #Set Page Size in default settings 
       $NewQueue.DefaultPrintTicket.PageMediaSize = [System.Printing.PageMediaSizeName]::$PageSize 
       #Win7 also requires setting userprint ticket 
       $NewQueue.UserPrintTicket.PageMediaSize = [System.Printing.PageMediaSizeName]::$PageSize 

      } else { 
       Write-Warning "$PageSize unavailable" 
      } 
     } 
     #Save changes and cleanup 
     $NewQueue.commit() 
     $NewQueue.dispose() 
     $PrintServer.commit() 
     $PrintServer.dispose() 

    } 
    Catch { 
     Write-Warning "Error Setting $PrinterName to $PageSize" 
    } 
} 
+0

답변 해 주셔서 감사합니다! 지금 시도하고있는 것이 작동하지 않으면 시도해 보겠습니다. –

관련 문제