Top-Themen

Aktuelle Themen (A bis Z)

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, 9394 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 ..
Ähnliche Inhalte
VB for Applications
VBS Ordner erstellen - wenn nicht vorhanden!
gelöst Frage von freshman2017VB for Applications1 Kommentar

Hallo, ich würde gerne einen Ordner erstellen, wenn dieser nicht vorhanden ist, nachfolgende VBS funktioniert Ich würde jedoch mit ...

VB for Applications
VBS - Vor- und Nachnamen auslesen
Frage von Ah3n0bar6usVB for Applications2 Kommentare

Ich könnte noch einmal (teuren) Rat gebracuhen. Ich versuche mir dem u.a. Script den kompletten Namen eines Nutzers vom ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen
Frage von joni2000deBatch & Shell4 Kommentare

Hallo zusammen, ich lese mit folgendem Code das Eventlog aus um die Druckjobs zu ermitteln. Das funktioniert auf dem ...

Entwicklung
Zählerstände über SNMP und VBS auslesen
Frage von motofuzyEntwicklung4 Kommentare

Hallo ihr lieben, ich suche ein Script das in VBS oder Powershell geschrieben ist und mir die Zählerstände der ...

Neue Wissensbeiträge
Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 5 StundenLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 2 TagenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Heiß diskutierte Inhalte
Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Windows 10
Alle Programme mit bestimmtem Namen automatisch (per GPO) deinstallieren
gelöst Frage von lordofremixesWindows 1012 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, alle Programme beginnend mit z.B. "Dell" im Namen per Script und somit per ...