我当前正在获取计算机连接到的所有打印机的列表。我希望打印机成为列表的一部分,然后用户可以选择将哪个打印机设置为默认打印机。然后,它将执行我已经创建的脚本的下一部分,该脚本创建一个文档,然后打印出来。
Get-Printer | Select PortName | Select-String -Pattern "SM"
这就是我希望代码返回的内容
1. SM04
2. SM05
3. SM06
4. SM10
Please select a printer from the list: 3
Default printer has been set to: SM06.
任何帮助都是非常感谢的,试图让这个工作。
发布于 2019-05-20 22:19:56
我不认为有一个powershell命令可以设置默认打印机。下面是我在wmi中的实现方法。令人惊讶的是,get-printer没有返回带有SetDefaultPrinter()方法的对象。
$printerObject = Get-WmiObject win32_printer | where name -eq $defaultprinter
$resultobj = $printerObject.SetDefaultPrinter()
"default $defaultprinter $($resultobj.returnvalue)" # showing results
发布于 2019-05-20 23:25:53
我将使用Get-WmiObject
来获取/设置默认打印机
使用-PassThru
参数的Out-Gridview
在图形用户界面中选择新默认值
## Q:\Test\2019\05\20\SO_56222678.ps1
# Save old default Printer
$OldDefaultPrinter = (Get-WmiObject -Namespace root\cimv2 -Query `
"select * from Win32_Printer Where Default = TRUE" -Impersonation 3).Name
# Get-Printer matching pattern and select in Out-Gridview
$NewDefaultPrinter = (Get-Printer | Where-Object Portname -like 'SM*'|
Select-Object Name,Portname |
Out-Gridview -Title 'Select a printer' -PassThru).Name
# Set selected as new default
$Null = (Get-WmiObject -Class Win32_Printer -Filter "Name='$NewDefaultPrinter'").SetDefaultPrinter()
# Check new default is set
(Get-WmiObject -Namespace root\cimv2 -Query `
"select * from Win32_Printer Where Default = TRUE" -Impersonation 3).Name
发布于 2019-05-21 03:06:54
多亏了js2010和LotPings,我才能弄明白这一点。我甚至能够得到计算机连接到的所有打印机的列表!
这是代码,以防其他人尝试做类似的事情。
#Asks the user if they would like to switch the default printer
$defaultPrinter1 = Get-WmiObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true" | select ShareName
$defaultPrinter1 = ("$defaultPrinter1").substring(12,4)
Write-Host "Barcodes will be printed at your default Printer. Your default printer is currently: $defaultPrinter1"
$printerConf = Read-Host "Would you like to change the default printer? Y/N"
#Switches dafault printer to the one specified by the user.
if ($printerConf -eq "Y")
{
Write-Host "Here is list of connected printers`n"
$printerList = Get-Printer | Select PortName | Select-String -Pattern "SM"
$printerList-replace ".*=" -replace "}.*"
$wshNet = New-Object -ComObject WScript.Network
$selectPrinter = Read-Host "`nWhat is the printers name?"
$wshNet.SetDefaultPrinter($selectPrinter)
$defaultPrinter2 = Get-WmiObject -Query " SELECT * FROM Win32_Printer WHERE Default=$true" | select ShareName
$defaultPrinter2 = ("$defaultPrinter2").substring(12,4)
Write-Host "Default Printer has been changed. It is now: $defaultPrinter2"
}
https://stackoverflow.com/questions/56222678
复制相似问题