[LØST] Script for valg av skrivere.

20 innlegg i emnet

Skrevet

Hei! jeg trenger et VB Script eller noe i den duren for bruk på jobb.

Jeg jobbet med et script på skolen, der vi laget et VB Script som brukere kunne trykke på og få opp alle skrivere i nettverket og velge en skriver de ville skrive ut på i en dialog boks. men finner det ikke i gjenn, noen som har et? eller som har en veiledning for å lage et?

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Det skal ligge noen vbs-filer i system32 mappa. Sjekk der først.

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

De scriptene der er ikke det samme som jeg er ute etter.. Sorry.

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

For å traversere igjennom tilgjengelige skrivere på nettet skal følgende kode fungere:

Set WshNetwork = WScript.CreateObject("WScript.Network")

Set Drives = WshNetwork.EnumNetworkDrives

 For i = 0 to Drives.Count - 1 Step 2

  WScript.Echo Drives.Item(i), Drives.Item(i+1)

 Next

Er ikke sikker på om "Step 2" er nødvendig - eller hvorfor det i det hele tatt er med. Du får prøve med og uten.

Lykke til :thumbup:

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

ER ikke helt sånn jeg er ute etter, men et Script som Lister opp printerene i nettverket og sånn at jeg kan velge hvilke printere jeg kan skrive ut i fra,

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet (endret)

Har fått tak i et Script nå. men får en feilmelding:

Feil: Krever objekt: "WSHNetwork"

Koden min ser slik ut:

MsgTxt = vbNothing

MsgTxt = MsgTxt & vbCrLf & "Velg hvilken skriver du vil skrive ut på(Bruk Tallene)"

MsgTxt = MsgTxt & vbCrLf & "1. Fargekopimaskin Administrasjonen 1.etg"

MsgTxt = MsgTxt & vbCrLf & "2. SV/HV-Maskin 2.etg"

MsgTxt = MsgTxt & vbCrLf & "3. Printer 2.etg"

DefaultPrinter = InputBox(MsgTxt,"Printer Velger V 1.0")

Select Case DefaultPrinter

'Check for group memberships and take needed action

'In this example below, ADMIN and WORKERB are groups.

Case "1","Fargekopimaskin Administrasjonen"

WSHNetwork.SetDefaultPrinter "\\XXX23.XXXX.no\XXX-SKADM1-KOPI"

Case "2","SV/HV-Maskin 2.etg"

WSHNetwork.SetDefaultPrinter "\\XXX23.XXXX.no\XXX-SKADM2.KOPI"

Case "3","Printer 2.etg"

WSHNetwork.SetDefaultPrinter "\\XXX23.XXXX.no\XXX-SKADM2-PRINT"

Case Else WSHNetwork.SetDefaultPrinter "\\ServerName\GenericPrinterName"

End Select

Endret av mamqa
0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Her er en bat fil som kan utføre ca det samme, dvs at den kan liste opp printere i nettet(dog ikke søke de frem, men den lister fra en statisk kilde(et sted å endre)) bare å slenge det inn i oopstart til nye klienter, så får de satt opp printere og default printer.

Gjør endringer som du vil på det om du bruker det. Og du må sikkert fikse på utseende etter at det er kopiert inn her, mister tegn i formateringen ser jeg.

CMD / BAT Script code (klikk for å vise/skjule)

______________________________________________________________________________________________

_____

____________________

SetLocal EnableDelayedExpansion

@echo off

title Add Printer

mode con: cols=105 lines=48

color f9

:start

cls

echo.

echo.

echo. VELG SKRIVER A LEGGE TIL / SELECT PRINTER TO ADD

echo.

echo.

echo. Velg en skriver ved aa skrive inn nr(NR) som tilhorer skriveren og trykk enter.

echo. Vent saa til at vinduet med den skriveren er kommet frem på din skjerm for du velger flere.

echo.

echo. Choose a printer, by typing the number(NR) that belongs to the printer and press enter.

echo. Then wait to a window with the printer name emerge on your screen before you add a new printer.

echo.

echo ****************************************************************************

echo * NR Etg/Floor Skriver/Printer *

echo *--------------------------------------------------------------------------*

echo * 1. 7. Navn (printer) *

echo * 2. 7. Navnfargekopi,scanner(Colorcopier/scanner) *

echo * 3. 7. Navnfargekopi,fax/scanner)(Colorcopier/fax/scanner) *

echo * 4. 8. Navn (printer) *

echo * 5. 9. Navn (printer) *

echo * 6. 10. Navn(fargekopi,fax/scanner)(Colorcopier/fax/scanner)*

echo * 7. 11. Navn (printer) *

echo * 8. 12. Navn(fargekopi,fax/scanner)(Colorcopier/fax/scanner)*

echo * 9. 12. Navn (fargeskriver)(Colorprinter) *

echo * 10. 13. Navn (printer) *

echo * *

echo * 0. EXIT *

echo * *

echo ****************************************************************************

echo.

echo.

echo.

:input

set /p choice=Enter NR?:

if %choice% equ 0 goto exit

if %choice% equ 1 start \\servernanv.xxx.xx\printernavn &goto start

if %choice% equ 2 start \\servernanv.xxx.xx\printernavn &goto start

if %choice% equ 3 start \\servernanv.xxx.xx\printernavn &goto start

if %choice% equ 4 start \\servernanv.xxx.xx\printernavn &goto start

if %choice% equ 5 start \\servernanv.xxx.xx\printernavn &goto start

if %choice% equ 6 start \\servernanv.xxx.xx\printernavn &goto start

if %choice% equ 7 start \\servernanv.xxx.xx\printernavn &goto start

if %choice% equ 8 start \\servernanv.xxx.xx\printernavn &goto start

if %choice% equ 9 start \\servernanv.xxx.xx\printernavn &goto start

if %choice% equ 10 start \\servernanv.xxx.xx\printernavn &goto start

echo Invalid choice & echo. & pause & goto start

:exit

echo.

Set /p exit=Are you sure you want to exit? (Y/N):

if /i %exit% equ y (exit)

if /i %exit% equ yes (exit)

if /i %exit% equ n (goto start)

if /i %exit% equ no (goto start)

echo Invalid choice & goto exit

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Satte koden din i spoiler jeg for og gjøre det litt lettere og lese :)

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Satte koden din i spoiler jeg for og gjøre det litt lettere og lese :)

takker så meget :)

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Skal teste koden til tomkje å se litt på den! Takker :D

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

tomkje jeg får ikke koden din til å fungere, får bare feilmeldinger. :(

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

tomkje jeg får ikke koden din til å fungere, får bare feilmeldinger. :(

Hva meldinger får du da?

Regner med at du har lagret den som en Bat/cmd fil og ikke en tekstfil og at du har en server med printere som er delt og at den serveren er tilgjengelig via nettverket?

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Fikk den til å fungere nå, jeg som brukte VBS i stedenfor CMD/BAT

Men er det mulig å få denne i VBS?

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Fikk den til å fungere nå, jeg som brukte VBS i stedenfor CMD/BAT

Men er det mulig å få denne i VBS?

Det er det nok absolutt mulig, har ikke det selv pr dags dato, men kan ikke være så vanskelig å få til om en ønsker vil jeg tro.

Kode alla "rundll32 printui.dll,PrintUIEntry /in /q /n "\\Printerserver\printernav" er vel noe som jeg husker fra min tid med vbs.

Du for teste litt frem :)

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Skal teste litt, har ikke så mye erfaring med dette, men noen her som kan hjelpe meg å få dette til VBS tro?

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Kan ikke se mye galt i skriptet, kun en liten linje som mangler.

Dersom skriverene allerede er koblet opp(via et påloggingsskript eller annet) skulle dette virke OK.

Set WSHNetwork = CreateObject("WScript.Network")


MsgTxt = vbNothing

MsgTxt = MsgTxt & vbCrLf & "Velg hvilken skriver du vil skrive ut på(Bruk Tallene)"

MsgTxt = MsgTxt & vbCrLf & "1. Fargekopimaskin Administrasjonen 1.etg"

MsgTxt = MsgTxt & vbCrLf & "2. SV/HV-Maskin 2.etg"

MsgTxt = MsgTxt & vbCrLf & "3. Printer 2.etg"


DefaultPrinter = InputBox(MsgTxt,"Printer Velger V 1.0")



Select Case DefaultPrinter

  Case "1","Fargekopimaskin Administrasjonen"

	WSHNetwork.SetDefaultPrinter "\\ans-xxx.xx.xxx.no\RA-1323-Kop"

  Case "2","SV/HV-Maskin 2.etg"

	WSHNetwork.SetDefaultPrinter "\\ans-xxx.xx.xxx.no\KA-Br154-Kop"

  Case Else WSHNetwork.SetDefaultPrinter "\\ServerName\GenericPrinterName"

End Select
Dersom skriverene ikke allerede er koblet opp må du koble dem til før du kan sette defaultskriver. Det gjør du med WSHNetwork.AddWindowsPrinterConnection <skrivernavn>, <drivernavn>
Set WSHNetwork = CreateObject("WScript.Network")


MsgTxt = vbNothing

MsgTxt = MsgTxt & vbCrLf & "Velg hvilken skriver du vil skrive ut på(Bruk Tallene)"

MsgTxt = MsgTxt & vbCrLf & "1. Fargekopimaskin Administrasjonen 1.etg"

MsgTxt = MsgTxt & vbCrLf & "2. SV/HV-Maskin 2.etg"


DefaultPrinter = InputBox(MsgTxt,"Printer Velger V 1.0")



Select Case DefaultPrinter

  Case "1","Fargekopimaskin Administrasjonen"

	WSHNetwork.AddWindowsPrinterConnection "\\ans-xxx.xx.xxx.no\RA-1323-Kop", "Oce 3145 PCL6 GB"

	WSHNetwork.SetDefaultPrinter "\\ans-xxx.xx.xxx.no\RA-1323-Kop"

  Case "2","SV/HV-Maskin 2.etg"

	WSHNetwork.AddWindowsPrinterConnection "\\ans-xxx.xx.xxx.no\KA-Br154-Kop", "HP Mopier 320 PCL 6"

	WSHNetwork.SetDefaultPrinter "\\ans-xxx.xx.xxx.no\KA-Br154-Kop"

  Case Else WSHNetwork.SetDefaultPrinter "\\ServerName\GenericPrinterName"

End Select

Dennis G. Landsem

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Hei

Dersom du publiserer skriverne i AD, så kan du lett lage et script som henter ut alle publiserte skrivere fra AD, og lister dem. Kan fort bli mange skrivere, da...

Søk google etter vbscript published printers. Så får du mange treff. Legge evt på AD på slutten dersom du vil hente publiserte skrivere fra AD.

For å gjøre det brukervennlig og litt fint, så ville jeg kanskje også laget dette i en hta applikasjon.

Liste alle skrivere i en slags tabell, med lokasjon, server, osv og med en radioboks foran. Pluss en "print" knapp, som kobler opp skriveren via WSHNetwork, og setter den som standard.

Da kan du også style applikasjonen litt, slik at det ser pent ut.

Men det er mulig det blir å legge litt mye jobb i det ? Men dòg gøy.

PS: dennisgl: trenger ikke driver attributten, med mindre man har WIN9x, Me klienter som skal koble opp skriverne.

Ref: http://msdn.microsoft.com/en-us/library/zsdh7hkb(VS.85).aspx

Så det du trenger av kode for å koble til en nettverksskriver på en server:

set objNetwork = CreateObject("WScript.Network")


objNetwork.AddWindowsPrinterConnection \\server\printqueuename

objNetwork.setDefaultPrinter \\server\printqueuename

Men som sagt, så anbefaler jeg å se litt på lage en hta av dette...

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Takk for tipset, kakkle. Jeg var ikke klar over at du kunne utelate drivernavnet. Det åpner for en forenkling av skrivertildelingsskriptet vårt.

Siden skripting er gøy, så kommer et par mulig løsninger til...

Denne varianten antar at skrivere kobles opp via et separat skrivertildelingsskript. Det forutsetter også at Location-attributten til skriverobjektet er konfigurert.

En ulempe med skriptet som det står er at dersom det legges til en skriver til så må det endres. Men om du ser på skriveroversikten i Windows så har jo Windows allerede all denne informasjonen. Ville det ikke vært bedre å la programmet selv generere listen over skrivere brukeren kan velge mellom?

Denne informasjonen er lagret i WMI, nærmere bestemt i Win32_Printer-klassen. Der finnes det et innslag for hver skriver. Skriptet under kobler til WMI og henter ut to attributter for hver skriver, Name og Location, og presenterer det i en liste.

Set WSHNetwork = CreateObject("WScript.Network")


Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

Set colInstalledPrinters = objWMIService.ExecQuery ("SELECT Name, Location FROM Win32_Printer")


i = 1


MsgTxt = vbNothing

MsgTxt = MsgTxt & vbCrLf & "Velg hvilken skriver du vil skrive ut på(Bruk Tallene)"


For Each objPrinter in colInstalledPrinters

  ReDim Preserve arrDrivernavn(i)

  ReDim Preserve arrNavn(i)

  arrNavn(i) = objPrinter.Name

  MsgTxt = MsgTxt & vbCrlf & i & ". " & objPrinter.Location

  i = i + 1

Next


DefaultPrinter = InputBox(MsgTxt,"Printer Velger V 1.0")


WSHNetwork.SetDefaultPrinter arrNavn(DefaultPrinter)
Denne varianten henter opplysninger om alle tilgjengelige skriver direkte fra Active Directory og lar brukeren velge mellom disse. Forutsetter også at Location-attributten er satt til en fornuftig tekst. Merk at siden prompten i en InputBox er begrenset til 1024 tegn, så kan det medføre at ikke alle listes dersom du har mange skrivere og/eller lange location-felt.
On Error Resume Next


Set WSHNetwork = CreateObject("WScript.Network")


Const ADS_SCOPE_SUBTREE = 2

Const AD_OPEN_STATIC = 3

Const AD_LOCK_OPTIMISTIC = 3


'Finn navn på Active Directory domenet

set rootDSE = GetObject("LDAP://RootDSE")

AD = rootDSE.Get("defaultNamingContext")


'Opprett en forbindelse til Active Directory

set objConnection = CreateObject("ADODB.Connection")

set objCommand = CreateObject("ADODB.Command")

objConnection.Provider = "ADsDSOObject"

objConnection.Open "Active Directory Provider"

set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000

objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE


'Finn alle skrivere i AD

objCommand.CommandText = "SELECT printerName, serverName, driverName, location FROM 'LDAP://" & AD & "' WHERE objectClass = 'printQueue'"

set objRecordSet = objCommand.Execute


i = 1


MsgTxt = vbNothing

MsgTxt = MsgTxt & vbCrLf & "Velg hvilken skriver du vil skrive ut på(Bruk Tallene)"


objRecordSet.MoveFirst

Do Until objRecordSet.EOF

  ReDim Preserve arrDrivernavn(i)

  ReDim Preserve arrNavn(i)

  arrNavn(i) = "\\" & objRecordSet.Fields("serverName").Value & "\" & objRecordSet.Fields("printerName").Value

  arrDrivernavn(i) = objRecordSet.Fields("driverName").Value

  MsgTxt = MsgTxt & vbCrlf & i & ". " & objRecordSet.Fields("location").Value

  i = i + 1

  objRecordSet.MoveNext

Loop


DefaultPrinter = InputBox(MsgTxt,"Printer Velger V 1.0")


WSHNetwork.AddWindowsPrinterConnection arrNavn(DefaultPrinter), arrDrivernavn(DefaultPrinter)

WSHNetwork.SetDefaultPrinter arrNavn(DefaultPrinter)

Som kakkle sier, så er dette en jobb som passer godt for en hta. For et eksempel på en hta for skrivertildeling kan du se her.

Dennis G. Landsem

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Hei, går det ann å bruke dette for å legge til printere som er koblet til en ruter med printerport. Evt. printer som er koblet i ruter som er koblet i hovedruter på nettet?

Dette uten å legge til driver? Tviler på det, men det hadde vært perfekt om det kunne fungert.

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Skrevet

Holder på å lage et printerscript selv, og denne tråden var absolutt til hjelp! :D Jeg bruker komandoen: start \\servernanv\printernavn &goto start

Vet noen hva jeg må legge til komandoen for at den skriveren skal bli standardskriver? Hvis ikke så fortsetter Microsoft XPS Document Writer å være standard, og da har mange brukere kommet like langt som de var fra før.. :thumbd:

0

Del dette innlegget


Lenke til innlegg
Del på andre sider

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!


Start en konto

Logg inn

Har du allerede en konto? Logg inn her.


Logg inn nå

  • Hvem er aktive   0 medlemmer

    Ingen innloggede medlemmer aktive