dodge 10 Geschrieben 6. April 2006 Melden Teilen Geschrieben 6. April 2006 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? Zitieren Link zu diesem Kommentar
hubivo 10 Geschrieben 6. April 2006 Melden Teilen Geschrieben 6. April 2006 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 Zitieren Link zu diesem Kommentar
grizzly999 11 Geschrieben 6. April 2006 Melden Teilen Geschrieben 6. April 2006 Hallo und willkommen im Board :) Wie wäre es mit einem ganz stinknormalen Anmeldeskript in der Domäne? damit machen es so zeimlich ALLE grizzly999 Zitieren Link zu diesem Kommentar
Inti29 10 Geschrieben 6. April 2006 Melden Teilen Geschrieben 6. April 2006 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: 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 Zitieren Link zu diesem Kommentar
dodge 10 Geschrieben 6. April 2006 Autor Melden Teilen Geschrieben 6. April 2006 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 :( Zitieren Link zu diesem Kommentar
IThome 10 Geschrieben 6. April 2006 Melden Teilen Geschrieben 6. April 2006 Bei XP-Clients ... REG.EXE EXPORT HKCU\Network C:\NETZ.REG (zum Sichern) REG.EXE IMPORT C:\NETZ.REG (zum Importieren) Nach erneutem Anmelden nach dem Import sollten die Laufwerke vorhanden sein ... Zitieren Link zu diesem Kommentar
winhar01 10 Geschrieben 6. April 2006 Melden Teilen Geschrieben 6. April 2006 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 Zitieren Link zu diesem Kommentar
dodge 10 Geschrieben 6. April 2006 Autor Melden Teilen Geschrieben 6. April 2006 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. Zitieren Link zu diesem Kommentar
winhar01 10 Geschrieben 6. April 2006 Melden Teilen Geschrieben 6. April 2006 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.