none
Script stampanti per connessione da sistema 32bit e 64bit RRS feed

  • Domanda

  • Ho un problema nel capire come impostare la connessione automatica stampanti su utenti di dominio: ho impostato degli script a livello di dominio (windows 2000), ora ho introdotto in azienda dei sistemi windows7 64bit e devo utilizzare le stampanti esistenti (esempio hp 4250).

    Ho un printer server win2000 32bit con la stampante condivisa che l'utente usa oggi (\\serverA\hp4250).

    Ho anche un server membro win2008 R2 64bit sul quale ci ho installato e condiviso la 4250 con i suoi driver a 64bit.(\\serverB\hp4250)

    Dato che potrebbe essere che l'utente si logga sulla sua vecchia postazione vista32bit come faccio da script a capire se si connette sulla postazione 32bit o sulla postazione 64 per connetterci le stampanti corrette?

    Come potrei risolvere altrimenti?

    Grazie mille

     

    --

    Jett


    • Modificato Molock giovedì 15 dicembre 2011 12:34
    giovedì 15 dicembre 2011 12:34

Risposte

  • Ciao,

    la risposta al tuo problema è logonscript.

    ecco di seguito:

    ' VBSCRIPT PER MAPPARE STAMPANTI DI RETE CHE VENGONO PASSATE COME PARAMETRO (se con ;1 finale come predef, se senza o con ;0 o altro, non come predefinita)
    
    Const ForReading = 1
    Const ForWriting = 2
    Const dbgmode = FALSE
    
    'Creo gli oggetti
    Set objFSO = createObject("Scripting.FilesystemObject")
    Set oShell = CreateObject("Wscript.Shell")
    Set objNetwork = CreateObject("WScript.Network")
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set colInstalledPrinters =  objWMIService.ExecQuery _
        ("Select * from Win32_Printer Where Network = TRUE")
    
    	
    
    strLine = Wscript.Arguments.Item(0)
    
    strArr=split(strLine, ";")
    strPrinterName=strArr(0)
    strIfDefault=strArr(1)
    
    arrNames = Split(strPrinterName, "\")
    intIndex = Ubound(arrNames)
    
    strPrinterCaption = arrNames(intIndex)
    'imposto la variabile ESEGUIRE a TRUE, prima dei controlli
    ESEGUIRE = TRUE
    
    'controllo se la stampante non sia già mappata.
    For Each objPrinter in colInstalledPrinters
    	
    	'se esiste una stampante con lo stesso nome, imposto la variabile ESEGUIRE a FALSE
    	if LCase(objPrinter.Caption) = LCase(strPrinterName) Then
    		ESEGUIRE = FALSE
    	end if
    	
    	'DEBUG MODE
    	if dbgmode = TRUE Then
    		Wscript.echo "objPrinter.Caption: " & objPrinter.Caption & chr(13)
    		Wscript.echo "strPrinterCaption: " & strPrinterCaption & chr(13)
    		Wscript.echo "strPrinterName: " & strPrinterName & chr(13)
    		Wscript.echo "ESEGUIRE: " & ESEGUIRE & chr(13)
    	End If
    	
    Next
    
    'SOLO SE LA VARIABILE ESEGUIRE E' TRUE
    if ESEGUIRE = TRUE Then
    'aggiungo la stampante
    objNetwork.AddWindowsPrinterConnection strPrinterName
    
    'aspetto 1 secondo
    Wscript.sleep(2000)
    
    If strIfDefault = "1" Then
    ' Se alla fine della riga c'è 1, la imposto come stampante di default.
    objNetwork.setDefaultPrinter strPrinterName
    End If
    
    End If 'fine dell'If sulla variabile ESEGUIRE
    

    Io uso questo script senza problemi sia che l'utente sia admin locale che no (infatti mappare una stampante da un server di stampa è un'operazione a cui sottintendono i permessi per quella share, più che i permessi dell'utente).
    Ovviamente utilizzo i filtri sulle policy / il linkage nelle OU per definire il set di utenti che devono installare ciascuna stampante.

    Mi da alcuni problemi su Windows 7, mi chiede di digitare le pw di un amministratore locale, quando mappa la stampante.

    Per mappare una stampante, quindi, metti la chiamata a questo vbscript (che hai prontamente posto nella share netlogon) in un batch come segue.

    cscript \\tuodominio.local\netlogon\Printers\mappaprinter.vbs \\<PRINTER_SERVER>\<SHARE_STAMPANTE>;<seDefaultPrinter>

    sostituendo, ovviamente:

    • tuodominio.local -> con il nome del tuo dominio.
    • <Printer_server> -> con il nome del server stampanti
    • <SHARE_STAMPANTE> -> con il nome della condivisione della stampante che vuoi mappare.
    • <seDefaultPrinter> -> con 1 se la vuoi rendere predefinita, 0 se non la vuoi predefinita.

     

    ... penso che ne farò un approfondimento sul mio blog

     

     


    Diego Castelli - MCSA 2003, MCP ISA 2004, MCTS Forefront. ITA: Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
    • Contrassegnato come risposta Anca Popa mercoledì 21 dicembre 2011 13:20
    lunedì 19 dicembre 2011 15:44
  • perchè non installi il ruolo di print server sul win2k8 R2, installi su quello i driver delle stampanti sia a 32 si a 64 bit, e non fai il deploy delle stampanti mediante group policies ?

    ref: http://www.petri.co.il/deploying-printers-using-group-policy-windows-2008.htm

    ciao.


    Edoardo Benussi
    Microsoft MVP - Management Infrastructure
    edo[at]mvps[dot]org
    giovedì 15 dicembre 2011 13:50
    Moderatore

Tutte le risposte

  • perchè non installi il ruolo di print server sul win2k8 R2, installi su quello i driver delle stampanti sia a 32 si a 64 bit, e non fai il deploy delle stampanti mediante group policies ?

    ref: http://www.petri.co.il/deploying-printers-using-group-policy-windows-2008.htm

    ciao.


    Edoardo Benussi
    Microsoft MVP - Management Infrastructure
    edo[at]mvps[dot]org
    giovedì 15 dicembre 2011 13:50
    Moderatore
  • Edoardo ha ragione, quando il server è a 64 bit ed aggiungi anche i drivers aggiuntivi a 32, la selezione del driver appropriato è automatica.

     

    Ciao!


    Diego Castelli - MCSA 2003, MCP ISA 2004, MCTS Forefront. ITA: Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
    venerdì 16 dicembre 2011 11:07
  • Grazie delle info, in effetti ho visto sul 2008 la possibilità di rendere disponibili i driver per i 32bit.

    Avrei una domanda che non ho ancora avuto tempo di approfondire: ma che differenza c'è (se c'è) sul server 2008 tra installare una stampante e successivamente condividerla oppure attivare il rouolo di printer server? Migliori performance? migliori configurazioni?

    La distribuzione con le GPO non so se posso farla perche il mio è un dominio 2000, il server 2008 è solo un server membro, e poi ho quasi tutti client XP e mi sembra di ricordare che debba aggiornare il gestore delle policy sui vecchi client per recepire le GPO 2008...

    --

    Jett

    venerdì 16 dicembre 2011 14:30
  • usare il ruolo di print server ti fornisce maggiori possibilità di configurazione.

    ciao.


    Edoardo Benussi
    Microsoft MVP - Management Infrastructure
    edo[at]mvps[dot]org
    lunedì 19 dicembre 2011 09:19
    Moderatore
  • Ciao,

    la risposta al tuo problema è logonscript.

    ecco di seguito:

    ' VBSCRIPT PER MAPPARE STAMPANTI DI RETE CHE VENGONO PASSATE COME PARAMETRO (se con ;1 finale come predef, se senza o con ;0 o altro, non come predefinita)
    
    Const ForReading = 1
    Const ForWriting = 2
    Const dbgmode = FALSE
    
    'Creo gli oggetti
    Set objFSO = createObject("Scripting.FilesystemObject")
    Set oShell = CreateObject("Wscript.Shell")
    Set objNetwork = CreateObject("WScript.Network")
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set colInstalledPrinters =  objWMIService.ExecQuery _
        ("Select * from Win32_Printer Where Network = TRUE")
    
    	
    
    strLine = Wscript.Arguments.Item(0)
    
    strArr=split(strLine, ";")
    strPrinterName=strArr(0)
    strIfDefault=strArr(1)
    
    arrNames = Split(strPrinterName, "\")
    intIndex = Ubound(arrNames)
    
    strPrinterCaption = arrNames(intIndex)
    'imposto la variabile ESEGUIRE a TRUE, prima dei controlli
    ESEGUIRE = TRUE
    
    'controllo se la stampante non sia già mappata.
    For Each objPrinter in colInstalledPrinters
    	
    	'se esiste una stampante con lo stesso nome, imposto la variabile ESEGUIRE a FALSE
    	if LCase(objPrinter.Caption) = LCase(strPrinterName) Then
    		ESEGUIRE = FALSE
    	end if
    	
    	'DEBUG MODE
    	if dbgmode = TRUE Then
    		Wscript.echo "objPrinter.Caption: " & objPrinter.Caption & chr(13)
    		Wscript.echo "strPrinterCaption: " & strPrinterCaption & chr(13)
    		Wscript.echo "strPrinterName: " & strPrinterName & chr(13)
    		Wscript.echo "ESEGUIRE: " & ESEGUIRE & chr(13)
    	End If
    	
    Next
    
    'SOLO SE LA VARIABILE ESEGUIRE E' TRUE
    if ESEGUIRE = TRUE Then
    'aggiungo la stampante
    objNetwork.AddWindowsPrinterConnection strPrinterName
    
    'aspetto 1 secondo
    Wscript.sleep(2000)
    
    If strIfDefault = "1" Then
    ' Se alla fine della riga c'è 1, la imposto come stampante di default.
    objNetwork.setDefaultPrinter strPrinterName
    End If
    
    End If 'fine dell'If sulla variabile ESEGUIRE
    

    Io uso questo script senza problemi sia che l'utente sia admin locale che no (infatti mappare una stampante da un server di stampa è un'operazione a cui sottintendono i permessi per quella share, più che i permessi dell'utente).
    Ovviamente utilizzo i filtri sulle policy / il linkage nelle OU per definire il set di utenti che devono installare ciascuna stampante.

    Mi da alcuni problemi su Windows 7, mi chiede di digitare le pw di un amministratore locale, quando mappa la stampante.

    Per mappare una stampante, quindi, metti la chiamata a questo vbscript (che hai prontamente posto nella share netlogon) in un batch come segue.

    cscript \\tuodominio.local\netlogon\Printers\mappaprinter.vbs \\<PRINTER_SERVER>\<SHARE_STAMPANTE>;<seDefaultPrinter>

    sostituendo, ovviamente:

    • tuodominio.local -> con il nome del tuo dominio.
    • <Printer_server> -> con il nome del server stampanti
    • <SHARE_STAMPANTE> -> con il nome della condivisione della stampante che vuoi mappare.
    • <seDefaultPrinter> -> con 1 se la vuoi rendere predefinita, 0 se non la vuoi predefinita.

     

    ... penso che ne farò un approfondimento sul mio blog

     

     


    Diego Castelli - MCSA 2003, MCP ISA 2004, MCTS Forefront. ITA: Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
    • Contrassegnato come risposta Anca Popa mercoledì 21 dicembre 2011 13:20
    lunedì 19 dicembre 2011 15:44
  • La distribuzione con le GPO non so se posso farla perche il mio è un dominio 2000, il server 2008 è solo un server membro, e poi ho quasi tutti client XP e mi sembra di ricordare che debba aggiornare il gestore delle policy sui vecchi client per recepire le GPO 2008...

     


    col 2008 solo server membro non lo puoi fare ma se il win2k8 diventa dc, anche se il dominio è un 2000 e non potrà diventare un 2008 nativo, lo schema di activ directory vrrà adeguato ugualmente e potrai fare il deploy mediante le caratteristiche del ruolo print server su win2k8.
    Edoardo Benussi
    Microsoft MVP - Management Infrastructure
    edo[at]mvps[dot]org
    martedì 20 dicembre 2011 08:25
    Moderatore
  • ciao, grazie delle risposte, finalmente ho avuto il tempo di lavorare su questa parte, ma ho un dubbio:

    Stavo preparando il server 2008 per distribuire driver a 32bit, ma quando metti il flag su x86 nell'apposita finestra, ti chiede "install print driver (x86 processor)" puntando su un percorso. che driver devo scaricare dal sito HP per poi darli in pasto a questa procedura?

    Ho scaricato i win2008 64 ma non mi sembra siano quelli, penso di dover scaricare dei 32... cosa prendo quelli per win2008 32?

    Grazie

     

    venerdì 13 gennaio 2012 15:32
  • esattamente, prendi i driver a 32 bit, li puoi prendere anche dal dvd di supportoo della stampante.
    Edoardo Benussi
    Microsoft MVP - Management Infrastructure
    edo[at]mvps[dot]org
    sabato 14 gennaio 2012 07:30
    Moderatore