[Déplacé .Net --> VBS] Distinguer les OS

Résolu
cs_Rode69 Messages postés 10 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 29 juillet 2009 - 24 juil. 2009 à 10:24
cs_Rode69 Messages postés 10 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 29 juillet 2009 - 27 juil. 2009 à 17:10
Bonjour,

Je suis en train de créer un petit script qui supprime des imprimantes en local port.
Ce qu'il me faudrait, c'est que tout au début du script, qu'il y ait une ligne :

Si le poste a Windows 2000 ou autre ==> Quit
Si le poste a Windows XP ==> Continuer le script

Merci beaucoup de votre aide, je sais le faire sous bat mais pas vbs :( (j'apprend à peine le vbs)

Passez une bonne journée !
Cdlt

8 réponses

cs_Rode69 Messages postés 10 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 29 juillet 2009
27 juil. 2009 à 17:10
Rebonjour,

J'ai réussi à résoudre mon problème, voici le code pour les intéressés :

Dim wshShell, strCmd, oRep, strReponse
Set wshShell = CreateObject("WScript.Shell")

strCmd = "cmd.exe /C ver"
Set oRep = wshShell.Exec(strCmd)
strReponse = Trim(oRep.StdOut.ReadAll)

If (Replace(strReponse, "Windows XP", "") = strReponse) Then
WScript.Quit 0
End if

strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
    ("Select * From Win32_Printer") 


For Each objPrinter in colInstalledPrinters
    If objPrinter.Portname = "\\serveur\imprimante" Then
    	objPrinter.Delete_
    End If


Next



Bonne soirée
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 juil. 2009 à 10:34
Salut
J'ai tapé "vbscript os version" dans mon navigateur internet favori et j'ai trouvé la solution en 12 sec !

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 juil. 2009 à 10:37
Ou encore celle-là
0
cs_Rode69 Messages postés 10 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 29 juillet 2009
24 juil. 2009 à 11:05
Merci de ta réponse.

Le code de ton 1er lien n'est pas du tout optimisé...
Le second lien a l'air nikel sauf que je n'arrive pas à le faire marcher

Voila ce que j'ai fais :

If NOT OSName = "Windows XP" Then
WScript.Quit
End If

Mais le script s'arrête là (mes imprimantes ne se suppriment pas)

Une idée?
Je te remercie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 juil. 2009 à 11:46
... à toi d'adapter quand même
t'as le test, à toi de choisir quelle condition tu appliques, non?....
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
24 juil. 2009 à 12:27
 Bonjour à tous,

Non testé de remplacer EnumPrinterConnections par RemovePrinterConnection.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" & _
    "{impersonationLevel=impersonate}!\" & strComputer & "\root\cimv2")
Set colOS = objWMIService.ExecQuery(_
    "Select * from Win32_OperatingSystem")

For Each objOS in colOS
    If InStr(objOS.Caption, "XP") Then
       Set WshNetwork = WScript.CreateObject("WScript.Network")
       Set oPrinters = WshNetwork.EnumPrinterConnections

       For i = 0 to oPrinters.Count - 1 Step 2
           WScript.Echo objOS.Caption & vbcr & _
                        "Port " & oPrinters.Item(i) & _ 
                        " = " & oPrinters.Item(i+1)
       Next
       Set WshNetwork = Nothing
       Set oPrinters = Nothing
    End if
Next

Set objWMIService = Nothing
Set colOS = Nothing




jean-marc
0
cs_Rode69 Messages postés 10 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 29 juillet 2009
24 juil. 2009 à 15:12
Merci à tous de votre aide mais depuis ce matin je suis dessus et je n'y arrive pas... (alors que je suis sur que c'est simple quand on connait la solution...comme toujours)

Je vous donne mon bout de code qui permet de supprimer une imprimante en port local (il fonctionne) :

strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
    ("Select * From Win32_Printer") 

For Each objPrinter in colInstalledPrinters

    If objPrinter.Portname = "\\serveur\imprimante" Then
    	objPrinter.Delete_
    End If



J'ai essayé toute vos manip, en vain.
Si vous pouviez m'aider...

Merci
0
cs_Rode69 Messages postés 10 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 29 juillet 2009
27 juil. 2009 à 09:38
Personne n'a une idée ?
0
Rejoignez-nous