Forum

Bildirimler
Hepsini Temizle

PowerShell ile Defualt Printer Listeleme

Görkem Karayel
(@GorkemKarayel)
Üye

Herkese Merhaba , 

 Aslında Yusuf Hocaya ulaşmaya çalıştım ancak başarısız oldum . Sorunum şu , PC'mde 2 adet yazıcı bulunmakta ve bir tanesi LPT diğeri USBPort ile bağlı . Ben USB Port ile bağlı olan yazıcıyı default olarak kullanmaktayım . aynı zamanda Defualt olarak kullandığım yazıcı paylaşıma açık durumda . Ben powershell de ;

 Get-WmiObject -ComputerName -Namespace  -Class ***| select PSComputerName,Name, Default, Shared, PortName | where {$_.Portname -match "LPT*" -or $_.Portname -match "USB*"}  | Format-Table

 ile filtrelediğim zaman defualt  olarak iki seçeneğide False olarak gözükmekte . Bu Defualt ayarını nasıl yapabilirim  ? Aynı zamanda istediğim zaman defualt printer dışındaki printerları nasıl silebilirim ? 

 

Şimdiden yardımlarınız için Teşekkür Ederim .  

 

Alıntı
Konu başlatıcı Gönderildi : 25/03/2015 16:17

Ahmet Musa KOSALI
(@ahmetmusakosali)
Üye

VB ile aşağıdaki şekilde yapabilirsin. Bunuda logon script e koyduğunda kullanıcı her logon olduğunda ayarları kontrol eder ve değişiklik varsa bunu belirlediğin işlemi yapar.

 

Dim NewPrinters(8)

Set WshNetwork = CreateObject("WScript.Network")

Set oPrinters = WshNetwork.EnumPrinterConnections

on error resume next

Set WshShell = WScript.CreateObject("WScript.Shell")

LOGONUSER=WshShell.ExpandEnvironmentStrings("%USERNAME%")

NewPrinters(1) = "yazici ismi - 1"

NewPrinters(2) = "yazici ismi - 2"

For i = 0 To oPrinters.Count - 1 Step 2

    If Left(oPrinters.Item(i + 1), 2) = "\\" Then

        PrinterPath = oPrinters.Item(i + 1)

        PrinterVar = False

        For j = 1 To UBound(NewPrinters)

            If PrinterPath = NewPrinters(j) Then

                PrinterVar = True

            End If

        Next

        If PrinterVar = False Then

            WshNetwork.RemovePrinterConnection PrinterPath, True, True

        End If

    End If

Next

For j = 1 To UBound(NewPrinters)

    PrinterVar = False

    For i = 0 To oPrinters.Count - 1 Step 2

        If Left(oPrinters.Item(i + 1), 2) = "\\" Then

            PrinterPath = oPrinters.Item(i + 1)

            If PrinterPath = NewPrinters(j) Then

                PrinterVar = True

            End If

        End If

    Next

    If PrinterVar = False Then

        WshNetwork.AddWindowsPrinterConnection NewPrinters(j)

        WshShell.LogEvent 0, "Printer is added Successfully: " & NewPrinters(j) & " user: " & LOGONUSER & " err: "  & Err.number

        If Right(NewPrinters(j), 2) = "-2" Then

            WshNetwork.SetDefaultPrinter NewPrinters(j)

            WshShell.LogEvent 0, "Printer set as default Successfully: " & NewPrinters(j) & " user: " & LOGONUSER & " err: "  & Err.number

        End If

    End If

Next

 

CevapAlıntı
Gönderildi : 08/04/2015 16:55

Ahmet Musa KOSALI
(@ahmetmusakosali)
Üye

PowerShell ile eğer yazıcı ismi sabit ve biliyorsa aşağıdaki komutla yapılabilir

(Get-WmiObject -ComputerName . -Class Win32_Printer -Filter "Name='HP LaserJet 5Si'").SetDefaultPrinter()

 

Kaynak:   https://technet.microsoft.com/en-us/library/dd347648.aspx

http://www.nextofwindows.com/how-to-set-default-printer-during-login/

 

 

 

CevapAlıntı
Gönderildi : 08/04/2015 17:04

Görkem Karayel
(@GorkemKarayel)
Üye

Hocam Selam 

 

Öncelikle bilgiler için teşekkür ederim . Ancak kullanıcının PC de tanımlı olarak tek yazıcı için tekrar bir driver kurulduğu zaman (Copy-1) olarak isim alıyor ve onu default seçtiğimiz zaman bu sefer en başa dönüyoruz . Ben şu şekilde düşündüğüm . Çıktı almak istediğim yazıcının bağlı olduğu PC en son hangi yazıcıya çıktı yollamış ? Event viewer den çekebilir miyim ?  

 

 

 

 

 

 

 

 

CevapAlıntı
Konu başlatıcı Gönderildi : 25/04/2015 16:32

Ahmet Musa KOSALI
(@ahmetmusakosali)
Üye

http://www.cozumpark.com/blogs/windows_server/archive/2014/07/20/windows-server-2012-r2-print-server-yazdirma-sunucusu-bolum-2.aspx

Makalenin son bölümleri ihtiyacınızı karşılayacaktır 

CevapAlıntı
Gönderildi : 27/04/2015 14:18

Paylaş: