Jump to content

Verbundene Netzlaufwerke per Skript sichern und wieder verbinden


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

ich versuche grade ein Skript zu basteln, das mir die verbundenen Netzlaufwerke eines Users in einer Datei schreibt und ich diese Laufwerke auf einem anderen PC dann ganz einfach wieder verbinden kann.

Hintergrund ist der, dass es in unserer Firma nur lokal gespeicherte Profile gibt (fragt nicht warum, ist nicht in meiner Verantwortung - und es ist eine sehr große Firma ;) ) und bei einem PC-Tausch jedesmal die Laufwerke von Hand erneut verbunden werden müssen (und das können auch gut und gerne mal 10-15 sein).

 

Ideal wäre ein Skript, das mit normalen Windows Bordmitteln läuft. Versucht hatte ich schon sowas wie

net use | findstr .: > laufwerke.bat

Aber wie kann ich nun die einzelnen Zeilen mit net use ... ergänzen? Oder hat jemand eine andere Idee?

Link zu diesem Kommentar

Ihr arbeitet doch sicher mit Rechtevergaben in den einzelnen Netzlaufwerken ? Sprich, Ordner sind nur für bestimmte User für Lesen oder Lesen/Schreiben freigeschalten...

Schreibe doch eine *.bat, in der alle vorhandenen Laufwerke verbunden werden. Zugriff hat der User dann doch eh nur auf die für ihn berechtigten Ordner. Und diese Batch-Datei ist dann für alle User gültig.

 

regards

hubivo

Link zu diesem Kommentar

Für zum Auslesen habe ich das:

 

Mapping.vbs

'* Benötigte Deklarationen

Set MyFiles	= CreateObject("Scripting.FileSystemObject")
Set wshNetwork	= WScript.CreateObject( "WScript.Network" )
Set WshShell	= WScript.CreateObject("WScript.Shell")

Company		= "Laufwerksmapping - Informationen"

'* Ermitteln des Nutzernamens, Computernamens und der Anmeldedomäne

Do While wshNetwork.username =	""
WScript.Sleep 250
Loop
strComputerName = wshNetwork.computerName
strUserName = wshNetwork.userName
strDomainName = wshNetwork.userDomain

'* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'* Hier ist der zu verwendenden ServerShare bzw. Pfad einzutragen!

If not MyFiles.FileExists("\\[b]server\share$[/b]\VBS-Tools\Mapping\Report\" & strComputerName & ".log") Then MyFiles.CreateTextFile("\\[b]server\share$[/b]\VBS-Tools\Mapping\Report\"& strComputerName & ".log")
Set logfile = MyFiles.OpenTextFile("\\[b]server\share$[/b]\VBS-Tools\Mapping\Report\" & strComputerName & ".log",8)

'* ----------------------------------
'* Ab hier wird nichts mehr geändert!
'* ----------------------------------

'* ---------------------
'* Aufruf der Subroutine
'* ---------------------
Call SubZusammenfassung

'* -----------
'* Die Routine
'* -----------
Sub SubZusammenfassung ()

'* -----------------------
'* Benötigte Deklarationen
'* -----------------------
Set colDrives	= wshNetwork.EnumNetworkDrives
Set colPrinters	= wshNetwork.EnumPrinterConnections

Dim CRLF
CRLF 		= Chr(13) & Chr(10)


strMsg = "Anmelde Ergebnisse - " &Now & CRLF & CRLF & "Benutzername" & Chr(9) & "= " & strUserName & CRLF & "Computername" & Chr(9) & "= " & strComputerName & CRLF & "Domäne" & Chr(9) & Chr (9) & "= " & strDomainName & CRLF

'* --------------------------
'* Verbundene Laufwerkslisten
'* --------------------------
If colDrives.Count = 0 Then
	strMsg = strMsg & CRLF & "Kein Netzlaufwerk ist verbunden." & CRLF
Else
	strMsg = strMsg & CRLF & "Verbundene Netzlaufwerk(e):" & CRLF

For i = 0 To colDrives.Count - 1 Step 2
	strMsg = strMsg & CRLF & colDrives(i) & Chr(9) & colDrives(i + 1)
Next
End If

'* ------------------------
'* Verbundene Druckerlisten
'* ------------------------

If colPrinters.Count = 0 Then
	strMsg = strMsg & CRLF & "Kein Netzwerk-Drucker ist verbunden." & CRLF
Else
	strMsg = strMsg & CRLF & CRLF & "Verbundene Netzwerk-Drucker:" & CRLF

For i = 0 To colPrinters.Count - 1 Step 2
	strMsg = strMsg & CRLF & colPrinters(i) & Chr(9) & colPrinters(i + 1)
Next

'* ------------------
'* Logdatei schreiben
'* ------------------

logfile.write(strMsg) & CRLF & CRLF & "----------------------------------------" & CRLF

End If 		'# von verbundene Druckerlisten


logfile.close

strMsg = strMsg & CRLF & CRLF & "Dieses Fenster schließt sich in 10 Sekunden automatisch."
BtnCode = WshShell.PopUp(strMsg,10,Company,64)

End Sub

 

Anzeigebeispiel:

Anzeigebeispiel.png

 

Logbeispiel:

Anmelde Ergebnisse - 06.04.2006 12:32:30

Benutzername	= <Username>
Computername	= <Clientname>
Domäne		= <Domain>

Verbundene Netzlaufwerk(e):

E:	\\server\share$
F:	\\server03abc\userid$
G:	\\clientname01\e$
H:	\\clientname02\c$
I:	\\clientname03\c$
Z:	\\server03abc\transfer

Verbundene Netzwerk-Drucker:

LPT1:	\\clientname01\hp LaserJet 1320 PCL 6

----------------------------------------

 

Inti29

Link zu diesem Kommentar

Das Problem ist, dass ich in meiner Firma keinen Zugriff auf die User-Administration habe, ich hab nichtmal einen Domänen-Admin :wink2: Ich tausche im Grunde nur die PCs, und davon mehrere am Tag. Und das ständige Netzlaufwerke-von-Hand-verbinden nervt (lokal gespeicherte Profile sei Dank :suspect: )

 

Das Skript vo Inti29 sieht ja schonmal ganz nett aus, macht aber auch nicht mehr, als die Netzlaufwerke in eine Datei zu schreiben. Wenn ich sie verbinden will, muss ich das immer noch per Hand. Gut wäre es, wenn direkt eine "net use..." Batch Datei erzeugt werden würde. Aber dafür reichen meine VBS Kenntnisse bislang leider nicht :(

Link zu diesem Kommentar

Hallo,

wenn Du statt IThome´s Version lieber mit der Kommandozeile arbeiten willst:

 

net use |find /i ":" >shares.txt

 

danach Batch-Datei auf dem Zeilrechner mit folgenden Zeilen laufen lassen:

@echo off

for /f "tokens=1,2,3,4 delims= " %%a in (shares.txt) do (

net use %%b /d

net use %%b %%c /persistent:yes

)

 

in der Datei shares.txt stehen die aktuell zugewiesenen Netzlaufwerke und mit der batch werden diese mit den gleichen Laufwerksbuchstaben wieder verbunden.

 

Gruß

winhar01

Link zu diesem Kommentar

Erstmal danke an alle für eure Antworten.

 

Die Lösung von winhar1 kommt dem am nächsten wie ich es mir gedacht hatte. Leider funktioniert es aber noch nicht ganz. Es tritt ein Fehler auf, wenn der UNC-Pfad zu kurz ist und dadurch am Ende der Zeile noch "Microsoft Windows-Netzwerk" auftritt (ist der UNC-Pfad lang genug rutscht das "Microsoft Windwos-Netzwerk" in die nächste Zeile und es gibt kein Problem). Sonst versucht das Skript nämlich, "net use \\server\freigabe Microsoft" auszuführen.

Link zu diesem Kommentar

Hallo,

also bei mir sieht die shares.txt folgendermaßen aus:

OK Y: \\Servername\Share Microsoft Windows Netzwerk

 

Dann werden die ersten Vier Zeichenketten (getrennt durch Leerzeichen) ausgewertet, wobei ich grad festgestellt habe, dass in der Batch-Datei 1,2,3 gereicht hätte. Kann es sein, dass bei Dir der Laufwerksbuchstabe in der Datei fehlt, dann würde das von Dir beschriebene Ergebnis erzeugt werden?

 

Gruß

winhar01

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...