blob 10 Geschrieben 13. Oktober 2009 Melden Teilen Geschrieben 13. Oktober 2009 (bearbeitet) Hallo @ all, ich möchte die Berechtigungen für Unterordner meines angegebenen Hauptordners ermitteln. Habe ein Script Beispiel von Technet, klappt auch soweit, aber nur mit lokalen Ordnern. Wenn ich einenn Netzwerkpfad angebe (habe volle Rechte), dann bekomme ich in VBS einen Abbruchfehler. Den Pfad den ich Remote auslesen möchte ist kein "normaler" Server, sondern eine NetApp. Hier steckt der Wurm drin: strcomputer = "." strpathname = "\\DFS\ordner" 'Calling Swbemservices Object: '============================= Set x = GetObject("winmgmts:\\" &strcomputer &"\root\cimv2") Set folders =x.execquery("Associators of {Win32_Directory.Name='" & strpathname & "'} " _ & "Where AssocClass = Win32_Subdirectory " _ & "ResultRole = PartComponent") For Each subfolder In folders MsgBox subfolder Next For Each subfolder In folders #<=== Hier bricht das Skript ab! Getsubfolders strpathname Next Weiss jemand woran es liegt oder wie ich es lösen könnte? Thx bearbeitet 13. Oktober 2009 von blob Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 13. Oktober 2009 Melden Teilen Geschrieben 13. Oktober 2009 Ganz klarer Fall, es liegt daran das du ein Skript hast, welches per WMI Informationen ausliest. WMI spricht eine Netapp natürlich nicht. Also wird das Skript sehr wahrscheinlich schon vorher abbrechen. Zitieren Link zu diesem Kommentar
blob 10 Geschrieben 13. Oktober 2009 Autor Melden Teilen Geschrieben 13. Oktober 2009 Das dachte ich mir auch irgendwie schon. Wenn ich mir den Pfad als ein Netzlaufwerk verbinde, dann klappt es. Nur ist es mühsehlig dauernd ein Laufwerk zu mappen wenn man mehrere Ordner hat. Wie müsste dieser Scriptteil aussehen, damit ein Remote Computer (Server) angesprochen wird? Sorry bin nicht so fit mit VBS... ich kann mir nur herleiten, dass die Variable strComputer geändert werden muss auf den Namen des anderen Computers... aber alleine das reicht nicht, wie festgestellt habe : o ) Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 13. Oktober 2009 Melden Teilen Geschrieben 13. Oktober 2009 Du könntest Dir ja im Script ein festes Laufwerk (z.B. Y:) jeweils mappen, auslesen, Mapping wieder löschen... also mal grob so: Set wshnet = CreateObject("WScript.Network") wshnet.MapNetworkDrive strLW, strPath '... die Abfrage hier z.B. als Prozeduraufruf wshnet.RemoveNetworkDrive strLW Edit: Wenn Du einen Remotecomputer abfragen willst, muss der Pfad ein Pfad sein, den der Remotecomputer sieht (i.Allg. z.B. dessen Laufwerke) Zitieren Link zu diesem Kommentar
blob 10 Geschrieben 15. Oktober 2009 Autor Melden Teilen Geschrieben 15. Oktober 2009 so, habe nun über den Workaround von Cybquest gelöst, danke dafür! Habe eine Textdatei mit den ganzen Pfaden, die ich auslesen möchte erstellt und lese die Zeilen nach und nach ein, verbinde damit ein Laufwerk, lese meine Infos aus und trenne es wieder. :-) Danke nochmal für die Hilfe! Zitieren Link zu diesem Kommentar
blob 10 Geschrieben 2. November 2009 Autor Melden Teilen Geschrieben 2. November 2009 Hallo, ich wollte zu dem Thema jetzt mich nochmal schlau machen. Mittlsl Rechtklick auf \\server\ordner kann ich mir ja die ACL anzeigen lassen. Da muss es doch auch möglich sein, die ACL über Netzwerkpfade mit VBS auszulesen?! Das obere Script kann man vergessen und einen neuen Ansatz finden. Oder evtl. ist das überhaupt nicht möglich? Zur Not würde ich im VB Script die Abfrage der ACL über ein Drittanbieter Tool starten. AccessEnum.exe arbeitet aber leider nicht ohne die grafische Oberfläche (oder ich bin zu dumm um /? zu starten). Danke im voraus. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 2. November 2009 Melden Teilen Geschrieben 2. November 2009 (bearbeitet) Hi, muss es unbedingt VBS sein? Mit Powershell ginge z.B.: Get-Acl -Path "\\server\pfad" Das Ganze kann man dann auch noch entspr. aufbereiten (Stichwort "Piping") Weiterhin wäre ein Aufruf von XCACLS.EXE möglich... bearbeitet 2. November 2009 von Cybquest XCACLS noch eingefallen Zitieren Link zu diesem Kommentar
blob 10 Geschrieben 3. November 2009 Autor Melden Teilen Geschrieben 3. November 2009 Powershell kommt bei uns erst noch, derzeit noch nirgends installiert und auch nicht freigegeben :-( Habe mir xcacls angeschaut, die ältere .exe Version und die aktuelle .vbs Funktion. Mal sehen ob ich die vbs Version nach meinen Wünschen so verbiegen kann, damit meine gewünschte Formatierung erscheint. Merci nochmal! Zitieren Link zu diesem Kommentar
blob 10 Geschrieben 3. November 2009 Autor Melden Teilen Geschrieben 3. November 2009 ähm, benötige doch nochmal kurz Hilfe... warum kommt hier die Fehlermeldung, dass das System die angegebene Datei nicht gefunden hat? et objShell = WScript.CreateObject("WScript.Shell") return = objShell.Run("c:\xcacls.exe C:\TEST >>C:\log.txt") Set objShell = Nothing Ordner existiert, xcacls.exe funktioniert auch. Was mache ich falsch? Merci im voraus. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 4. November 2009 Melden Teilen Geschrieben 4. November 2009 Da brauchts ne kleine Erweiterung: return = objShell.Run("cmd.exe /C c:\xcacls.exe C:\TEST >>C:\log.txt") Damit sollte es laufen. 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.