Forums Neueste Beiträge
 

WMI-Funktion Auflisten von Unterordnern Fehler 0x80041002

29/10/2007 - 15:14 von Oliver Retz | Report spam
Hi Script-Kollegen,

ich hab ein Problem, wozu ich keinen rechten Lösungsansatz finden will.

In einem Teil eines recht umfrangreichen Skriptes möchte ich alle
Unterordner eines bestehenden Verzeichnisses auflisten und in ein Array
schreiben.
Auf dem Fileserver (W2k3 R2) làuft das Skript problemlos.
Auf den Clients bekomme ich immer an dieser Scriptstelle hier einen Fehler -
markiert mit dem Pfeil ==>.
(Siehe Code-Auszug am Ende)

Fehler 0x80041002 in dieser markierten Zeile.

Clients sind W2k Pro mit SP4 oder WXP Pro mit SP2.
Ich hab mit einem WXP Pro in einer VirtualPC-Umgebung getestet - ohne SP -
hier geht das Skript.
Dienste wie Windows Firewall, zum Ausschließen den Virenscanner beendet das
sind die Dinge die ich schon mal geprüft habe - keine Verbesserung.

Das Verzeichnis existiert, ich habe alle Rechte darauf.

Hat mir jemand eine Erklàrung dafür oder einen Ansatz?
Schon mal lieben Dank für euere Unterstüzung..


Oli


Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\"
& str_fileServer & "oot\cimv2")
If (str_structure = "flat") Then
Set colSubfolders = objWMIService.ExecQuery("Associators of
{Win32_Directory.Name='" & str_filePathAct & "\" & str_folderExist &"'}
Where
AssocClass = Win32_Subdirectory ResultRole = PartComponent")

ElseIf (str_structure = "sub") Then
Set colSubfolders = objWMIService.ExecQuery("Associators of
{Win32_Directory.Name='" & str_filePathAct & "\" & str_folderExist
&"\public'} Where
AssocClass = Win32_Subdirectory ResultRole = PartComponent")

End If


==>For Each objFolder In colSubfolders
str_temp = ""
str_temp = objFolder.Name
str_temp = Mid (str_temp,int_len)
arr_subfolder(int_count) = str_temp
int_count = int_count + 1
int_countSubFolder = int_count

Next
 

Lesen sie die antworten

#1 Pegasus \(MVP\)
29/10/2007 - 18:33 | Warnen spam
"Oliver Retz" wrote in message
news:
Hi Script-Kollegen,

ich hab ein Problem, wozu ich keinen rechten Lösungsansatz finden will.

In einem Teil eines recht umfrangreichen Skriptes möchte ich alle
Unterordner eines bestehenden Verzeichnisses auflisten und in ein Array
schreiben.
Auf dem Fileserver (W2k3 R2) làuft das Skript problemlos.
Auf den Clients bekomme ich immer an dieser Scriptstelle hier einen
Fehler - markiert mit dem Pfeil ==>.
(Siehe Code-Auszug am Ende)

Fehler 0x80041002 in dieser markierten Zeile.

Clients sind W2k Pro mit SP4 oder WXP Pro mit SP2.
Ich hab mit einem WXP Pro in einer VirtualPC-Umgebung getestet - ohne SP -
hier geht das Skript.
Dienste wie Windows Firewall, zum Ausschließen den Virenscanner beendet
das sind die Dinge die ich schon mal geprüft habe - keine Verbesserung.

Das Verzeichnis existiert, ich habe alle Rechte darauf.

Hat mir jemand eine Erklàrung dafür oder einen Ansatz?
Schon mal lieben Dank für euere Unterstüzung..


Oli


Set objWMIService =
GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & str_fileServer
& "oot\cimv2")
If (str_structure = "flat") Then
Set colSubfolders = objWMIService.ExecQuery("Associators of
{Win32_Directory.Name='" & str_filePathAct & "\" & str_folderExist &"'}
Where
AssocClass = Win32_Subdirectory ResultRole = PartComponent")

ElseIf (str_structure = "sub") Then
Set colSubfolders = objWMIService.ExecQuery("Associators of
{Win32_Directory.Name='" & str_filePathAct & "\" & str_folderExist
&"\public'} Where
AssocClass = Win32_Subdirectory ResultRole = PartComponent")

End If


==>For Each objFolder In colSubfolders
str_temp = ""
str_temp = objFolder.Name
str_temp = Mid (str_temp,int_len)
arr_subfolder(int_count) = str_temp
int_count = int_count + 1
int_countSubFolder = int_count

Next



Es wàre nützlich zu wissen, was für Werte die folgenden Variablen
annehmen, wenn dein Programm aussteigt:
str_structure
str_filePathAct
str_folderExist

Vermutlich kannst du dein Problem selber lösen, wenn du diese
Werte mit "wscript.echo" auf dem Bildschirm ausdruckst, damit
du sehen kannst, was vorgeht. Du könntest natürlich auch den
Debugger dazu benützen.

Ähnliche fragen