Forum
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 .
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
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/
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 ?
Makalenin son bölümleri ihtiyacınızı karşılayacaktır