PDA

Показать полную графическую версию : [решено] Удаление принтера с указанным портом


Dragokas
12-07-2020, 02:25
Здравствуйте!

Хочу удалить принтер(ы), привязанные к указанному порту (например, "SHRFAX:").
Подскажите, как сделать (желательно однострочником).

Спасибо.


PS C:\Users\Alex> Get-Printer

Name ComputerName Type DriverName PortName Shared Published
---- ------------ ---- ---------- -------- ------ --------
Fax Local Microsoft Shared Fax D... SHRFAX: False False


Примерно так (только нету такого параметра):


$Printer = Get-Printer -PortName "SHRFAX:"
Remove-Printer -InputObject $Printer

NickM
12-07-2020, 07:02
А так не пробовали?
$printer = get-printer * | where {$_.portname -eq 'SHRFAX:'}; remove-printer -inputobject $printer

Dragokas
12-07-2020, 17:02
Да, так работает. Спасибо.

Dragokas
12-07-2020, 18:09
А вот как теперь это грамотно экранировать, чтобы вызвать из-под CMD ?


powershell.exe -ExecutionPolicy UnRestricted -c "$printer = get-printer * | where {$_.portname -eq 'SHRFAX:'}; remove-printer -inputobject $printer"

= : The term '=' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:2

Jeffers
12-07-2020, 18:36
А в чем у вас сложность выполнить этот код в powershell? Microsoft не рекомендует использовать cmd.

NickM
12-07-2020, 18:58
А вот как теперь это грамотно экранировать, чтобы вызвать из-под CMD ? »

Хмм, в десятке Ваш пример работает без ошибок, но требует админ привелегии:


> $PSVersionTable.PSVersion

Major Minor Build Revision
----- ----- ----- --------
5 1 19041 1

>powershell.exe -ExecutionPolicy UnRestricted -c "$printer = get-printer * | where {$_.portname -eq 'SHRFAX:'}; remove-printer -inputobject $printer"
remove-printer : Отказано в доступе к указанному ресурсу.
строка:1 знак:63
+ ... ere {$_.portname -eq 'SHRFAX:'}; remove-printer -inputobject $printer
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (MSFT_Printer (N... = 0, Type = 0):ROOT/StandardCimv2/MSFT_Printer) [R
emove-Printer], CimException
+ FullyQualifiedErrorId : HRESULT 0x80070005,Remove-Printer

Dragokas
12-07-2020, 21:32
NickM, странно, действительно заработало. Запускал от админа. Возможно, где-то лишний знак затесался.

Jeffers, в реале запуск идёт не из-под CMD, а другой программы, поэтому так.

Microsoft не рекомендует использовать cmd. »
При том, что сама же до сих пор в Windows 10 его использует в ветке реестра AutoRun для подчистки за своим продуктом OneDrive.




© OSzone.net 2001-2012