Imprimantes installées en VBS

Résolu
nonoken Messages postés 2 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 23 novembre 2007 - 22 nov. 2007 à 19:39
nonoken Messages postés 2 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 23 novembre 2007 - 23 nov. 2007 à 13:14
Bonjour,

voilà j'ai un script de connexion qui supprime et installe les imprimantes réseaux en fonction des groupes utilisateurs d'Active Directory dont les utilisateurs sont membres et je voudrais qu'en fonction de la passerelle par défaut il définisse telle ou telle imprimante par défaut. Le réseau est en 2003.

Voici le script:
 
If DefaultGateway [192.168.102.254] or DefaultGateway [192.168.110.254] Then
'passerelle1=192.168.102.254 et la passerelle2=192.168.110.254
    strComputer = "."
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")
    Set colInstalledPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer")
   
    For Each objPrinter in colInstalledPrinters
    On Error Resume Next

        if InStr(objPrinter.Name, "\") > 0 then
        ' wscript.echo "Will delete: " & objPrinter.Name
        WshNetwork.RemovePrinterConnection objPrinter.Name
        End If

    Next
    Set WSHNetwork = WScript.CreateObject("WScript.Network")
    Set UserName = GetObject("WinNT://nom_du_domaine.fr/" & WSHNetwork.username)

    For Each UserGroup In UserName.groups
    On Error Resume Next

'----------------------------Imprimantes passerelle1----------------------------
    Select Case UserGroup.name

        Case "PRT1"
        WshNetwork.AddWindowsPrinterConnection "\\SRVPRT\PRT1"

        Case "PRT2"
        WshNetwork.AddWindowsPrinterConnection "\\
SRVPRT\PRT2
"

       
'---------------------------Imprimantes Passerelle2----------------------------
        Case "PRT3"
        WshNetwork.AddWindowsPrinterConnection "\\SRV2PRT\PRT3"

        Case "PRT4"
        WshNetwork.AddWindowsPrinterConnection "\\
SRV2PRT\PRT4
"

      
    End Select
    Next
End If

Set WSHNetwork = WScript.CreateObject("WScript.Network")
Set UserName = GetObject("WinNT://nom_du_domaine.fr/" & WSHNetwork.username)
Dim net
Set net = CreateObject("WScript.Network")

For Each UserGroup In UserName.groups
On Error Resume Next

'-------------------------Imprimantes par defaut Passerelle1--------------------
  
If DefaultGateway = [192.168.102.254] Then

        Select Case UserGroup.name

            Case "PRT1DEF"

            net.SetDefaultPrinter "\\SRVPRT\PRT1"


            Case "PRT2DEF"

            net.SetDefaultPrinter "\\SRVPRT\PRT2"
        End select
    Else

'-------------------------Imprimantes par defaut Passerelle2-----------------------
      
If DefaultGateway = [192.168.110.254] Then

            Select Case UserGroup.name           

                       

            Case "PRT3DEF"

            net.SetDefaultPrinter "\\SRV2PRT\PRT3"

               

            Case "PRT4DEF"

            net.SetDefaultPrinter "\\SRV2PRT\PRT4"
     
            End Select
        End If
    End if
Next

Le problème est que :


Si je suis membre des groupes  PRT1, PRT1DEF,PRT3 et PRT3DEF.

- Dans le cas où je suis dans le réseau de la passerelle1, j'ai bien ma PRT1 et PRT3 qui s'installent et la PRT1 par défaut.

- Dans le cas où je suis dans le réseau de la passerelle2, j'ai bien ma
PRT1 et PRT3 qui s'installent mais la PRT3 par n'est pas par défaut.

Si j'inverse les parties rouge et verte de mon script, j'ai le résultat inverse.
C'est à dire,

- Dans le cas où je suis dans le réseau de la passerelle1, j'ai bien ma PRT1 et PRT3 qui s'installent mais la PRT1 par n'est pas par défaut.


- Dans le cas où je suis dans le réseau de la passerelle2, j'ai bien ma
PRT1 et PRT3 qui s'installent et la PRT3 par défaut.

Je voudrais savoir si quelqu'un à une idée car la je flanche.
Merci d'avance.

Nono le ptit nouveau

1 réponse

nonoken Messages postés 2 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 23 novembre 2007
23 nov. 2007 à 13:14
C'est bon,

un ami sur un autre forum m'a donné la solution.

Je n'ai pas identifié la variable DefaultGateway, c'est pour ça.

Voci le code à rajouter

Function DefaultGateway()
   strComputer = "."

   Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")
   Set colAdapters objWMIService.ExecQuery ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled True")

   For Each objAdapter in colAdapters
      If Not IsNull(objAdapter.DefaultIPGateway) Then
         For i = 0 To UBound(objAdapter.DefaultIPGateway)
            DefaultGateway = objAdapter.DefaultIPGateway(i)
         Next
      End If
   Next
End Function

A+

Nono le ptit nouveau
3
Rejoignez-nous