tuxhunt3r
Goto Top

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:
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

Content-Key: 114278

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

Ausgedruckt am: 29.03.2024 um 07:03 Uhr