Windows Server’a Yerel ve Ağ Yazıcısı Nasıl Eklenir

Yazıcı kurulumu deyince akla hemen “ne kadar basit bir iş” geliyor, ama işin içine girince farklı bir tablo çıkıyor. Özellikle Active Directory ortamlarında, uzak sitelerdeki yazıcıları merkezi olarak yönetmek, sürücü uyumluluğu sorunlarıyla boğuşmak ya da network yazıcısını bir türlü Windows Server’a tanıtamamak gibi durumlarla her sistem yöneticisi en az bir kez karşılaşmıştır. Bu yazıda hem GUI üzerinden hem de PowerShell ve komut satırı üzerinden yazıcı kurulum sürecini adım adım ele alacağız.

Temel Kavramlar: Yerel ve Ağ Yazıcısı Ayrımı

Windows Server’da yazıcı eklemeden önce iki temel kavramı net bir şekilde ayırt etmek gerekiyor.

Yerel yazıcı: Sunucuya fiziksel olarak bağlı olan (USB, LPT veya seri port üzerinden) ya da sanal port kullanarak tanımlanan yazıcılardır. Ağ yazıcıları da teknik olarak yerel port üzerinden eklenebilir, bu yüzden “yerel yazıcı” terimi bazen kafa karıştırıcı olabiliyor.

Ağ yazıcısı: IP adresi olan, TCP/IP port üzerinden sunucuya tanıtılan yazıcılardır. Ofis ortamlarında en yaygın kullanılan yöntem bu. Bir yazıcı sunucusundan paylaşılan yazıcıya bağlanmak da bu kategoriye giriyor.

Print Server Rolünün Kurulumu

Bir Windows Server’ı yazıcı sunucusu olarak kullanmadan önce Print and Document Services rolünü aktif etmeniz gerekiyor. Bunu Server Manager üzerinden yapabilirsiniz, ama PowerShell çok daha hızlı.

Install-WindowsFeature Print-Server -IncludeManagementTools

Eğer internet erişimi kısıtlı bir ortamdaysanız ve yedek bir kurulum kaynağınız varsa:

Install-WindowsFeature Print-Server -IncludeManagementTools -Source D:sourcessxs

Kurulumdan sonra sunucuyu yeniden başlatmanız gerekebilir. Kontrol etmek için:

Get-WindowsFeature Print-Server | Select-Object Name, InstallState

Yerel Yazıcı Ekleme

GUI Üzerinden Yerel Yazıcı Ekleme

Print Management konsolunu açın (printmanagement.msc). Sol panelden sunucunuzu seçin, Printers üzerine sağ tıklayın ve Add Printer deyin. Sihirbaz başlayacak.

Burada dikkat edilmesi gereken bir nokta var: “Add a new printer using an existing port” seçeneğini seçip USB001 ya da LPT1 gibi fiziksel portları seçebilirsiniz. Ama pratikte USB yazıcılar artık Windows tarafından Plug and Play ile otomatik tanınıyor. Asıl iş, sürücü yüklemesinde ve doğru sürücü versiyonunun seçilmesinde çıkıyor.

PowerShell ile Yerel Yazıcı Ekleme

Bir müşteride USB barkod yazıcısı vardı, otomatik tanınmıyordu ve sürücüyü komut satırından yüklemek zorunda kaldık. İşte o süreçte öğrendiğim komutlar:

Önce mevcut portları listeleyin:

Get-PrinterPort | Select-Object Name, Description, PortNumber

Yeni bir yerel port oluşturun (eğer gerekiyorsa):

Add-PrinterPort -Name "USB001" -PrinterHostAddress ""

Sürücüyü önce sisteme ekleyin:

Add-PrinterDriver -Name "Zebra ZP 450" -InfPath "C:DriversZebrazp450.inf"

Sonra yazıcıyı tanımlayın:

Add-Printer -Name "Barkod-Yazici-01" -DriverName "Zebra ZP 450" -PortName "USB001"

Ağ Yazıcısı Ekleme (TCP/IP Port)

Ağ yazıcıları için önce sunucuda bir TCP/IP port oluşturmanız gerekiyor. Bu port, yazıcının IP adresini ve port numarasını tanımlıyor.

TCP/IP Port Oluşturma

Add-PrinterPort -Name "IP_192.168.1.100" -PrinterHostAddress "192.168.1.100" -PortNumber 9100

Burada port numarası önemli. Çoğu ağ yazıcısı 9100 portundan RAW printing yapar. Bazı eski HP modelleri 9001 kullanır, Lexmark’ların bir kısmı farklı davranabilir. Emin değilseniz yazıcının web arayüzüne girerek kontrol edin.

Yazıcı Sürücüsü Yükleme

Sürücü kurulumu en kritik adım. Windows Server’da sürücü deposunu yönetmek için birkaç yol var.

Mevcut yüklü sürücüleri görmek için:

Get-PrinterDriver | Select-Object Name, MajorVersion, PrinterEnvironment

Sürücüyü INF dosyasından yüklemek için:

Add-PrinterDriver -Name "HP LaserJet 4250 PCL 6" -InfPath "C:DriversHPhpz4250p.inf" -PrinterEnvironment "Windows x64"

Eğer sürücü zaten Windows’un sürücü deposundaysa (in-box driver), INF yolu belirtmenize gerek yok:

Add-PrinterDriver -Name "Microsoft XPS Document Writer v4"

Yazıcıyı Tanımlama ve Paylaşıma Açma

Add-Printer -Name "Muhasebe-HP-LaserJet" `
            -DriverName "HP LaserJet 4250 PCL 6" `
            -PortName "IP_192.168.1.100" `
            -Shared `
            -ShareName "MuhasebeYazici" `
            -Location "2. Kat - Muhasebe Birimi" `
            -Comment "Siyah-beyaz lazer, A4-A3 destekli"

Paylaşım adı belirlerken Türkçe karakter kullanmayın. Özellikle Windows 7/10 istemcilerinde Türkçe karakterli paylaşım adları bağlantı sorununa yol açabiliyor.

Toplu Yazıcı Ekleme: Gerçek Dünya Senaryosu

50 şubesi olan bir firmada her şubeye iki yazıcı eklemek gerekiyordu. Tek tek GUI’den yapmak yerine CSV dosyasından okuyarak toplu kurulum yaptık. Bu yöntemi çok kişinin işine yarayacağını düşünüyorum.

Önce bir CSV dosyası hazırlayın (printers.csv):

# printers.csv örnek içeriği:
# PrinterName,IPAddress,DriverName,ShareName,Location
# Sube01-Yazici,192.168.10.5,HP Universal Printing PCL 6,Sube01Yaz,Subе 01 - Giriş

Sonra bu CSV’yi okuyarak toplu kurulum yapan script:

$printers = Import-Csv -Path "C:Scriptsprinters.csv"

foreach ($printer in $printers) {
    $portName = "IP_$($printer.IPAddress)"
    
    # Port yoksa oluştur
    if (-not (Get-PrinterPort -Name $portName -ErrorAction SilentlyContinue)) {
        Add-PrinterPort -Name $portName -PrinterHostAddress $printer.IPAddress -PortNumber 9100
        Write-Host "Port oluşturuldu: $portName" -ForegroundColor Green
    }
    
    # Yazıcıyı ekle
    try {
        Add-Printer -Name $printer.PrinterName `
                    -DriverName $printer.DriverName `
                    -PortName $portName `
                    -Shared `
                    -ShareName $printer.ShareName `
                    -Location $printer.Location
        Write-Host "Yazıcı eklendi: $($printer.PrinterName)" -ForegroundColor Green
    }
    catch {
        Write-Host "HATA - $($printer.PrinterName): $_" -ForegroundColor Red
    }
}

Bu script sayesinde 50 şubenin yazıcılarını yaklaşık 10 dakikada tanımladık. Elle yapılsaydı en az yarım gün sürerdi.

Uzak Sunucuya Yazıcı Ekleme

Bazen yazıcıyı kendi oturduğunuz sunucuya değil, uzaktaki bir print server’a eklemeniz gerekiyor. PowerShell burada da imdada yetişiyor.

# Uzak oturum açın
$session = New-PSSession -ComputerName "PRINTSERVER01" -Credential (Get-Credential)

# Uzak sunucuda komut çalıştırın
Invoke-Command -Session $session -ScriptBlock {
    Add-PrinterPort -Name "IP_10.10.5.20" -PrinterHostAddress "10.10.5.20" -PortNumber 9100
    Add-Printer -Name "HQ-Cannon-IR3300" `
                -DriverName "Canon iR3300 PCL6" `
                -PortName "IP_10.10.5.20" `
                -Shared `
                -ShareName "HQCannon"
}

Remove-PSSession $session

Bu yöntemi kullanmadan önce uzak sunucuda WinRM servisinin çalışır durumda olduğundan emin olun.

Yazıcı Sürücüsü Sorunları ve Çözümleri

Yazıcı kurulumunda en çok zaman kaybedilen konu sürücü uyumsuzluklarıdır. Birkaç sık karşılaşılan senaryo:

64-bit Sunucu, 32-bit İstemci Sorunu

Sunucunuz 64-bit olsa bile istemcilerde 32-bit Windows kullanılıyorsa ek sürücü yüklemeniz gerekiyor. Bunu yapmak için:

# Önce x86 sürücüyü depoya ekleyin
Add-PrinterDriver -Name "HP LaserJet 4250 PCL 6" `
                  -InfPath "C:DriversHPx86hpz4250p.inf" `
                  -PrinterEnvironment "Windows x32"

Ardından Print Management konsolunda yazıcıya sağ tıklayıp Manage Sharing altından Additional Drivers bölümünde x86 sürücüyü etkinleştirin.

Sürücü İmza Sorunu

Windows Server 2016 ve sonrası, imzasız sürücü yüklenmesini varsayılan olarak engeller. Eski bir yazıcı için imzasız sürücü zorunluysa (ki bunu mümkün olduğunca önermem) test modunu devreye almak yerine Group Policy üzerinden izin vermek daha kontrollü bir yol.

Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignment altında Load and unload device drivers politikasını düzenleyebilirsiniz.

Sürücü Deposunu Temizleme

Zamanla biriken eski ve kullanılmayan sürücüler bazen çakışmalara neden oluyor. Kullanılmayan sürücüleri temizlemek için:

# Kullanılmayan sürücüleri listele
$usedDrivers = (Get-Printer | Select-Object -ExpandProperty DriverName) | Sort-Object -Unique
$allDrivers = Get-PrinterDriver | Select-Object -ExpandProperty Name
$unusedDrivers = $allDrivers | Where-Object { $_ -notin $usedDrivers }

# Listeleyin önce, silmeden
$unusedDrivers | ForEach-Object { Write-Host "Kullanılmayan sürücü: $_" }

Silmeden önce mutlaka listeyi gözden geçirin. Bazen bir sürücü aktif kullanımda görünmese de başka bir yazıcı için gerekli olabilir.

Group Policy ile Yazıcı Dağıtımı

Tek tek istemcilere yazıcı bağlamak yerine Group Policy üzerinden otomatik dağıtım çok daha verimli. Bu konuya detaylı girmeyeceğim ama temel adımları belirtmek istiyorum.

Group Policy Management konsolunda yeni bir GPO oluşturun. User Configuration > Preferences > Control Panel Settings > Printers yolunu izleyin. Burada Shared Printer seçeneğiyle paylaşıma açık bir yazıcıyı belirli OU’lardaki kullanıcılara otomatik olarak atayabilirsiniz.

Bir departman değişikliğinde kullanıcıyı farklı bir OU’ya taşıdığınızda eski yazıcı otomatik kaldırılıp yenisi ekleniyor. Bu özelliği ilk kurduğumuzda IT helpdesk’e gelen “yazıcı bağlayın” taleplerinin ciddi oranda düştüğünü gördük.

Yazıcı Durumunu İzleme ve Yönetme

Kurulumdan sonra yazıcıların durumunu düzenli olarak kontrol etmek önemli. Basit bir izleme scripti:

# Tüm yazıcıların durumunu raporla
Get-Printer | Select-Object Name, PrinterStatus, JobCount, Shared, ShareName |
    Format-Table -AutoSize

# Hatalı durumdaki yazıcıları filtrele
Get-Printer | Where-Object { $_.PrinterStatus -ne "Normal" } |
    Select-Object Name, PrinterStatus |
    ForEach-Object {
        Write-Warning "Sorunlu yazıcı: $($_.Name) - Durum: $($_.PrinterStatus)"
    }

Bir yazıcıyı yeniden başlatmak ya da print spooler’ı temizlemek için:

# Spooler servisini yeniden başlat
Restart-Service Spooler

# Belirli bir yazıcının kuyruğunu temizle
$printerName = "Muhasebe-HP-LaserJet"
Get-PrintJob -PrinterName $printerName | Remove-PrintJob

Yazıcı Silme ve Temizlik

Kurumsal ortamlarda eski yazıcıların temizlenmesi de en az kurulum kadar önemli. Kümülenmiş gereksiz yazıcı tanımları hem performansı etkiliyor hem de sürücü çakışmalarına zemin hazırlıyor.

# Tek bir yazıcıyı sil
Remove-Printer -Name "Eski-HP-1020"

# Portu da sil
Remove-PrinterPort -Name "IP_192.168.1.50"

# Sürücüyü de kaldır (önce yazıcıyı silmiş olmalısınız)
Remove-PrinterDriver -Name "HP LaserJet 1020"

Sürücüyü kaldırırken “bu sürücü hala kullanımda” hatası alırsanız spooler servisini durdurmanız gerekebilir:

Stop-Service Spooler
Remove-PrinterDriver -Name "HP LaserJet 1020"
Start-Service Spooler

Güvenlik ve İzin Yönetimi

Yazıcı paylaşımlarında güvenlik ayarları sıklıkla göz ardı ediliyor. Varsayılan olarak Everyone grubuna yazdırma izni veriliyor, bu her zaman istenen bir durum değil.

Print Management konsolunda yazıcıya sağ tıklayıp Properties > Security sekmesinden izinleri düzenleyebilirsiniz. Daha kapsamlı kontrole ihtiyaç varsa PowerShell ile de yapılabilir, ama yazıcı güvenlik ayarları için WMI kullanmak gerekiyor, bu konu başlı başına bir yazı konusu.

Temel olarak şunlara dikkat edin:

  • Print izni: Normal kullanıcılar için yeterli
  • Manage Documents: Kullanıcının kendi belgelerini yönetmesi için
  • Manage Printers: Yönetici rolü için, yani sürücü güncellemesi, duraklatma gibi işlemler

Muhasebe departmanının yazıcısını sadece muhasebe grubuyla kısıtlamak, hem gizlilik açısından hem de gereksiz kullanımı önlemek açısından iyi bir pratik.

Sonuç

Windows Server’da yazıcı yönetimi, ilk bakışta basit görünse de özellikle kurumsal ölçekte düzgün yapılmadığında ciddi operasyonel yük oluşturabiliyor. Burada anlattıklarımı özetlersek:

  • Print and Document Services rolünü kurmadan başlamayın
  • Sürücü yönetimine özen gösterin, imzalı ve güncel sürücüler kullanın
  • Toplu kurulumlar için PowerShell scriptleri hazırlayın ve bunları versiyon kontrolüne alın
  • Group Policy ile yazıcı dağıtımını kullanın, bu hem zaman kazandırır hem de tutarlılık sağlar
  • Düzenli olarak kullanılmayan yazıcı ve sürücüleri temizleyin
  • Güvenlik izinlerini varsayılana bırakmayın, departman bazında kısıtlamalar uygulayın

Print spooler sorunları, sürücü uyumsuzlukları ve ağ yazıcısı bağlantı problemleri mesleğin kaçınılmaz bir parçası. Ama bu yazıda paylaştığım yaklaşımlarla bu sorunların büyük çoğunluğunu daha sistematik ve hızlı şekilde çözebilirsiniz. Her ortamın kendine özgü dinamikleri var, bu yüzden her adımı kendi altyapınıza göre uyarlamayı unutmayın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir