Auf einem Dateiserver, der sehr viele Freigaben enthält, ist es nicht immer einfach herauszufinden, ob ein bestimmter Ordner freigegeben ist oder nicht. Oft wird man nicht drumherumkommen, eine RDP-Verbindung zu dem Server zu öffnen und im Explorer nachzusehen, oder man bemüht die Computerverwaltung mit Verbindung auf den Server und schaut unter "Freigaben" nach.
Das folgende Skript bietet eine Alternative. Es liest über WMI die Freigaben eines beliebigen Servers aus uns schreibt die Namen sowie die jeweils freigegebenen Ordner in zwei Dictionary-Objekte. Auf diese Weise kann mit recht einfachen Abfragen festgestellt werden, ob bestimmte Ordner freigegeben sind, und wenn ja, unter welchem Namen.
Das Skript
-
' Beispielaufrufe
-
-
Set osP = CreateObject("Scripting.Dictionary") ' Freigaben über den Pfad
-
Set osN = CreateObject("Scripting.Dictionary") ' Freigaben über Namen
-
ok = ShareDictsInit( ".", osN,osP) ' Listen einlesen
-
-
text = ""
-
for each share in osP
-
text = text & share & ": " & osP.Item(share) &vbCrLf
-
NEXT
-
-
msgbox text
-
-
text = ""
-
for each share in osN
-
text = text & share & ": " & osN.Item(share) &vbCrLf
-
NEXT
-
-
msgbox text
-
-
'#########################################################
-
-
Function ShareDictsInit(sServer, oShareNameDict, oSharePathDict)
-
' Freigaben in Dictionary ablegen
-
' Autor: Martin Resch, http://ml-tipps.de, 6/2006
-
-
' Parameter: Servername (String), angelegte Dictionary-Objekte nach Name
-
' bzw. Pfad
-
' Rueckgabe: "ok" oder Fehlerbeschreibung
-
-
const HKEY_LOCAL_MACHINE = &H80000002
-
ShareDictsInit = "ok"
-
ON ERROR RESUME NEXT
-
Set FSO = CreateObject("Scripting.FileSystemObject")
-
-
-
-
Set oReg=GetObject("winmgmts:" _
-
& "{impersonationLevel=impersonate}!\\" &_
-
sServer & "\root\default:StdRegProv")
-
IF err.Number <> 0 THEN
-
ShareDictsInit = err.Description
-
exit function
-
END IF
-
-
-
strKeyPath = "SYSTEM\CurrentControlSet\Services\LanManServer\Shares"
-
oReg.EnumValues HKEY_LOCAL_MACHINE, _
-
strKeyPath, arrValueNames, arrValueTypes
-
-
For i=0 to UBound(arrValueNames)
-
oReg.GetMultiStringValue _
-
HKEY_LOCAL_MACHINE, _
-
strKeyPath,arrValueNames(i), _
-
arrValues
-
shname = arrValueNames(i)
-
shdir = split(arrValues(2),"=")(1)
-
-
-
IF Mid(shdir,2,1) = ":" THEN
-
If not fso.FolderExists(shdir) Then
-
shDir = "" ' ungueltige Freigabe
-
ELSE
-
IF not oSharePathDict.exists(shdir) THEN
-
oSharePathDict.Add shDir, shName
-
ELSE
-
oSharePathDict.Item(shDir) = _
-
-
oSharePathDict.Item(shDir) & "|" & shName
-
END IF
-
END IF
-
End If
-
oShareNameDict.Add shName, shDir
-
-
IF err.Number <> 0 THEN
-
ShareDictsInit = err.Description
-
exit function
-
END IF
-
-
Next
-
END function
Verwandte Beiträge:
- fcp: Dateien und Ordner kopieren
fcp.vbs, Version: 1.0, ist ein Skript zum Kopieren von ganzen Ordner-Hierarchien, einzelnen Ordnern, Gruppen von Dateien und einzelnen Dateien. Es erlaubt... - Outlook-Ordner vom Chef dauerhaft in der Outlook-Ordnerliste der Sekretärin anzeigen
In einer Exchange-Umgebung kann mit entsprechenden Zugriffsrechten ein fremdes Postfach geöffnet und bearbeitet werden. Wie man ein fremdes Postfach dauerhaft in... - Homepage für Öffentliche Ordner in Outlook 2010 anzeigen
Wer unter Outlook 2010 HTML-Seiten in Öffentlichen Ordnern anzeigen lassen will, steht vor dem Problem, dass die Schaltfläche zwar vorhanden,... - Visual Basic Script Mailer
Für Administratoren ist es oft nützlich, per EMail benachrichtigt zu werden, wenn ein bestimmtes Ereignis eintritt, z.B. Stromausfall Server Reboot... - Festplatte fast voll? Per Skript Warnung verschicken
Als Administrator weiß man doch lieber vor den Nutzern, wenn etwas nicht mehr funktioniert. Noch besser ist natürlich, wenn man...
http://faq-o-matic.net/?p=632



Kategorie:
Translate EN

