Как открыть диалоговые окна «параметры печати» и «свойства принтера» через cmd/pwsh?

Вопрос или проблема

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

enter image description here

Мне удалось создать файл ярлыка, щелкнув правой кнопкой мыши по принтеру и выбрав “создать ярлык”, но запуск этого ярлыка открывает “диалог очереди печати”.

Панель управления, как и другие места в Windows, способны открывать “настройки” и “свойства” каждого принтера, поэтому должна существовать какая-то интерфейс, что-то наподобие этих.

Я протестировал эти решения и могу подтвердить, что они работают.

Чтобы открыть диалог “свойства принтера” для определенного принтера:

# Определите имя принтера
$printerName = "PDF-XChange Standard"

# Открыть диалог свойств принтера
Start-Process "rundll32.exe" -ArgumentList "printui.dll,PrintUIEntry /n `"$printerName`" /p"

Чтобы открыть диалог “настройки принтера” для определенного принтера

# Открыть диалог настроек принтера
Start-Process "rundll32.exe" -ArgumentList "printui.dll,PrintUIEntry /n `"$printerName`" /p"
C:\Users\indesk\SandBox\Terminal                                                                                                                                                                         02:48 Saturday 08-03-2025 # Определите имя принтера
$printerName = "PDF-XChange Standard"

# Открыть диалог настроек печати
Start-Process "rundll32.exe" -ArgumentList "printui.dll,PrintUIEntry /n `"$printerName`" /e"
C:\Users\indesk\SandBox\Terminal                                                                 

Чтобы получить правильное имя для рассматриваемого принтера, используйте

# Получить все установленные принтеры
$printers = Get-WmiObject -Query "SELECT * FROM Win32_Printer"
# Отобразить имена принтеров
$printers | ForEach-Object { Write-Output $_.Name }

Это основано на ответе Ральфа Реддинга.

Этот скрипт создаст файл ярлыка для открытия диалога свойств
для определенного принтера. Принтер, который я выбрал,
называется Microsoft Print to PDF. Вы можете изменить имя, чтобы оно соответствовало вашим предпочтениям.

После выполнения скрипта в вашем каталоге появится ярлык.
Этот ярлык можно использовать без входа в PowerShell.

<#
.SYNOPSIS
   Генерирует ярлык для свойств принтера для указанного принтера.
#>

$printername="Microsoft Print to PDF"

$path = Get-Location

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Path\myprinter.lnk")
$Shortcut.TargetPath = "rundll32.exe"
$Shortcut.Arguments = "printui.dll,PrintUIEntry /n `"$printerName`" /p"
$Shortcut.Save()

Ответ или решение

Вопрос о том, как открыть диалоги "предпочтения печати" и "свойства принтера" через командную строку или PowerShell в Windows, действительно актуален для многих пользователей, поскольку традиционный способ через панель управления может быть неудобен или вызывать раздражение из-за конфликтов с современными настройками Windows. Более того, наличие возможности создать ярлык для доступа к этим функциям может значительно упростить процесс управления принтером для пользователей, которые часто работают с печатными задачами.

Теория

Система Windows предоставляет множество возможностей доступа к системным функциям через командную строку и PowerShell, используя встроенные библиотеки и утилиты. Команда rundll32.exe является одним из таких инструментов, который позволяет вызвать DLL-функции и предоставлять доступ к различным системным настройкам посредством простых команд. Для доступа к диалогам настроек принтера мы используем printui.dll, дающую возможность управлять многими аспектами настроек принтера.

Пример

Для того чтобы открыть диалог "свойства принтера", используется следующая команда в PowerShell:

# Определяем имя принтера
$printerName = "PDF-XChange Standard"

# Открываем диалог свойств принтера
Start-Process "rundll32.exe" -ArgumentList "printui.dll,PrintUIEntry /n `"$printerName`" /p"

А для доступа к диалогу "предпочтения печати" используется:

# Открываем диалог предпочтений печати
Start-Process "rundll32.exe" -ArgumentList "printui.dll,PrintUIEntry /n `"$printerName`" /e"

Для того чтобы убедиться в правильности названия принтера, можно воспользоваться следующим PowerShell-скриптом:

# Получаем список всех установленных принтеров
$printers = Get-WmiObject -Query "SELECT * FROM Win32_Printer"

# Выводим имена принтеров
$printers | ForEach-Object { Write-Output $_.Name }

Применение

Подход, основанный на использовании PowerShell, дает возможность автоматизировать процесс вызова нужных диалоговых окон, избавляя пользователя от необходимости постоянно искать и открывать их вручную через панель управления. Это особенно полезно в бизнес-среде, где время и удобство важны для повышения производительности.

Для создания ярлыка, который будет открывать диалог свойств принтера, можно использовать следующий скрипт, создающий файл ярлыка прямо на рабочем столе или в указанной папке:

<# 
.SYNOPSIS
   Создание ярлыка для открытия свойств принтера.
#>

$printerName = "Microsoft Print to PDF"
$path = Get-Location

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Path\PrinterProperties.lnk")
$Shortcut.TargetPath = "rundll32.exe"
$Shortcut.Arguments = "printui.dll,PrintUIEntry /n `"$printerName`" /p"
$Shortcut.Save()

Этот скрипт создаст файл ярлыка под именем PrinterProperties.lnk, который можно разместить в удобной для пользователя локации и легко открывать в будущем. Важно лишь знать правильное имя принтера, которое можно предварительно определить с помощью команды на получение списка установленных устройств.

Благодаря вышеописанным методам пользователи могут легко интегрировать управление принтерами в свои рабочие процессы, избавляясь от рутинных действий и упрощая ежедневные задачи, связанные с печатью. Автоматизация таких действий может привести к значительной экономии времени и повышению удовлетворенности пользователей от работы с операционной системой.

Оцените материал
Добавить комментарий

Капча загружается...