Printers en netwerkschijven weergeven in vbs Vorige deel Overzicht

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Hallo,

Ik heb een paar weken terug ook een vraag gesteld over .vbs
Verwijzen naar het bedrijf in een batchbestand

Nu heb ik een welkomscherm:
Goedemorgen gebruikersnaam,
Het is vandaag maandag 9 maart 2015
Je bent ingelogd op het .. domein
De volgende schijven zijn toegevoegd:
-
-
-
De volgende printers zijn toegevoegd:
- venster 1
- venster 2
- venster 3


Nu krijg ik de volgende 2 problemen:
1. Bij de printers moet er eerst 2x op "OK" worden geklikt voordat alle printers in 1 venster staan.
2. En als ik de variable strEnumDrive gebruik bij netwerkschijven én printers krijg ik deze bij mekaar, en als ik strEnumDrive1 gebruik voor de netwerkschijven krijg ik maar 1 netwerkschijf in het venster.
Het probleem met de netwerkschijven is al verholpen door strNetDrive te gebruiken i.p.v. strEnumDrive zoals bij de printers

Ik gebruik het volgende voor de netwerkschijven en printers:

'####################SCHIJVEN#####################

Set objNetwork = Nothing
Set objShell = Nothing
Set objDrives = Nothing


Dim objNetwork, objDrives, objShell
Dim strSubst, strSubstVal, strSubstName, strEnumDrive

Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Shell.Application")
Set objDrives = objNetwork.EnumNetworkDrives

For i = 0 to objDrives.Count - 1 Step 2
strSubst = objShell.NameSpace(objDrives.Item(i) & Chr(92)).Self.Name
strSubstVal = inStr(1,strSubst, Chr(40)) - 2
strSubstName = Mid(strSubst, 1, strSubstVal)
strNetDrive = strNetDrive & "Drive Letter: " & objDrives.Item(i) & vbCrlF & _
"Drive Name: " & strSubstName & vbCrlF & "Drive Path: " & _
objDrives.Item(i+1) & vbCrLf & vbCrLf

set strEnumDrive = NetDrive

Next


'####################PRINTERS#####################
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer Where Local = FALSE")

' Bericht opbouwen
For Each objPrinter in colInstalledPrinters
strEnumDrive = strEnumDrive & "Name: " & objPrinter.Name & vbCrlF & _
"Location: " & objPrinter.Location & vbCrlF & "Default: " & _
objPrinter.Default & vbCrLf & vbCrLf

'#####################BERICHT######################
myBlankLine = " "
myMessage = strGreeting
myMessage = myMessage & strFullName
myMessage1 = "Het is vandaag "
myMessage1 = myMessage1 & myDateString1
myMessage2 = myString
myMessage3 = "Toegevoegde netwerkschijven en printers:"
myPrinters = strEnumDrive
myMessage31 = "Toegevoegde netwerkschijven:"
myNetDrives = strNetDrive

msgbox myMessage & vbNewLine & _
myBlankLine & vbNewLine & _
myMessage1 & vbNewLine & _
myBlankLine & vbNewLine & _
myMessage2 & vbNewLine & _
myBlankLine & vbNewLine & _
myMessage31 & vbNewLine & _
myBlankLine & vbNewLine & _
myNetDrives & vbNewLine & _
myMessage3 & vbNewLine & _
myBlankLine & vbNewLine & _
myPrinters & vbNewLine & _


Wat ik zelf al geprobeerd heb:
De printers en netwerkschijven in een apart scherm weergeven;
objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "cscript C:\...\printerinfo.vbs"
set myPrinter = strEmunDrive

Do Until tsAtEndOfStream

filepath = Chr(34) & "C:\...\printerinfo.vbs" & Chr(34)
Set objshell= CreateObject("WScript.Shell")
objshell.Run "wscript " & filepath, , True


Als ik 2 aparte scripten maak (printers.vbs en schijf.vbs) komen de netwerkschijven en printers wél in 1 venster te staan.

Ik hoop dat iemand mijn vraag / probleem snapt. :$

Acties:
  • 0 Henk 'm!

  • Brahiewahiewa
  • Registratie: Oktober 2001
  • Laatst online: 30-09-2022

Brahiewahiewa

boelkloedig

Zou je het hele script kunnen geven? D'r staan nu allerlei loose ends in die het moeilijk leesbaar maken.
En probeer dan ook de code-tags te gebruiken:
VBScript:
1
2
on error resume next
set objShell = nothing

QnJhaGlld2FoaWV3YQ==


Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Het hele script is wel groot, en ik heb de 'persoonlijke' namen weggehaald.
(Wijzigingen bij netwerkschijven)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
On Error Resume Next
'######################GROET######################

Dim strGreeting

Select Case True
    Case Time < #12:00:00#
        strGreeting = "Goedemorgen "
    Case Time < #18:00:00#
        strGreeting = "Goedemiddag "
    Case Time < #23:00:00#
        strGreeting = "Goedenavond "
    Case Time < #06:00:00#
    strGreeting = "Tijd om te gaan slapen "
End Select

'#################GEBRUIKERSNAAM##################

Set objSysInfo = CreateObject("ADSystemInfo")
strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
strFullName = objUser.Get("displayName")


'######################DATUM######################

Dim myDateString1
myDateString1 = FormatDateTime(Date(), 1)

'#####################DOMEIN######################

Dim myString

Set wshShell = WScript.CreateObject( "WScript.Shell" )
strUserDomain = wshShell.ExpandEnvironmentStrings( "%USERDOMAIN%" )

myString = "Je bent ingelogd op het "
myString = myString & strUserDomain
myString = myString & " domein."

'####################SCHIJVEN#####################

Set objNetwork = Nothing
Set objShell = Nothing
Set objDrives = Nothing


Dim objNetwork, objDrives, objShell
Dim strSubst, strSubstVal, strSubstName, strEnumDrive

Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Shell.Application")
Set objDrives = objNetwork.EnumNetworkDrives

For i = 0 to objDrives.Count - 1 Step 2
    strSubst = objShell.NameSpace(objDrives.Item(i) & Chr(92)).Self.Name 
    strSubstVal = inStr(1,strSubst, Chr(40)) - 2
    strSubstName = Mid(strSubst, 1, strSubstVal)
    strNetDrive = strNetDrive & "Drive Letter: " & objDrives.Item(i) & vbCrlF & _
        "Drive Name: " & strSubstName & vbCrlF & "Drive Path: " &  _
        objDrives.Item(i+1) & vbCrLf & vbCrLf

Next


'####################PRINTERS#####################
strComputer = "."   
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where Local = FALSE")

' Bericht opbouwen
For Each objPrinter in colInstalledPrinters
strEnumDrive = strEnumDrive & "Name: " & objPrinter.Name & vbCrlF & _
        "Location: " & objPrinter.Location & vbCrlF & "Default: " &  _
        objPrinter.Default & vbCrLf & vbCrLf

set strEnumDrive = Printers


'#####################BERICHT######################
myBlankLine  = " "
myMessage    = strGreeting 
myMessage    = myMessage & strFullName
myMessage1   = "Het is vandaag "
myMessage1   = myMessage1 & myDateString1
myMessage2   = myString
myMessage3   = "Toegevoegde printers:"
myPrinters   = strEnumDrive
myMessage31  = "Toegevoegde netwerkschijven:"
myNetDrives  = NetDrive
myMessage4   = "Het is ten strengste verboden om software te installeren zonder uitdrukkelijke toestemming van de afdeling ICT."
myMessage5   = "Je systeem wordt nu ingesteld."

msgbox myMessage & vbNewLine & _
    myBlankLine & vbNewLine & _
    myMessage1 & vbNewLine & _
    myBlankLine & vbNewLine & _
    myMessage2 & vbNewLine & _
    myBlankLine & vbNewLine & _
    myMessage31 & vbNewLine & _
    myNetDrives & vbNewLine & _
    myMessage3 & vbNewLine & _
    myPrinters & vbNewLine & _
    myMessage4 & vbNewLine & _
    myBlankLine & vbNewLine & _
    myMessage5, 0,"Welkom op het netwerk van ..."

Next


Question Mark: Ik heb script even in code-tags geplaatst, dat maakt het idd. iets leesbaarder. :)

[ Voor 4% gewijzigd door Question Mark op 10-03-2015 08:39 ]


Acties:
  • 0 Henk 'm!

  • Brahiewahiewa
  • Registratie: Oktober 2001
  • Laatst online: 30-09-2022

Brahiewahiewa

boelkloedig

De regel "set strEnumDrive = Printers" is onzin; die moet weg
Op de plaats van de regel zet je "next"
En de laatste regel "next" moet dan weer weg

QnJhaGlld2FoaWV3YQ==


Acties:
  • 0 Henk 'm!

  • Mirte_
  • Registratie: Juni 2014
  • Laatst online: 10-12-2020
Brahiewahiewa schreef op maandag 09 maart 2015 @ 17:15:
De regel "set strEnumDrive = Printers" is onzin; die moet weg
Op de plaats van de regel zet je "next"
En de laatste regel "next" moet dan weer weg
Dankje, nu komen de printers in 1 venster.
de regel set strEnumDrive = Printers was is vergeten weg te halen in mijn bericht
Ik had eerder al geprobeerd om next onder de printers te zetten maar toen kreeg ik een foutmelding.

Nogmaals bedankt!