Trong bài viết trước, chúng tôi đã xem xét các tập lệnh VBS kiểu cũ có thể được sử dụng để quản lý máy in và hoạt động in ấn trong tất cả các phiên bản Windows, bắt đầu từ Windows XP. Hôm nay chúng ta sẽ xem xét các lệnh điển hình để cài đặt, quản lý và xóa máy in, cổng in, trình điều khiển và hàng đợi in bằng PowerShell. Các cách quản lý máy in từ giao diện dòng lệnh PowerShell này có thể được sử dụng trong các hệ điều hành hiện đại – Windows 10 / 8.1 và Windows Server 2019 / 2016 / 2012 R2.
Mô-đun PowerShell: PrintManagement
Cùng với việc phát hành Windows 8.1 và Windows Server 2012 R2, Microsoft đã phát hành phiên bản mới của PowerShell 4.0 (một phần của Windows Management Framework 4.0), mở rộng đáng kể danh sách các cmdlet quản lý máy in dựa trên Windows. Bạn có thể lấy danh sách đầy đủ các cmdlet quản lý máy in, trình điều khiển và hàng đợi in có sẵn trong mô-đun PrintManagement trên Windows 10 (PowerShell v5) bằng lệnh sau:
Get-Command –Module PrintManagement
Mô-đun PrintManagement bao gồm 22 cmdlet PowerShell để quản lý máy in, trình điều khiển, cổng in và hàng đợi:
- Add-Printer – thêm (cài đặt) máy in mới;
- Add-PrinterDriver – cài đặt trình điều khiển in mới;
- Add-PrinterPort – tạo cổng in cục bộ;
- Get-PrintConfiguration – hiển thị cấu hình máy in;
- Get-Printer – hiển thị danh sách máy in đã cài đặt trên máy tính;
- Get-PrinterDriver – hiển thị danh sách trình điều khiển đã cài đặt;
- Get-PrinterPort – hiển thị danh sách cổng máy in;
- Get-PrinterProperty – hiển thị thuộc tính máy in;
- Get-PrintJob – lấy danh sách công việc in của máy in;
- Read-PrinterNfcTag – lấy thông tin máy in từ thẻ NFC;
- Remove-Printer – xóa máy in;
- Remove-PrinterDriver — xóa trình điều khiển máy in;
- Remove-PrinterPort – xóa cổng máy in;
- Remove-PrintJob – xóa công việc in trên máy in;
- Rename-Printer – đổi tên máy in;
- Restart-PrintJob – khởi động lại công việc in;
- Resume-PrintJob – tiếp tục công việc in đã tạm dừng;
- Set-PrintConfiguration – đặt cấu hình máy in;
- Set-Printer – cập nhật cấu hình máy in;
- Set-PrinterProperty – thay đổi thuộc tính máy in;
- Suspend-PrintJob – tạm dừng (tạm ngưng) công việc in;
- Write-PrinterNfcTag – ghi thông tin vào thẻ NFC.
Để lấy thông tin chi tiết về cú pháp của bất kỳ lệnh nào, hãy sử dụng lệnh sau:
Get-Help <cmdlet_name> -Detailed
Ví dụ sử dụng lệnh:
Get-Help < cmdlet_name> -Examples
Hãy xem xét một vài ví dụ về các nhiệm vụ quản lý máy in điển hình bằng PowerShell trong Windows 10.
Thêm trình điều khiển máy in vào DriverStore
Để liệt kê các trình điều khiển in đã cài đặt trong Windows DriverStore:
Get-PrinterDriver

Sau đó, cài đặt trình điều khiển máy in mới vào hệ thống. Ví dụ, bạn muốn cài đặt trình điều khiển in phổ biến "HP Universal Printing PCL 6". Theo tài liệu, lệnh PowerShell để thêm trình điều khiển in nên như sau:
Add-PrinterDriver -Name "HP Universal Printing PCL 6" -InfPath "C:\Distr\HP-pcl6-x64\hpcu118u.inf"
Tuy nhiên, khi cố gắng cài đặt trình điều khiển theo cách này, thông báo lỗi sau xuất hiện:
Add-PrinterDriver : One or more specified parameters for this operation has an invalid value.At line:1 char:1+ Add-PrinterDriver -Name "HP Universal Printing PCL 6" -InfPath "C:\Di ......+ ~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo : InvalidArgument: (MSFT_PrinterDriver:ROOT/StandardCimv2/MSFT_PrinterDriver) [Add-PrinterDriver], CimException + FullyQualifiedErrorId : HRESULT 0x80070057,Add-PrinterDriver

Thực tế, trình điều khiển từ tệp INF chỉ có thể được cài đặt nếu nó đã tồn tại trong DriverStore. Rõ ràng bạn không thể cài đặt trình điều khiển in không có trong Driver Store bằng lệnh Add-PrinterDriver. Để thêm trình điều khiển vào DriverStore, bạn có thể sử dụng:
- tập lệnh VBS được mô tả trong bài viết trước;
- tiện ích — pnputil.exe. Lệnh có thể trông như sau:
pnputil.exe -i -a C:\Distr\HP-pcl6-x64\hpcu118u.inf(cài đặt trình điều khiển máy in cụ thể) hoặcpnputil.exe -i -a C:\Distr\HP-pcl6-x64\*.inf(cài đặt tất cả trình điều khiển tìm thấy trong các tệp INF trong thư mục chỉ định);

- cmdlet Add-WindowsDriver cho phép tích hợp trình điều khiển vào hình ảnh Windows ngoại tuyến.
Sau khi thêm trình điều khiển máy in vào kho trình điều khiển, bạn nên cài đặt nó trên máy chủ in:
Add-PrinterDriver -Name "HP Universal Printing PCL 6"

Cách cài đặt máy in bằng PowerShell?
Tạo cổng IP cho máy in mạng (ở đây bạn có thể chỉ định cả địa chỉ IP của máy in mạng và tên của máy chủ in từ xa):
Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26"
Trước khi thêm cổng in IP mới, bạn có thể kiểm tra xem nó có tồn tại không:
$portName = "IP_192.168.10.26"
$checkPortExists = Get-Printerport -Name $portname -ErrorAction SilentlyContinue
if (-not $checkPortExists) {
Add-PrinterPort -name $portName -PrinterHostAddress "192.168.10.26"
}
Với sự giúp đỡ của lệnh sau, chúng ta sẽ cài đặt và chia sẻ máy in mới trên máy tính:
Add-Printer -Name hp3027_Office1_Buh -DriverName "HP LaserJet M3027 MFP PCL6 Class Driver" -PortName IP_192.168.10.26 -Shared -ShareName "hp3027_1_BUh" –Published

Sau khi chạy các lệnh này, một máy in chia sẻ mới với tên "hp3027_Office1" sẽ xuất hiện trong hệ thống.

Để đổi tên máy in, chỉ cần chạy lệnh:
Rename-Printer -Name "hp3027_1_Buh" -NewName "hp3027_F1_Salary"
Liệt kê máy in đã cài đặt trên máy chủ in
Hãy hiển thị danh sách đầy đủ các máy in đã cài đặt trên máy tính này:
Get-Printer
Như bạn thấy, lệnh hiển thị tên máy in, loại (cục bộ hoặc mạng), trình điều khiển, cổng in, liệu máy in có được chia sẻ và phát hành trong Active Directory hay không.

Hầu hết các cmdlet PrintManagement có thể được sử dụng để xem trạng thái và quản lý máy in, trình điều khiển và hàng đợi in trên máy tính từ xa (máy chủ in). Tên máy tính hoặc máy chủ từ xa được chỉ định làm đối số của tham số –ComputerName.
Bạn có thể lấy thông tin về máy in đã cài đặt trên máy tính từ xa bằng lệnh PowerShell:
Get-Printer -ComputerName rome-prnt1 | Format-List Name,DriverName
Để chỉ hiển thị danh sách máy in được chia sẻ, hãy sử dụng lệnh:
Get-Printer -ComputerName rome-prnt1 | where Shared -eq $true | fl Name
Kết nối với máy in chia sẻ mạng bằng PowerShell
Để kết nối máy in chia sẻ từ máy chủ in, hãy sử dụng lệnh:
Add-Printer -ConnectionName \\rome-prnt1\HP3027
Windows 10 sử dụng máy in mới nhất được sử dụng để in làm máy in mặc định. Nếu bạn muốn sử dụng máy in mặc định cố định, hãy chạy lệnh:
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" -Name "LegacyDefaultPrinterMode" -Value 1 –Force
Để đặt máy in mặc định, bạn có thể sử dụng các lệnh sau:
$wsnObj = New-Object -COM WScript.Network
$wsnObj.SetDefaultPrinter(%PrinterName%)
Cách xóa máy in bằng PowerShell?
Để xóa máy in, bạn cần chạy lệnh PowerShell sau:
Remove-Printer -Name "hp3027_L1_O1"
Bạn có thể xóa một trình điều khiển cụ thể bằng cmdlet Remove-PrinterDriver:
Remove-PrinterDriver -Name "HP Universal Printing PCL 6"