Міграція принтерів з Windows Server 2003 x86 на Server 2008 x64

Як ви пам'ятаєте, Windows Server 2008 R2 це перша ОС Microsoft, яка поставляється тільки в 64 бітної редакції, і тому всі служби, в тому числі мережева друк за допомогою цієї ОС призначені для роботи в 64-бітному оточенні. Я в одній з попередніх статей вже описував проблеми настройки друку на загальний мережевий принтер в XP з Windows 7, і здавалося б, що процедура переходу з 32 на 64 розрядну архітектуру друку, може створити суттєві труднощі для системного адміністратора, але, на щастя, це не так.

Найважливіше, перед початком міграції принтерів на новий сервер - зібрати 64-бітові версії драйверів для всіх підключених привітів, а потім або:

а) встановити ці драйвера в якості додаткових на вихідний сервер (Windows 2003 x86)
б) попередньо встановити їх на новий x64 сервер

Для установки 64 бітних драйверів принтерів необхідно скористатися спеціальною консоллю Print Management, яка використовується в Windows Vista, Windows 7 і Server 2008 / R2. За допомогою стандартного інтерфейсу управління Windows Server 2003 їх встановити не вийде просто тому, що ця версія ОС просто не знає про існування Win Server 2008 R2. ,

При спробі віддаленої (за допомогою консолі Print Management) установки нового драйвера (для Server 2008 R2) на сервер з Windows 2003, у мене з'являється вікно із запитом надати додаткові файли, наприклад UNIDRV.dll. І для установки драйвера принтера, мені кожен раз доводилося знаходити і вибирати його вручну. Це, звичайно не є великою проблемою, але при установці драйверів для кількох десятків друкуючих пристроїв ця процедура може стати кілька обтяжливою. При локальній установці цих же драйверів на сервер Windows 2008 R2, таких проблем не спостерігається, тому, на мій погляд, більш зручний другий варіант міграції, при якій на сервер 2008 R2 попередньо встановлюються 64 бітні драйвера, а потім здійснюється міграція x86 драйверів.

Відкриваємо меню Start, в вікні пошуку набираємо «Print Management», в результаті чого відкриється консоль управління принтерами Print Management. Розгорнемо вузол «Print Servers», виберемо потрібний нам сервер друку, клацнемо по елементу «Drivers» правою кнопкою миші і виберемо «Add Driver» (встановити драйвер). Якщо потрібний сервер в списку відсутній, його необхідно додати в консоль, клацнувши по вузлу «Print Servers» і вибравши команду «Add / Remove Servers». Відзначте опцію x64 і вкажіть шлях до драйвера. Після установки всіх необхідних драйверів, можна приступати до процесу міграції.

Процедура міграції принтерів з одного сервера на інший складається з двох кроків: на першому здійснюється експорт драйверів, портів і обробників друку з первинного принт-сервера в файл, а потім з файлу виконуємо імпорт на новий сервер друку. Дані операції можна здійснити за допомогою графічної консолі Print Management, або з командного рядка за допомогою утиліти printbrm.exe (насправді графічний GUI = це всього лише оболонка цієї консольної утиліти). Знайти утиліту Printbrm.exe в Windows 7 і Server 2008 можна в каталозі c: \ windows \ system32 \ spool \ tools (тому що даний шлях відсутній в системній змінній% PATH%, тому доведеться вказувати повний шлях до даного каталогу). Як графічна, так і консольна версія утиліти міграції printbrm.exe обробляють абсолютно все драйвера і черги друку, тому ми не зможемо вибрати тільки певні драйвера.

Для того, щоб використовувати printbrm, необхідно вручну відкрити мережевий доступ до принтера (розширити його), в результаті чого драйвер буде встановлений в загальну папку print $. У тому випадку, якщо мережевий доступ до принтера буде відкритий вручну, при використанні printbrm з'являться помилки з кодами 0x80043333 і 0x80004005. При використанні графічного інтерфейсу, дана умова виконувати необов'язково.

Ескортуючи принтера з принт-сервера (2003 x86):
GUI: Клацаємо правою кнопкою миші по старому сервера і вибираємо пункт «Migrate Printers». Потім вибираємо "Export printers to a file" і вказуємо файл, в який буде здійснено експорт.
CLI:

printbrm.exe -s \\ old2003server -b -f c: \ printers \ printerExport.exp

Імпорт конфігурації на новий сервер (2008 r2 x64):
GUI: Правою кнопкою клацаємо по новому сервера і вибираємо «Migrate Printers». Вибираємо "Import printers from a file" і вказуємо раніше отриманий файл ...
CLI:

printbrm.exe -s \\ new2008r2server -r -f c: \ printers \ printerExport.exp

Далі приведу опис додаткових параметрів утиліти printbrm.exe:

PrintBrm -B | R | Q [-S] -F [-D] [-O FORCE] [-P ALL | ORIG] [-NOBIN] [-LPR2TCP] [-C] [-NOACL] [-?]

-B резервне копіювання сервера друку в файл
-R відновлення конфігурації сервера друку з файлу
-Q опитування сервера або файлу з резервною копією
-S цільової сервер
-F файл бекапа
-D розпакувати файл бекапа (-R) або перепакувати файл (-B) в зазначений каталог
-O FORCE примусово перезаписати існуючі об'єкти
-P ALL | ORIG опублікувати всі принтери в Active Directory, або опублікувати в AD тільки раніше опубліковані принтера
-LPR2TCP при відновленні перетворити порти LPR в стандартні порти TCP / IP
-C використовувати вказаний конфігураційний файл
-NOACL при відновленні, видалити списки доступу ACL з усіх принтерів
В результаті міграції принтерів з 32 бітної ОС на 64-бітну ОС Windows Server 2008 R2, в консолі управління преси на новому сервері з'являться всі принтера, присутні на старому сервері.

помилки x80070705 і 0x80070057 - driver not found

При тестуванні процесу перенесення принтерів на новий сервер я зіткнувся з помилками типу driver not found (драйвер не знайдене) 0x80070705 і 0x80070057, причому обидва драйвера і x86 і x64 успішно імпортуються і з'являються в списку встановлених драйверів в консолі Print Management. Як виявилося, причина появи таких помилок - розбіжність імен драйверів. Це може статися, якщо використовуються, наприклад, універсальний драйвер і специфічний драйвер для конкретної моделі принтера. З такою проблемою я зіткнувся у більшості принтерів HP Laserjet, які на Server 2003 використовують x86 драйвер для конкретної моделі, а на Windows 7 / Server 2008 R2 працюють з універсальним x64 драйвером від HP (HP Universal driver).

Для вирішення цієї проблеми потрібно або завантажити точно такий же драйвер, або перейменувати драйвера так, щоб вони мали назву назви збіглися (хоча в загальному випадку, перейменовувати назви драйверів не рекомендується).

До речі за допомогою утиліти Print Migrator можна переносити принтера між старими версіями ОС Microsoft (XP і 2003) .