kangaroojack
Goto Top

Cscript pstlocate.vbs Laufzeitfehler

Hoffe ihr könnt mir weiterhelfen.

Hallo Leute,

ich hoffe ihr könnt mir auch diesmal weiterhelfen mit einem Skript.

Folgende Situation. Größeres Netzwerk (>1000User), auf den Clients liegen noch PST Dateien rum. Diese sollen von den Clients weg in den Exchange verschoben werden.

Im Netz habe ich ein vb Skript gefunden, welches die aktuell eingebundenen PST Dateien ausliest. Das skript gibt pfad, größe etc aus. Die Ausgabe filtere ich mit findstr.
Das Ergebnis (1-x Zeilen Text, je nachdem wieviele Dateien eingebunden sind) schreibe ich mir in eine Textdatei.
In dieser Textdatei kürze ich die ersten X Stellen , da nicht benötigt. ( Path: wird weggeschnitten).
Dann suche ich ob der Zeilenanfang C:\ oder W: oder ... enthält. C:\ wird dann entsprechend ersetzt durch \\%COMPUTERNAME%\C$\ .....andere werte eben durch was anderes..sodass man daraus einen copy job bauen kann.
das schreibe ich dan wieder in eine Datei. Habe fertig.

Unter windows 7 mit cscript version 5.8 hat das bisher tadellos funktioniert und ich war stolz wie oskar, weil ich mir das alles eher zusammengebastelt habe - bin nicht so der Programmierer.
Nun habe ich das heute an den Zielsystemen mit XP getestet, es geht nicht.

er steigt bereits beim ersten cscript mit der Meldung
pstlocate.vbs(42, 5) Laufzeitfehler in Microsoft VBScipt: Typen unverträglich: 'UBound'
aus

Kann mir da jemand weiterhelfen was die Ursache ist und das Skript ans laufen bringen.
Wie gesagt unter Win7 mit cscript 5.8 klappt es 1a

Hier ist das Skript zu finden: http://gallery.technet.microsoft.com/ScriptCenter/313eaffd-a3a7-439a-aa ...

und hier der Code den ich mir zusammengebaut habe:
@echo off & setlocal enabledelayedexpansion
if exist %temp%\Output1.txt del %temp%\Output1.txt
if exist %temp%\Output2.txt del %temp%\Output2.txt
xcopy D:\Test\pstlocate.vbs %temp% /Y
cscript %temp%\pstlocate.vbs | findstr /C:".pst">>%temp%\Output1.txt  
set "filename=%temp%\Output1.txt"  
set "tempfile=%temp%\tmptxt.txt"  
for /F "delims=" %%a in (%filename%) do (  
set text=%%a
set text=!text:^&=und!>>%tempfile%
 )
set xy=7
set "Alt=%filename%"  
set "Neu=%temp%\Output2.txt"  
set "Cut=%temp%\Cut.vbs"  
echo Set fso=CreateObject("Scripting.FileSystemObject"):aL=Split(fso.OpenTextFile(WScript.Arguments(0),1).ReadAll,vbCrLF)>"%Cut%"  
echo Set N=fso.OpenTextFile(WScript.Arguments(1),2,-1):P=WScript.Arguments(2)+1:For Each sL In aL: N.WriteLine Mid(sL,P):Next:N.Close>>"%Cut%"  
cscript //nologo "%Cut%" "%Alt%" "%Neu%" %xy%  
del "%Cut%"  
del %tempfile%
del %temp%\Output1.txt
set "Datei=%temp%\Output2.txt"  
set "VonC=C:\"  
set "NachC$=\\%COMPUTERNAME%\C$\"  
set "VonD=D:\"  
set "NachD$=\\%COMPUTERNAME%\D$\"  
set "VonW=W:\"  
set "NachdomW=\\domaenel\K010\Benutzer\%USERNAME%\"  
set "VonX=X:\"  
set "NachdomX=ERROR "  
set "t=%temp%\text.tmp"  
if exist "%t%" del "%t%"  
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set Line=!Line:%VonC%=%NachC$%! & echo !Line!>>"%t%"  
move /y "%t%" "%Datei%"  
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set Line=!Line:%VonD%=%NachD$%! & echo !Line!>>"%t%"  
move /y "%t%" "%Datei%"  
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set Line=!Line:%VonW%=%NachdomW%! & echo !Line!>>"%t%"  
move /y "%t%" "%Datei%"  
for /f "usebackq delims=" %%i in ("%Datei%") do set "Line=%%i" & set Line=!Line:%VonX%=%NachdomX%! & echo !Line!>>"%t%"  
move /y "%t%" "%Datei%"  
%temp%\Output2.txt

Gruß und Dank im Vorraus
KangarooJack
Kommentar vom Moderator Dani am 14.12.2011 um 20:35:23 Uhr
Du weißt, dass es Formatierungshilfen hier gibt?!

Content-ID: 177709

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

Ausgedruckt am: 21.11.2024 um 21:11 Uhr

mathe172
mathe172 14.12.2011 um 21:35:14 Uhr
Goto Top
Hallo,

ohne jetzt genau zu wissen, woran es liegt, warum baust du nicht das VBScribt um? Warum erst die Ausgabe filtern? Und das Script? Das ist kein VBScript, oder face-wink

MfG,
Mathe172
[edit: Ich glaub ich bin zu blöd das Script zu finden face-sad. Könntest du mir sagen, wo ich es finde?]
Kangaroojack
Kangaroojack 14.12.2011 um 22:53:24 Uhr
Goto Top
Sorry, in der Hitze des Gefechts den falschen Link gepostet, habs korrigiert.

Tja, wenn ich VB könnte würde ich das Skript wohl anpassen. Leider kann ich aber kein VB. Und in batch bin ich halt einfach nur hartnäckig mit viel try&error...für das bisschen hier hab ich schon XX Stunden verpulvert.

@Dani: ich hab vorhin gesehen, dass es diese Formatierungshilfen gibt, aber war auf der Arbeit und hatte nicht den Nerv mir X Einstellungen durchzukauen ;)
mathe172
mathe172 15.12.2011 um 20:18:23 Uhr
Goto Top
Hallo,

was das ändern des Skripts angeht, schau dir mal die letzten 7 Zeilen an. Hier wird die Ausgabe aus Tabs, Strings und den Werten zusammengesetzt. Wenn du hier jetzt alles rauslöschst, was du nicht brauchst ("Path:","vbTab",...) und nur die Zeile drin lässt, die du brauchst.

Falls du Probleme hast, frag einfach face-smile

MfG,
Mathe172
bastla
bastla 15.12.2011, aktualisiert am 18.10.2012 um 18:49:22 Uhr
Goto Top
Hallo Kangaroojack!

Klingt irgendwie nach einem Beitrag in der Nachbarschaft (dort hatte ich ganz unten noch einen Vorschlag drangehängt) ...

Grüße
bastla
Kangaroojack
Kangaroojack 15.12.2011 um 22:00:48 Uhr
Goto Top
Hallo nochmal,

danke für die Hinweise, werde ich morgen mal drangehen.

pstlocate.vbs(42, 5) Laufzeitfehler in Microsoft VBScipt: Typen unverträglich: 'UBound'

konnte ich mit Hilfe eines Kollegen ermitteln und beheben. Grund ist folgender:

- Loggt sich ein User ein, bei dem KEIN Outlook Profil definiert ist - so ist der entsprechende Registry Pfad leer, somit wird wohl null ans skript übergeben, welches dann rausfliegt.
- Bei einem user der email eingerichtet hat, aber keine PST - wird halt gesucht und nichts gefunden. aber das skript kann halt arbeiten.

Mein Kollege hat dafür ne Errorabfrage eingebaut, nun wird das abgefangen. nun habe ich aber ein Problem mit dem cut skript das dann folgt, weil der dann ne leere Datei cutten soll - aber ich denke ich schau mir da mal an was mathe172 gesagt hab und editier das skript so, dass er gleich nur den Pfad ausgibt. Ach ja, es kann alles so einfach sein wenn man von allem Ahnung hätte face-smile Aber der Job ist halt soooo vielseitig da kann man nicht alles können.

Danke schonmal für die Tips, ich berichte ob es geklappt hat.