Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

VBS vorhandene NetzLaufwerke auslesen

Frage Entwicklung VB for Applications

Mitglied: 53111

53111 (Level 1)

06.09.2007, aktualisiert 07.09.2007, 8900 Aufrufe, 8 Kommentare

Hi

wie kann ich mit VBS auslesen welche Netzlaufwerke vorhanden sind? Auch ein Prüfung ob ein bestimmtes Laufwerk vorhanden ist wäre schon schön?

ich habe folgendes

netzobjekt.RemoveNetworkDrive "N:", true, true
netzobjekt.mapnetworkdrive "N:", "\\..."

nun ist das Problem dass wenn kein Laufwerk N: vorhanden ist eine Fehlermeldung erscheint. ich möchte deshalb zuvor prüfen lassen ob das Laufwerk vorhanden ist. Falls es da ist wäre auch gut wenn der vorhandene Pfad des Laufwerkes gespeichert oder ausgegeben wird bevor man es löscht.

gruß saibonaut
Mitglied: bastla
06.09.2007 um 12:18 Uhr
Hallo saibonaut!

Aus der MS-Doku:
01.
Set WshNetwork = WScript.CreateObject("WScript.Network") 
02.
Set oDrives = WshNetwork.EnumNetworkDrives 
03.
WScript.Echo "Zuordnungen der Netzlaufwerke:" 
04.
For i = 0 to oDrives.Count - 1 Step 2 
05.
	WScript.Echo "Laufwerk " & oDrives.Item(i) & " = " & oDrives.Item(i+1) 
06.
Next
Grüße
bastla
Bitte warten ..
Mitglied: 53111
06.09.2007 um 14:22 Uhr
wieso geht das nicht mit -1?

wenn gar kein laufwerk vorhanden ist geht das programm ja dann nicht in den else teil. gibt es auch noch einen geschickteren weg wenn man mehrere laufwerke bearbeiten und verwenden will?

For i = -1 to test.Count - 1 Step 2


If test.Item(i) = "H:" Then

netzobjekt.RemoveNetworkDrive "H:", true, true

netzobjekt.mapnetworkdrive "H:", "\\Server2\Home\"&benutzername
wscript.Echo "if"

Else

netzobjekt.mapnetworkdrive "H:", "\\Server2\Home\"&benutzername
wscript.Echo "else"

End If
Next
Bitte warten ..
Mitglied: bastla
06.09.2007 um 16:07 Uhr
Hallo saibonaut!

wieso geht das nicht mit -1?
Ich nehme an, Du beziehst Dich auf Deinen Versuch mit dem Schleifenstartwert -1; wenn ja, dann musst Du berücksichtigen, dass es kein "test.item(-1)" gibt ...

gibt es auch noch einen geschickteren weg wenn man mehrere laufwerke bearbeiten und verwenden will?
Meinst Du zum Trennen und neu Verbinden der Laufwerke? Im Prinzip könntest Du einfach den Fehler beim Trennen eines gar nicht verbundenen Laufwerks mit einem "On Error Resume Next" abfangen, also etwa
01.
On Error Resume Next 
02.
netzobjekt.RemoveNetworkDrive "H:", true, true 
03.
On Error Goto 0 'um Fehler (zB beim Verbinden) wieder angezeigt zu bekommen 
04.
netzobjekt.mapnetworkdrive "H:", "\\Server2\Home\"&benutzername
Wenn Du den Vorgang noch in ein Sub auslagerst, könnte das so aussehen:
01.
Set netzobjekt = WScript.CreateObject("WScript.Network") 
02.
Verbinde "H:", "\\Server2\Home\"&benutzername 
03.
Verbinde "O:", "\\Server1\Old" 
04.
Verbinde "S:", "\\Server2\Sonstiges" 
05.
 
06.
Sub Verbinde(Buchstabe, Pfad) 
07.
On Error Resume Next 
08.
netzobjekt.RemoveNetworkDrive Buchstabe, true, true 
09.
On Error Goto 0 
10.
netzobjekt.mapnetworkdrive Buchstabe, Pfad 
11.
End Sub
Grüße
bastla
Bitte warten ..
Mitglied: 53111
06.09.2007 um 16:24 Uhr
hab es jetzt so gelöst:
scheint zu funktionieren
01.
Dim netzobjekt, benutzername, laufwerkarray  
02.
 
03.
 
04.
set netzobjekt=wscript.createobject("wscript.network") 
05.
benutzername = netzobjekt.UserName 
06.
 
07.
 
08.
Set test = netzobjekt.EnumNetworkDrives 
09.
 
10.
laufwerkarray = Array("H:","X:","Z:") 
11.
 
12.
	 
13.
		 
14.
	For i = 0 to test.Count - 1 Step 2 
15.
 
16.
	 
17.
		For j = 0 to UBound(laufwerkarray)	 
18.
 
19.
 
20.
		 
21.
			If test.Item(i) = laufwerkarray(j) Then 
22.
 
23.
 				netzobjekt.RemoveNetworkDrive laufwerkarray(j), true, true  
24.
			 
25.
 				wscript.Echo  test.Item(i) &" "& test.Item(i+1)   & " wurde entfernt und wird neu belegt!" 
26.
		 
27.
			End If 
28.
		Next 
29.
 
30.
	Next 
31.
 
32.
 
33.
netzobjekt.mapnetworkdrive "H:", "\\Server2\Home\"&benutzername 
34.
 
35.
netzobjekt.mapnetworkdrive "X:", "\\Server2\work" 
36.
 
37.
netzobjekt.mapnetworkdrive "Z:", "\\Server2\apps"
[Edit Biber] Als Codeblock formatiert.[/Edit]
Bitte warten ..
Mitglied: bastla
06.09.2007 um 16:38 Uhr
Hallo saibonaut!

Ist zwar etwas sauberer, allerdings sind dadurch die Laufwerksbuchstaben redundant eingetragen ...

Vielleicht so:
01.
set netzobjekt=wscript.createobject("wscript.network") 
02.
benutzername = netzobjekt.UserName 
03.
set test = netzobjekt.EnumNetworkDrives 
04.
 
05.
laufwerkarray = Array( _ 
06.
	"H:", "\\Server2\Home\"&benutzername", _  
07.
	"X:", "\\Server2\work", _ 
08.
	"Z:", "\\Server2\apps") 
09.
	 
10.
For j = 0 to UBound(laufwerkarray) - 1 Step 2  
11.
	For i = 0 to test.Count - 1 Step 2 
12.
		If test.Item(i) = laufwerkarray(j) Then 
13.
			netzobjekt.RemoveNetworkDrive laufwerkarray(j), true, true 
14.
			wscript.Echo test.Item(i) &" "& test.Item(i+1) & " wurde entfernt und wird neu belegt!" 
15.
		End If 
16.
	Next 
17.
	netzobjekt.mapnetworkdrive laufwerkarray(j), laufwerkarray(j+1) 
18.
Next
Grüße
bastla
Bitte warten ..
Mitglied: 53111
07.09.2007 um 08:27 Uhr
diese idee wir du hatte ich gestern auch. habe das jetzt so verwirklicht. die änderungen werden jetzt noch protokolliert und in einer datei gespeicher.
01.
Dim netzobjekt, benutzername, laufwerkarray  
02.
 
03.
 
04.
set netzobjekt=wscript.createobject("wscript.network") 
05.
benutzername = netzobjekt.UserName 
06.
 
07.
Name = "C:\Dokumente und Einstellungen\"&benutzername&"\Desktop\Info_zu_neuen_Netzlaufwerken.txt" 
08.
 
09.
Set InfoDateiObjekt = CreateObject("Scripting.FileSystemObject") 
10.
Set InfoDatei = InfoDateiObjekt.OpenTextFile(Name, 2, True) 
11.
Set objFile = InfoDateiObjekt.GetFile(Name) 
12.
 
13.
 
14.
Set test = netzobjekt.EnumNetworkDrives 
15.
 
16.
laufwerkarray = Array(	"H:",_ 
17.
			"\\Server2\Home\"&benutzername,_ 
18.
			"X:",_ 
19.
			"\\Server2\work",_ 
20.
			"Z:",_ 
21.
			"\\Server2\apps"_ 
22.
23.
 
24.
 
25.
InfoDatei.WriteLine "Die folgenden Netzlaufwerke wurden gelöscht: " 
26.
InfoDatei.WriteLine " " 
27.
	 
28.
		 
29.
	For i = 0 to test.Count - 1 Step 2 
30.
		For j = 0 to UBound(laufwerkarray)			 
31.
			If test.Item(i) = laufwerkarray(j) Then 
32.
 
33.
				 
34.
			        InfoDatei.WriteLine test.Item(i) &" "& test.Item(i+1) 				 
35.
 
36.
 
37.
 				netzobjekt.RemoveNetworkDrive laufwerkarray(j), true, true					 
38.
			End If 
39.
		Next 
40.
	Next 
41.
 
42.
 
43.
 
44.
netzobjekt.mapnetworkdrive laufwerkarray(0), laufwerkarray(1) 
45.
 
46.
netzobjekt.mapnetworkdrive laufwerkarray(2), laufwerkarray(3) 
47.
 
48.
netzobjekt.mapnetworkdrive laufwerkarray(4), laufwerkarray(5) 
49.
	 
50.
InfoDatei.WriteLine " " 
51.
InfoDatei.WriteLine " " 
52.
InfoDatei.WriteLine "Die gelöschten Netzlaufwerke wurden mit folgen Pfaden neu verbunden: " 
53.
InfoDatei.WriteLine " " 
54.
InfoDatei.WriteLine laufwerkarray(0) &" "& laufwerkarray(1) 	 
55.
InfoDatei.WriteLine laufwerkarray(2) &" "& laufwerkarray(3) 	 
56.
InfoDatei.WriteLine laufwerkarray(4) &" "& laufwerkarray(5) 	 
57.
 
58.
InfoDatei.Close  
59.
 
werde nun mal testen ob sich das Script vom server aus ausführen lässt. habt ihr eine idee wie man unterbinden kann dass das script bei jedem login ausgeführt wird - es soll nur bei ersten login des users verwendet werden?

wie würde ich z.B.: /PERSISTENT:YES mit VBS realisieren


gruß
saibonaut
Bitte warten ..
Mitglied: 53111
07.09.2007 um 14:48 Uhr
hat jemand noch eine idee wie ich verhinder kann das das script bei jedem neuen login diese datei schreibt. ich möchte eigentlich nur beim ersten login des nutzer die datei schreiben lassen.
auch denkbar wäre das ganze script nur einmal beim ersten login des nutzers ablaufen zu lassen und die laufwerke dann /PERSISTENT:YES zu machen. wie mach ich das mit vbs?
Bitte warten ..
Mitglied: bastla
07.09.2007 um 20:23 Uhr
Hallo saibonaut!

hat jemand noch eine idee wie ich verhinder kann das das script bei jedem neuen login diese datei schreibt.
Vielleicht, indem Du vorweg überprüfst, ob sie bereits existiert?

/PERSISTENT:YES zu machen. wie mach ich das mit vbs?
01.
netzobjekt.mapnetworkdrive laufwerkarray(0), laufwerkarray(1), True
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

Entwicklung
Zählerstände über SNMP und VBS auslesen (4)

Frage von motofuzy zum Thema Entwicklung ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...