ЦЕЛЬ :Чтобы экспортировать сетевой принтер с одного компьютера с Windows 10 в выходной файл и использовать этот выходной файл для импорта на другой компьютер с Windows 10 в той же сети.
Поисковая работа:
Следующий командный файл Powershell показываетКартографированные принтерыдля пользователя:
командлет 1)
Get-WMIObject Win32_Printer -ComputerName $env:COMPUTERNAME | where{$_.Name -like “*\\*”} | select sharename,name
ПРИМЕЧАНИЕ: Вышеуказанная команда не показываетИмя водителякоторый является критическим параметром для следующей команды
Команда, которую я планирую использовать для импорта сетевого принтера:
командлет 2)
Синтаксис:
rundll32 printui.dll,PrintUIEntry /Xs /n\СЕРВЕР\ИМЯ_ОБЩЕГО_ПРИНТЕРАИмя водителя"Lexmark C752 PS3"
Поскольку у меня не было имени драйвера, я все равно попытался запустить его, так как драйвер уже установлен на втором компьютере с Windows 10.
rundll32 printui.dll,PrintUIEntry /Xs /n"\tdr09\AlphaIT(prtq3) KONICA MINOLTA C550i"
Но после запуска cmd я получаю ошибку:
===========================================================================
[Заголовок окна] Принтеры
[Основная инструкция] Аргументы недействительны.
[ХОРОШО]
===========================================================================
Проблема:
1)Командлет 1 не предоставляетИмя водителяпоэтому командлет 2 завершается с ошибкой, указанной выше.
=======================================================================
Метод 2. Основано на отзыве @Massimo
Я попробовал использовать следующую команду:
получить-принтер | где{$_.Имя -как "\"} | Формат-Таблица -Авторазмер введите описание изображения здесь
Вывод выглядит так:
Имя Имя компьютера Тип Имя драйвера Имя порта Общий Опубликовано
\trq02\AXEIT(ptq2) KONICA MINOLTA C550i ptq02 Подключение KONICA MINOLTA C650iSeries 10.246.0.173 True F...
Я могу передать его в текстовый файл, но как заставить PowerShell прочитать этот файл и добавить принтер?
ПРИМЕЧАНИЕ:Если я вручную запускаю следующую команду, то добавление принтера работает нормально.
добавить принтер "\trq02\AXEIT(ptq2) KONICA MINOLTA C550i"
решение1
Зачем вы вообще возитесь с WMI и rundll32?
Вам следует использовать собственные команды PowerShell Get-Printer
и Add-Printer
.
Пример:
На первом компьютере используйте:
Get-Printer | where {$_.Type -eq 'Connection'} | Export-Csv -Path 'C:\Printers.csv'
Скопируйте файл на второй компьютер и используйте:
$printers = Import-Csv -Path 'C:\Printers.csv'
foreach($printer in $printers)
{
Add-Printer -ConnectionName ($printer.Name)
}