Get-Printer и установите вывод как переменную, которую я могу использовать для установки принтера по умолчанию - PullRequest
0 голосов
/ 20 мая 2019

В настоящее время я получаю список всех принтеров, к которым подключен компьютер.Я хочу, чтобы принтеры стали частью списка, после чего пользователь может выбрать, какой принтер установить по умолчанию.Затем он выполнит следующую часть моего скрипта, который я уже создал, который создает документ, который затем печатает.

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. 

Любая помощь будет принята с благодарностью при попытке заставить это работать.

Ответы [ 3 ]

0 голосов
/ 20 мая 2019

Я бы использовал Get-WmiObject, чтобы получить / установить принтер по умолчанию и
Out-Gridview с параметром -PassThru для выбора нового значения по умолчанию в графическом интерфейсе

## 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
0 голосов
/ 20 мая 2019

Благодаря 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"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
}


0 голосов
/ 20 мая 2019

Я не думаю, что есть команда powershell, которая может установить принтер по умолчанию. Вот как я это делаю в wmi. Удивительно, но get-printer не возвращает объект с помощью метода SetDefaultPrinter ().

$printerObject = Get-WmiObject win32_printer | where name -eq $defaultprinter
$resultobj = $printerObject.SetDefaultPrinter()
"default $defaultprinter $($resultobj.returnvalue)"  # showing results
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...