greeny1980
Goto Top

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é

Content-Key: 254719

Url: https://administrator.de/contentid/254719

Printed on: April 24, 2024 at 23:04 o'clock

Member: Crusher79
Crusher79 Nov 13, 2014 at 13:58:56 (UTC)
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
Member: Greeny1980
Greeny1980 Aug 31, 2015 at 11:41:19 (UTC)
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
Member: Greeny1980
Greeny1980 Oct 09, 2015 at 09:36:20 (UTC)
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