পূর্বের আর্টিকেলে আমরা পুরনো VBS স্ক্রিপ্টগুলো দেখেছি যা উইন্ডোজ XP থেকে শুরু করে সব উইন্ডোজ সংস্করণে প্রিন্টার এবং প্রিন্ট অপারেশন পরিচালনার জন্য ব্যবহার করা যেত। আজ আমরা PowerShell ব্যবহার করে প্রিন্টার, প্রিন্ট পোর্ট, ড্রাইভার এবং কিউ ইনস্টল, পরিচালনা এবং সরানোর সাধারণ কমান্ডগুলো দেখব। প্রিন্টার পরিচালনার এই পদ্ধতিগুলো আধুনিক অপারেটিং সিস্টেমে – উইন্ডোজ ১০/৮.১ এবং উইন্ডোজ সার্ভার ২০১৯/২০১৬/২০১২ R2-এ ব্যবহার করা যাবে।
PowerShell মডিউল: PrintManagement
উইন্ডোজ ৮.১ এবং উইন্ডোজ সার্ভার ২০১২ R2 রিলিজের সাথে সাথে মাইক্রোসফট PowerShell 4.0-এর নতুন সংস্করণ রিলিজ করেছিল (Windows Management Framework 4.0-এর অংশ), যেটি উইন্ডোজ-ভিত্তিক প্রিন্ট সার্ভার ম্যানেজমেন্ট cmdlet-এর তালিকা উল্লেখযোগ্যভাবে প্রসারিত করেছিল। উইন্ডোজ ১০-এ (PowerShell v5) PrintManagement মডিউলে উপলব্ধ প্রিন্ট, ড্রাইভার এবং প্রিন্ট কিউ ম্যানেজমেন্ট cmdlet-এর পূর্ণ তালিকা পেতে নিচের কমান্ডটি চালান:
Get-Command –Module PrintManagement

PrintManagement মডিউলে প্রিন্টার, ড্রাইভার, প্রিন্ট পোর্ট এবং কিউ পরিচালনার জন্য ২২টি PowerShell cmdlet রয়েছে:
- Add-Printer – নতুন প্রিন্টার যোগ (ইনস্টল) করা;
- Add-PrinterDriver – নতুন প্রিন্ট ড্রাইভার ইনস্টল করা;
- Add-PrinterPort – লোকাল প্রিন্ট পোর্ট তৈরি করা;
- Get-PrintConfiguration – প্রিন্টার কনফিগারেশন দেখা;
- Get-Printer – কম্পিউটারে ইনস্টল করা প্রিন্টারদের তালিকা দেখা;
- Get-PrinterDriver – ইনস্টল করা ড্রাইভারদের তালিকা দেখা;
- Get-PrinterPort – প্রিন্টার পোর্টগুলোর তালিকা দেখা;
- Get-PrinterProperty – প্রিন্টার প্রপার্টি দেখা;
- Get-PrintJob – প্রিন্টারের প্রিন্ট জবের তালিকা পাওয়া;
- Read-PrinterNfcTag – NFC ট্যাগ থেকে প্রিন্টার তথ্য পেতে;
- Remove-Printer – প্রিন্টার সরানো;
- Remove-PrinterDriver — প্রিন্টার ড্রাইভার সরানো;
- Remove-PrinterPort – প্রিন্টার পোর্ট সরানো;
- Remove-PrintJob – প্রিন্টারের প্রিন্ট জব মুছে ফেলা;
- Rename-Printer – প্রিন্টারর নাম পরিবর্তন করা;
- Restart-PrintJob – প্রিন্ট জব পুনরায় শুরু করা;
- Resume-PrintJob – pause করা প্রিন্ট জব চালিয়ে যেতে;
- Set-PrintConfiguration – প্রিন্টার কনফিগারেশন সেট করা;
- Set-Printer – প্রিন্টার কনফিগারেশন আপডেট করা;
- Set-PrinterProperty – প্রিন্টার প্রপার্টি পরিবর্তন করা;
- Suspend-PrintJob – প্রিন্ট জব সাসপেন্ড (pause) করা;
- Write-PrinterNfcTag – NFC ট্যাগে তথ্য লেখা।
যেকোনো কমান্ডের সিনট্যাক্স সম্পর্কে বিস্তারিত জানতে নিচের কমান্ডটি ব্যবহার করুন:
Get-Help <cmdlet_name> -Detailed
কমান্ড ব্যবহারের উদাহরণ देखने:
Get-Help < cmdlet_name> -Examples
চলুন উইন্ডোজ ১০-এ PowerShell ব্যবহার করে প্রিন্টার পরিচালনার কিছু সাধারণ কাজের উদাহরণ দেখি।
DriverStore-এ প্রিন্টার ড্রাইভার যোগ করা
Windows DriverStore-এ ইনস্টল করা প্রিন্ট ড্রাইভারদের তালিকা পেতে:
Get-PrinterDriver

তারপর সিস্টেমে নতুন একটি প্রিন্টার ড্রাইভার ইনস্টল করুন। উদাহরণস্বরূপ, আপনি জনপ্রিয় প্রিন্ট ড্রাইভার "HP Universal Printing PCL 6" ইনস্টল করতে চান। ডকুমেন্টেশনের মতে, PowerShell কমান্ডটি নিচের মতো হওয়া উচিত:
Add-PrinterDriver -Name "HP Universal Printing PCL 6" -InfPath "C:\Distr\HP-pcl6-x64\hpcu118u.inf"
তবে, এইভাবে ড্রাইভার ইনস্টল করার চেষ্টা করলে নিচের এরর মেসেজটি আসে:
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

ব يحي, INF ফাইল থেকে ড্রাইভারটি শুধু তখন ইনস্টল করা যায় যখন এটি ইতিমধ্যে DriverStore-এ বিদ্যমান থাকে। অর্থাৎ, Add-PrinterDriver কমান্ড ব্যবহার করে Driver Store-এ নেই এমন একটি প্রিন্ট ড্রাইভার ইনস্টল করা যায় না। DriverStore-এ ড্রাইভার যোগ করতে আপনি ব্যবহার করতে পারেন:
- পূর্বের আর্টিকেলে বর্ণিত VBS স্ক্রিপ্ট;
- ইউটিলিটি — pnputil.exe। কমান্ডটি নিচের মতো হতে পারে:
pnputil.exe -i -a C:\Distr\HP-pcl6-x64\hpcu118u.inf(নির্দিষ্ট প্রিন্টার ড্রাইভার ইনস্টল করে) বাpnputil.exe -i -a C:\Distr\HP-pcl6-x64\*.inf(নির্দিষ্ট ডিরেক্টরিতে INF ফাইলগুলতে পাওয়া সব ড্রাইভার ইনস্টল করে);
- cmdlet Add-WindowsDriver যা অফলাইন উইন্ডোজ ইমেজে ড্রাইভার ইন্টিগ্রেট করার অনুমতি দেয়।
ড্রাইভার রিপোজিটরিতে প্রিন্টার ড্রাইভার যোগ করার পর, এটি প্রিন্ট সার্ভারে ইনস্টল করা উচিত:
Add-PrinterDriver -Name "HP Universal Printing PCL 6"

টিপ. PowerShell-এর মাধ্যমে ড্রাইভার ইনস্টল করার সময় প্রিন্ট ড্রাইভার নাম ফিল্ডে কী 지정 করতে হবে তা কীভাবে জানবেন? নির্দিষ্ট প্রিন্ট ড্রাইভার নামটি এর ইন্টারন্যাল সিস্টেম নামের সাথে সঠিকভাবে মিলতে হবে, অন্যথায় ড্রাইভার ইনস্টলেশনের সময় এরর আসবে। সঠিক ড্রাইভার নাম জানতে আপনি get-printerdriver কমান্ডটি সেই কম্পিউটারে চালাতে পারেন যেখানে এই প্রিন্ট ড্রাইভারটি ইতিমধ্যে ইনস্টল করা আছে, অথবা ড্রাইভারের .inf ফাইল ম্যানুয়ালি পরীক্ষা করে জানতে পারেন।
PowerShell ব্যবহার করে প্রিন্টার কীভাবে ইনস্টল করবেন?
নেটওয়ার্ক প্রিন্টারের জন্য একটি IP পোর্ট তৈরি করুন (এখানে আপনি নেটওয়ার্ক প্রিন্টারটির IP ঠিকানা এবং রিমোট প্রিন্ট সার্ভারের নাম দুটোই নির্দিষ্ট করতে পারেন):
Add-PrinterPort -Name "IP_192.168.10.26" -PrinterHostAddress "192.168.10.26"
নতুন IP প্রিন্ট পোর্ট যোগ করার আগে, আপনি চেক করতে পারেন এটি বিদ্যমান কিনা:
$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"
}
নিচের কমান্ডটি ব্যবহার করে কম্পিউটারে একটি নতুন প্রিন্টার ইনস্টল এবং শেয়ার করব:
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

নোট: দ্রষ্টব্য, একই অপারেশন (প্রিন্টার ইনস্টল এবং শেয়ার) VBS স্ক্রিপ্ট (Printing Admin scripts) ব্যবহার করে করার জন্য আপনাকে দুটি ভিন্ন কমান্ড চালাতে হতো।
এই কমান্ডগুলো চালানোর পর, সিস্টেমে "hp3027_Office1" নামে একটি নতুন শেয়ার্ড প্রিন্টার দেখা যাবে।

প্রিন্টারর নাম পরিবর্তন করতে শুধু নিচের কমান্ডটি চালান:
Rename-Printer -Name "hp3027_1_Buh" -NewName "hp3027_F1_Salary"
প্রিন্ট সার্ভারে ইনস্টল করা প্রিন্টারদের তালিকা
এই কম্পিউটারে ইনস্টল করা প্রিন্টারদের সম্পূর্ণ তালিকা দেখান:
Get-Printer
আপনি দেখতে পাচ্ছেন, কমান্ডটি প্রিন্টার নাম, টাইপ (লোকাল বা নেটওয়ার্ক), ড্রাইভার, প্রিন্ট পোর্ট, প্রিন্টার শেয়ার্ড কিনা এবং Active Directory-এ পাবলিশ করা হয়েছে কিনা দেখাচ্ছে।

PowerShell কমান্ড ব্যবহার করে রিমোট কম্পিউটারে ইনস্টল করা প্রিন্টার সম্পর্কে তথ্য পেতে:
Get-Printer -ComputerName rome-prnt1 | Format-List Name,DriverName
শুধু শেয়ার্ড প্রিন্টারদের তালিকা দেখাতে:
Get-Printer -ComputerName rome-prnt1 | where Shared -eq $true | fl Name
PowerShell দিয়ে নেটওয়ার্ক শেয়ার্ড প্রিন্টার সাথে কানেক্ট করা
প্রিন্ট সার্ভার থেকে শেয়ার্ড প্রিন্টার কানেক্ট করতে নিচের কমান্ডটি ব্যবহার করুন:
Add-Printer -ConnectionName \\rome-prnt1\HP3027
উইন্ডোজ ১০ প্রিন্টিং-এর জন্য সর্বশেষ ব্যবহৃত প্রিন্টারকে ডিফল্ট প্রিন্টার হিসেবে ব্যবহার করে। আপনি যদি একটি নির্দিষ্ট ডিফল্ট প্রিন্টার ব্যবহার করতে চান, তবে নিচের কমান্ডটি চালান:
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" -Name "LegacyDefaultPrinterMode" -Value 1 –Force
ডিফল্ট প্রিন্টার সেট করতে নিচের কমান্ডগুলো ব্যবহার করা যাবে:
$wsnObj = New-Object -COM WScript.Network
$wsnObj.SetDefaultPrinter(%PrinterName%)
PowerShell ব্যবহার করে প্রিন্টার কীভাবে সরাবেন?
প্রিন্টার সরাতে নিচের PowerShell কমান্ডটি চালাতে হবে:
Remove-Printer -Name "hp3027_L1_O1"
নির্দিষ্ট ড্রাইভার সরাতে Remove-PrinterDriver cmdlet ব্যবহার করা যাবে:
Remove-PrinterDriver -Name "HP Universal Printing PCL 6"