VBScript um die Ordnergrösse auszulesen - Script verreckt
Hallo ans Forum
Ich schreibe gerade an einem kleinen Script, welches die Grösse des Desktops und des "Documents"-Ordner jedes Profils eines Remotecomputers ausgibt.
Leider verreckt das Script immer bei den Dateiordnern "My Videos", "My Pictures" und "My Music". Mir ist klar, dass es sich dabei nicht um richtige Ordner, sondern um virtuelle handelt.
Das Script bringt allerdings immer die Meldung "Laufzeitfehler in Microsoft VBScript: Erlaubnis verweigert.", sobald die Schleife mit diesen virtuellen Ordnern in Kontakt kommt.
Die Betriebssysteme sind beide Vista, d.h. mein Client und auch der Remoteclient.
Pfad der genannten virtuellen Ordner: \\RemoteComputer\c$\users\%username%\Documents
Diese virtuellen Ordner sind standardmässig versteckt.
Hier das Script:
Was ich auch angedacht habe: Mittels einer Funktion wird rekursiv die Grösse jedes Files in den beiden Pfaden \\Remotecomputer\c$\users\%username%\Desktop und \\Remotecomputer\c$\users\%username%\Documents ausgelesen und zusammengezählt. Hier könnte ich mittels eines Select Case die drei virtuellen Ordner ausklammern. Dies möchte ich allerdings vermeiden, da das Script dann sehr lange laufen würde, vor allem bei WAN-Leitungen mit maximal 512 kbit/s, wie wir sie teilweise noch laufen haben.
Habt ihr eine Idee, wie ich diese virtuellen Ordner umgehen kann?
Gruss TuXHunT3R
Ich schreibe gerade an einem kleinen Script, welches die Grösse des Desktops und des "Documents"-Ordner jedes Profils eines Remotecomputers ausgibt.
Leider verreckt das Script immer bei den Dateiordnern "My Videos", "My Pictures" und "My Music". Mir ist klar, dass es sich dabei nicht um richtige Ordner, sondern um virtuelle handelt.
Das Script bringt allerdings immer die Meldung "Laufzeitfehler in Microsoft VBScript: Erlaubnis verweigert.", sobald die Schleife mit diesen virtuellen Ordnern in Kontakt kommt.
Die Betriebssysteme sind beide Vista, d.h. mein Client und auch der Remoteclient.
Pfad der genannten virtuellen Ordner: \\RemoteComputer\c$\users\%username%\Documents
Diese virtuellen Ordner sind standardmässig versteckt.
Hier das Script:
Set objNetwork = CreateObject("Wscript.Network")
set objShell = WScript.CreateObject("WScript.Shell")
set objFilesystem = Wscript.CreateObject("Scripting.FileSystemObject")
size = 0
strComputer = wscript.arguments(0)
if funPing(strComputer) = True Then
wscript.echo "Knotenname: " & strComputer
wscript.echo " "
Set objProfilefolder = objFilesystem.GetFolder("\\" & strComputer & "\c$\Users\")
For Each SubFolder In objProfilefolder.SubFolders
Profil = SubFolder
Set objProfil = objFilesystem.GetFolder(Profil)
Select Case objProfil.path
' Excludes:
Case "\\" & strComputer & "\c$\Users\All Users"
Case "\\" & strComputer & "\c$\Users\AutoInst"
Case "\\" & strComputer & "\c$\Users\Default"
Case "\\" & strComputer & "\c$\Users\Default User"
Case "\\" & strComputer & "\c$\Users\L-Install"
Case "\\" & strComputer & "\c$\Users\s-it32sDs"
Case "\\" & strComputer & "\c$\Users\s-SMS-Hlp"
Case Else
Set objDesktop = objFilesystem.GetFolder(objProfil.path & "\Desktop\")
Size = objDesktop.Size / 1024 ' Ergibt KB
Size = Size / 1024 ' Ergibt MB
wscript.echo objDesktop.Path & ";" & round(Size, 3)
Size = 0
set objMyDocs = objFilesystem.GetFolder(objProfil.path & "\Documents\")
Size = objMyDocs.Size / 1024 ' Ergibt KB
Size = Size / 1024 ' Ergibt MB
wscript.echo objMyDocs.Path & ";" & round(Size, 3)
Size = 0
End Select
Next
Else
wscript.echo "Das OS auf " & strComputer & " wird nicht unterstützt!"
wscript.echo " "
wscript.quit(0)
End if
Else
wscript.echo strComputer & " ist nicht pingbar!"
wscript.echo " "
wscript.quit(0)
End if
'_____________________________________
' Funktionen:
' ===========
Function funPing(strComputer) 'Ping-Funktion. "funPing" ist "True", wenn das Gerät pingbar ist und "False", wenn das Gerät nicht erreichbar ist.
rv = objShell.run("%systemroot%\system32\ping.exe -n 1 " & strComputer,,True)
If rv=0 Then
funPing = True
Else
funPing = False
End If
End Function
Was ich auch angedacht habe: Mittels einer Funktion wird rekursiv die Grösse jedes Files in den beiden Pfaden \\Remotecomputer\c$\users\%username%\Desktop und \\Remotecomputer\c$\users\%username%\Documents ausgelesen und zusammengezählt. Hier könnte ich mittels eines Select Case die drei virtuellen Ordner ausklammern. Dies möchte ich allerdings vermeiden, da das Script dann sehr lange laufen würde, vor allem bei WAN-Leitungen mit maximal 512 kbit/s, wie wir sie teilweise noch laufen haben.
Habt ihr eine Idee, wie ich diese virtuellen Ordner umgehen kann?
Gruss TuXHunT3R
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 114278
Url: https://administrator.de/contentid/114278
Ausgedruckt am: 29.03.2024 um 07:03 Uhr