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

Signaler
Messages postés
10
Date d'inscription
vendredi 29 mai 2009
Statut
Membre
Dernière intervention
29 juillet 2009
-
Messages postés
10
Date d'inscription
vendredi 29 mai 2009
Statut
Membre
Dernière intervention
29 juillet 2009
-
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

Messages postés
10
Date d'inscription
vendredi 29 mai 2009
Statut
Membre
Dernière intervention
29 juillet 2009

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
65
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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
65
Ou encore celle-là
Messages postés
10
Date d'inscription
vendredi 29 mai 2009
Statut
Membre
Dernière intervention
29 juillet 2009

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
Messages postés
13281
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
... à toi d'adapter quand même
t'as le test, à toi de choisir quelle condition tu appliques, non?....
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
25
 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
Messages postés
10
Date d'inscription
vendredi 29 mai 2009
Statut
Membre
Dernière intervention
29 juillet 2009

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
Messages postés
10
Date d'inscription
vendredi 29 mai 2009
Statut
Membre
Dernière intervention
29 juillet 2009

Personne n'a une idée ?