Imprimante reseau et profils - Windows & Software
Marsh Posté le 31-01-2006 à 11:47:37
regarde sur ton serveur (2000 ou XP) dans l'AD, tu dois avoir quelque chose à activer/ou désactiver... Sinon dans les stratégies de groupes?
Marsh Posté le 31-01-2006 à 12:01:21
Hello,
T'es en réseau ou pas ? Si oui, t'as AD ou pas ? Détaille plus...
Si oui et oui, un batch dans le netlogon pour tous les usrers genre :
start \\server\imprimante
Sinon, si c'est de façon pnctuelle, tu l'installe comme une imprimante locale sur le poste en utilisant un port TCP/IP qu'il te faut créer (sans ça l'imprimante ne sera installée que sur le profil courant).
@+ !
Marsh Posté le 31-01-2006 à 12:44:15
Merci à vous,
en fait, mon imprimante est listée dans AD et elle est installée sur un serveur.
Donc sur mon poste client j'ai fait installer une imprimante réseau.
D'ailleurs quand je fais "rechercher un imprimante dans l'annuaire", je tape son nom, j'ai ensuite une liste, je la sélectionne mais j'ai ensuite une erreur : Impossible d'ajouter la connexion à l'imprimante. Vous avez entré un nom incorrect ou l'imprimante n'est pas connecté...". Donc je reviens en arrière, je choisi "Connexion à une imprimante..." et je tape \\monserveur\monimprimante et la ca passe.
Une fois installée, je teste et ca fonctionne bien. Mais le truc c'est que lorsque je me connecte avec un autre compte, mon imprimante n'apparait plus dans la liste des imprimantes (j'ai les autres qui elles sont en local).
J'aimerais bien ne pas avoir à passer par un script et cette imprimante doit être en reseau, mais alors existe il une solution pour avoir automatiquement une imprimante reseau dans tous les profils?
P.S. Les postes clients sont en XP PRO, et le serveur en 2003
Merci.
Marsh Posté le 31-01-2006 à 12:56:39
the_silencer a écrit : |
Ca c'est normal...
Quand tu montes une imprimante réseau, elle est montée dans un profil. En tant qu'administrateur, tu dois juste t'assurer que le driver de l'imprimante est installé sur le PC. Après, c'est à l'utilisateur de s'ajouter l'imprimante réseau dans sa session. Ou alors tu peux le faire avec des scripts si tu veux.
Marsh Posté le 31-01-2006 à 13:07:28
Merci pour ta réponse Wolfman,
d'accord, je suis obliger de passer par un script.
Par contre est-ce que je peux créer ce script pour qu'il soit exécuté au demarage de l'ordinateur et non pas à l'ouverture de session? Si oui comment?
D'autre part, c'est une commande du type "start \\server\imprimante" c'est bien ca?
Merci d'avance.
Marsh Posté le 31-01-2006 à 13:12:52
Non. Tu n'as pas compris ce que je t'ai dit : une imprimante réseau ne remonte pas au niveau ordinateur. Elle remonte au niveau utilisateur. Ou alors, il faut que tu paramètres ton imprimante comme une imprimante locale. Et dans ce cas, ton serveur d'impression ne sert plus à rien vu que tes utilisateurs attaqueront directement l'imprimante.
Il faut donc que tu fasses un script d'ouverture de session. Pour les commandes :
http://www.robvanderwoude.com/2kprintcontrol.html
Marsh Posté le 31-01-2006 à 13:20:11
Wolfman a écrit : Non. Tu n'as pas compris ce que je t'ai dit : une imprimante réseau ne remonte pas au niveau ordinateur. Elle remonte au niveau utilisateur. Ou alors, il faut que tu paramètres ton imprimante comme une imprimante locale. Et dans ce cas, ton serveur d'impression ne sert plus à rien vu que tes utilisateurs attaqueront directement l'imprimante. |
Ben c'est exactement ce que j'ai dit
Marsh Posté le 31-01-2006 à 13:36:27
Ou alors tu fais comme moi et tu attends la release 2 de windows 2003 server.
http://www.laboratoire-microsoft.o [...] gement-R2/
Jamais compris pourquoi ca n'existait pas avant ce truc ...
Marsh Posté le 31-01-2006 à 13:48:14
En effet, je savais pas qu'une imprimante réseau été liée à l'utilisateur
Mais je préfère la laisser en réseau pour une raison d'audit. (A moins qu'il y ait une solution pour centraliser les logs d'impression )
En fait ca devient compliquer pour moi :
On est dans un établissement scolaire, et jusqu'a présent une personne peut imprimer uniquement dans la salle ou il se trouve.
(On a un type d'image Ghost de station par classe et les imprimantes sont en local).
Donc avec une solution "Imprimante Reseau" comment garder ce principe? Est-ce qu'on est obliger d'avoir toutes les imprimantes en permanence?
En tout cas vos réponses me sont d'une aide précieuse. Merci
Marsh Posté le 31-01-2006 à 13:50:24
jkley a écrit : Ou alors tu fais comme moi et tu attends la release 2 de windows 2003 server. |
Mais comment que c'est bien tout ça !!!!!!!! Ça c'est de l'info utile, merci !
Marsh Posté le 31-01-2006 à 13:51:05
Pour cela, il faut faire un script d'ouverture de session. Si tu fais bien ton script, tu dois être à même de remonter l'imprimante en question uniquement sur certains postes (en vérifiant le nom du PC dans le script par exemple)
Marsh Posté le 31-01-2006 à 13:54:39
jkley a écrit : Ou alors tu fais comme moi et tu attends la release 2 de windows 2003 server. |
Excellent, merci pour l'info!!
Marsh Posté le 01-02-2006 à 13:21:16
Wolfman a écrit : Pour cela, il faut faire un script d'ouverture de session. Si tu fais bien ton script, tu dois être à même de remonter l'imprimante en question uniquement sur certains postes (en vérifiant le nom du PC dans le script par exemple) |
Merci Wolfman,
J'essaie de faire un script alors
...mais j'ai un peu de mal, j'ai créé un thread dans programmation :
http://forum.hardware.fr/hardwaref [...] 4088-1.htm
Marsh Posté le 01-02-2006 à 16:12:34
Qu'est-ce que tu veux faire exactement avec ce script ? Allouer à tel ou tel utilisateur telle ou telle imprimante en fonction de son appartenance a tel ou tel groupe dans Active Directory ?
Si oui, jette un coup d'oeil sur ce script VBS.
' Customer :
' Filename : logon.vbs
' Author : Cédric Rathgeb
' Date : 2005-06-20
' Version : 2.1.3
' Copyright : Public Domain
' Warranty : None
'
On Error Resume Next
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
BS = Chr(92) ' Backslash
DBS = BS & BS ' Double Backslash
Set wshNetwork = WScript.CreateObject("WScript.Network" )
Set wshShell = WScript.CreateObject("WScript.Shell" )
Set wshSysEnv = wshShell.Environment("SYSTEM" )
sUser = LCase(wshShell.ExpandEnvironmentStrings("%USERNAME%" ))
sComputer = LCase(wshShell.ExpandEnvironmentStrings("%COMPUTERNAME%" ))
sServer = "monserveur1"
sLDAPPath = "LDAP://dc=domain,dc=local"
sGroup = GetPrimaryGroup(sUser, sLDAPPath)
Select Case LCase(sGroup)
Case "juridique", "marketing", "secrétariat général"
sGroupUser = "état major" & BS & sGroup
sGroup = "état major"
Case "cave", "divers", "services aux locataires", "valeurs"
sGroupUser = "divers" & BS & sGroup
sGroup = "divers"
Case Else
sGroupUser = sGroup
End Select
' The pairs are "drive" and "share"
aryShares = Array(Array("T:", DBS & sServer & BS & "ClientApps" ), _
Array("U:", DBS & sServer & BS & "utilisateurs$" & BS & sGroupUser & BS & sUser), _
Array("V:", DBS & sServer & BS & "groupes$" & BS & sGroup & BS & "@commun" ), _
Array("W:", DBS & sServer & BS & "groupes$" ), _
Array("X:", DBS & sServer & BS & "commun$" ))
' The pairs are "printers" and "default printer for computers"
aryPrinters = Array(Array(DBS & sServer & BS & "comptabilite_hp_laserjet_color_4600n", "apicella;laureau" ), _
Array(DBS & sServer & BS & "comptabilite_hp_laserjet_5", "andre" ), _
Array(DBS & sServer & BS & "couloir_hp_laserjet_4050n", "bchatelain;ecuyer;reception1;reserve;schmid" ), _
Array(DBS & sServer & BS & "couloir_hp_laserjet_5si", "" ), _
Array(DBS & sServer & BS & "couloir_oki_9200c", "" ), _
Array(DBS & "golay" & BS & "quai_hp_psc_2210", "" ), _
Array(DBS & "magasin" & BS & "quai_hp_laserjet_3015", "magasin", "" ), _
Array(DBS & "treand" & BS & "quai_hp_laserjet_1012", "treand;lacotte", "" ), _
Array(DBS & "arianne" & BS & "etatmajor_brother_hl_1230", "arianne;may", "" ), _
Array(DBS & "benoist" & BS & "valeur_hp_980cxi", "benoist;flilipone" ))
' Search account in Active Directory
' Return AD distinguished name or an empty string if not found
Function GetADDistinguishedName(sAccount, sADPath)
Set oConnection = CreateObject("ADODB.Connection" )
oConnection.Open "Provider=ADsDSOObject;"
Set oCommand = CreateObject("ADODB.Command" )
oCommand.ActiveConnection = oConnection
oCommand.CommandText = "<" & sADPath & ">;(&(objectCategory=User)(samAccountName=" & sAccount & " ));samAccountName,distinguishedName;subtree"
Set oRecordSet = oCommand.Execute
If oRecordset.RecordCount = 0 Then
' Not found !
GetADDistinguishedName = ""
Else
GetADDistinguishedName = oRecordset.Fields("distinguishedName" )
End If
oConnection.Close
End Function
' Get groups a user belongs to
' Return an array or empty
Function GetADGroupsUserBelongsTo(sAccount, sADPath)
Set oUser = GetObject("LDAP://" & GetADDistinguishedName(sAccount, sADPath))
aryMemberOf = oUser.GetEx("memberOf" )
If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
' Not Fount !
GetADGroupsUserBelongsTo = Array()
Else
GetADGroupsUserBelongsTo = aryMemberOf
End If
End Function
' Get primary group for this user
' Return a string with groupname
' an empty string if not found
Function GetPrimaryGroup(sAccount, sADPath)
Set oUser = GetObject("LDAP://" & GetADDistinguishedName(sAccount, sADPath))
iPrimaryGroupID = oUser.Get("primaryGroupID" )
If Not(Err.Number = E_ADS_PROPERTY_NOT_FOUND) Then
Set oConnection = CreateObject("ADODB.Connection" )
oConnection.Open "Provider=ADsDSOObject;"
Set oCommand = CreateObject("ADODB.Command" )
oCommand.ActiveConnection = oConnection
oCommand.CommandText = "<" & sADPath & ">;(objectCategory=Group);distinguishedName,primaryGroupToken;subtree"
Set oRecordSet = oCommand.Execute
Do Until oRecordset.EOF
If oRecordset.Fields("primaryGroupToken" ) = iPrimaryGroupID Then
sGroup = oRecordset.Fields("distinguishedName" )
End If
oRecordset.MoveNext
Loop
sGroup = Left(sGroup, InStr(sGroup, "," ) - 1)
GetPrimaryGroup = sGroup
oConnection.Close
Else
GetPrimaryGroup = ""
End If
End Function
' Disconnects all drives
Sub DisconnectDrives()
' Connect drives
Set colDrives = wshNetwork.EnumNetworkDrives
For i = 0 To colDrives.Count - 1 Step 2
wshNetwork.RemoveNetworkDrive colDrives(i)
Next
End Sub
' Map drive
Sub MapDrive(sDrive, sShare)
wshNetwork.MapNetworkDrive sDrive, sShare
End Sub
' Disconnect all printers
Sub DisconnectPrinters()
Set colPrinters = wshNetwork.EnumPrinterConnections
For i = 0 To colPrinters.Count - 1 Step 2
wshNetwork.RemovePrinterConnection colPrinters(i)
Next
End Sub
' Map printer
Sub MapPrinter(sPrinter)
wshNetwork.AddWindowsPrinterConnection sPrinter
End Sub
' Set Default Printer
Sub SetDefaultPrinter(sPrinter)
wshNetwork.SetDefaultPrinter sPrinter
End Sub
' Remove previous connections
DisconnectDrives
DisconnectPrinters
' Connect shares to local drives
For i = LBound(aryShares) to UBound(aryShares)
aryAux = aryShares(i)
MapDrive aryAux(0), aryAux(1)
Next
' Connect printers
For i = LBound(aryPrinters) to UBound(aryPrinters)
aryAux = aryPrinters(i)
MapPrinter aryAux(0)
aryComputers = Split(aryAux(1), ";" )
For j = LBound(aryComputers) to UBound(aryComputers)
If sComputer = aryComputers(j) Then
SetDefaultPrinter(aryAux(0))
End If
Next
Next
' Copy Icons on User's Desktop
Set oFSO = CreateObject("Scripting.FileSystemObject" )
sSource = DBS & "monserveur1" & BS & "ClientApps" & BS & "icons" & BS & "*.*"
sDestination = "C:" & BS & "documents and settings" & BS & sUser & BS & "bureau"
oFSO.CopyFile sSource, sDestination, True
Set oFSO = Nothing
' Add default paths keys for Word and Excel XP & 2003
wshShell.Run("regedit /s word_excel_paths.reg" )
' Delete objects
Set wshNetwork = Nothing
Set wshShell = Nothing
Set wshSysEnv = Nothing
Voilà, @+ !
Marsh Posté le 31-01-2006 à 11:42:33
Bonjour tout le monde,
J'ai installé une imprimante réseau sur un poste client avec le compte administrateur, mais le problème c'est que celle ci n'apparait pas dans les autres comptes.
Comment faire pour que cette imprimante apparaisse automatiquement dans tous les profils?
Merci d'avance.
Message édité par the_silencer le 31-01-2006 à 11:47:08