greeny1980

Netzlaufwerke auslesen und UNC Path als Verknüpfung für Explorer Links in Userprofile kopieren

Hallo zusammen,

ich möchte folgendes realisieren:

1.Ich möchte via Script alle verbundenen Netzlaufwerke unter Windows 7 und (noch) XP; auslesen.
2. der UNC Pfad soll dann in das User Profile als Verknüpfung kopiert werden

Ich hab unter Windows 2008 R2 Folderredirection aktivert und die Benutzerprofile liegen auf einem Netzwerkshare.

\\folderredirection\%username%\

Darin liegen:
AppData
Desktop
Downloads
Eigene Dokumente
Eigene Bilder
Eigene Musik
Eigene Videos
Favoriten (Internet-Explorer Favoriten)
Links (Windows Explorer Favoriten)

Ziel soll es nun sein die UNC Pfade der verbundenen Netzlaufwerke auszulesen und als Verknüpfung in das User Profile unter Links zu speichern.

Bisher habe ich folgendes versucht:

Visual Basic-Quellcode

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutFile = objFSO.CreateTextFile(".\Netzlaufwerke.txt")
Set colDrives = objWMIService.ExecQuery _
("Select * From Win32_LogicalDisk Where DriveType = 4")
For Each objDrive in colDrives
objOutFile.WriteLine(objDrive.DeviceID & " (" & _
objDrive.ProviderName & ")")
Next
objOutFile.Close


So werden mir die verbundenen Laufwerke in die Netzlaufwerke.txt geschrieben und zwar so:

Beispiel:
Z: (\\Freigabe\Ordner)

Im zweiten Script oder im Anschluss sollen jetzt die UNC Pfade aus der Netzlaufwerke.txt ausgelesen werden und als "Verknüpfung" im Userprofil unter \\folderredirection\%username%\Links eingefügt werden.


Ich hoffe ich habe nun alle brauchbaren Infos für euch aufgeschrieben?

LG
André
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 254719

Url: https://administrator.de/forum/netzlaufwerke-auslesen-und-unc-path-als-verknuepfung-fuer-explorer-links-in-userprofile-kopieren-254719.html

Ausgedruckt am: 17.05.2025 um 01:05 Uhr

Crusher79
Crusher79 13.11.2014 um 14:58:56 Uhr
Goto Top
Hi,

mklink kann das und sollte bei Windows dabei sein. Musst nur eine Batch Routine schreiben, die TXT ausliest. Oder du kombinierst alles in einer Batch.

Z: - ":" noch weg - und man eine schöne Bezeichnung. Kannst auch automatisch "Lw_" etc. davor setzen.

mfg Crusher
Greeny1980
Greeny1980 31.08.2015 um 13:41:19 Uhr
Goto Top
Leider scheint das nicht ganz zu funktionieren:

Also nochmals zur Erklärung:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutFile = objFSO.CreateTextFile(".\Netzlaufwerke.txt")
Set colDrives = objWMIService.ExecQuery _
("Select * From Win32_LogicalDisk Where DriveType = 4")
For Each objDrive in colDrives
objOutFile.WriteLine(objDrive.DeviceID & " (" & _
objDrive.ProviderName & ")")
Next
objOutFile.Close
Dieser Teil bewirkt das Auslesen der derzeit verbundenen Netzlaufwerke. Nach Ausführen des Scripts wird in die Datei Netzlaufwerke.txt folgendes geschrieben:

G: (\\Verzeichnis\Ordner)

Das Script soll nun eine Verknüpfung erstellen und diese in "Former_G Ziel Ordnername" bennen. Diese soll unter: C:\Users\benutzer\Links gespeichert werden.

Im Script muss also nun gesagt werden: Lese die Datei Netzlaufwerke.txt, entferne die Klammern , erstelle eine Verknüpfung unter C:\Users\benutzer\Links mit dem Namen Former_G Ordner....
Ich habe leider keine Ahnung wie ich das machen soll face-sad
Greeny1980
Greeny1980 09.10.2015 um 11:36:20 Uhr
Goto Top
Ich habe inzwischen eine Lösung und möchte Sie euch nicht vorenthalten:

Für Terminalserver-Umgebungen

Dim objShortcut
Dim objShell
Dim objWMIService

strComputer = "."  
strDriveletter = ""  


strRegKey = "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\{BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968}"  
strLinksFolder = ""  

Set objShell = WScript.CreateObject("Wscript.Shell")  
strLinksFolder = objShell.RegRead(strRegKey)

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  
Set colDrives = objWMIService.ExecQuery _
("Select * From Win32_LogicalDisk Where DriveType = 4")  
For Each objDrive in colDrives
	Set objShortcut = objShell.CreateShortcut(strLinksFolder& "\Former_" & Mid(objDrive.DeviceID, 1, 1) & ".lnk")  
	objShortcut.TargetPath = chr(34) & objDrive.ProviderName & chr(34)
	objShortcut.Save
Next



Lokal für Windows 7

Dim objShortcut
Dim objShell
Dim objWMIService

strComputer = "."  
strDriveletter = ""  
strUserprofil = ""  

Set objShell = WScript.CreateObject("Wscript.Shell")  

strUserprofil = objShell.ExpandEnvironmentStrings("%UserProfile%")  

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  
Set colDrives = objWMIService.ExecQuery _
("Select * From Win32_LogicalDisk Where DriveType = 4")  
For Each objDrive in colDrives
	Set objShortcut = objShell.CreateShortcut(strUserprofil & "\Links\Former_" & Mid(objDrive.DeviceID, 1, 1) & ".lnk")  
	objShortcut.TargetPath = chr(34) & objDrive.ProviderName & chr(34)
	objShortcut.Save
Next