打印服务器属性 Windows 7
Print Server Properties Windows 7
我正在尝试通过 Powershell v2 脚本在 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
您可以将 [System.Printing]
.Net class 用于 WPF 应用程序。这是我从用于设置双面和颜色模式的脚本转换而来的函数。
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"
}
}
我正在尝试通过 Powershell v2 脚本在 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
您可以将 [System.Printing]
.Net class 用于 WPF 应用程序。这是我从用于设置双面和颜色模式的脚本转换而来的函数。
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"
}
}