Jump to content

VBS Problem


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hi!

 

Kann mir jemand auf die Sprünge helfen. Ich lass per GPO meine Scripts verteilen, das funzt auch. Ich hab nur ein Problem mit folgenden VB.

 

'Startmenü erzeugen
Set fso = CreateObject("Scripting.FileSystemObject") 
Set Shell = CreateObject("WScript.Shell") 
MenuePath = Shell.SpecialFolders("Programs") & "\Lohnbuchhaltung" 
If Not fso.FolderExists(MenuePath) Then fso.CreateFolder(MenuePath)

Set link = Shell.CreateShortcut(MenuePath & "\ELDA Client.lnk") 
link.IconLocation = "I:\Lohnbuchhaltung\ELDA\EldaClient.exe,0" 
link.TargetPath = "I:\Lohnbuchhaltung\ELDA\EldaClient.exe" 
link.WindowStyle = 1 
link.Save

 

17626276fi7.png

 

Er verschluckt mir die Verknüpfung am Clienten, das "T" von der EldaClient.exe, sprich er führt "EldaClien.exe" aus :confused:.

 

 

 

'Startmenü erzeugen
Set fso = CreateObject("Scripting.FileSystemObject") 
Set Shell = CreateObject("WScript.Shell") 
MenuePath = Shell.SpecialFolders("Programs") & "\Lohnbuchhaltung" 
If Not fso.FolderExists(MenuePath) Then fso.CreateFolder(MenuePath)

Set link = Shell.CreateShortcut(MenuePath & "\BMD Client.lnk") 
link.IconLocation = "I:\Lohnbuchhaltung\Software\BMDClients\Netspeed\BMD.exe,0" 
link.TargetPath = "I:\Lohnbuchhaltung\Software\BMDClients\Netspeed\BMD.exe" 
link.WindowStyle = 1 
link.Save

 

fehlerkq3.png

 

Bei der Verknüpfung am Client, muss ich die Verknüpfung erst korrigieren. Danach funzt es.

 

Wenn ich die Verknüpfungen per Hand ausführe passt alles.

Link zu diesem Kommentar

Moin,

 

besteht das Problem auch, wenn du das Skript manuell am Client ausführst?

Wie ist die Skriptdatei gespeichert - als ANSI oder als Unicode? Ich habe bei GPO-Skripts festgestellt, dass es bisweilen Probleme mit Unicode-Dateien gibt.

 

Wenn ich dein Skript manuell ausführe, legt es hier die Verknüpfungen richtig an.

 

Gruß, Nils

Link zu diesem Kommentar
Moin,

 

besteht das Problem auch, wenn du das Skript manuell am Client ausführst?

Wie ist die Skriptdatei gespeichert - als ANSI oder als Unicode? Ich habe bei GPO-Skripts festgestellt, dass es bisweilen Probleme mit Unicode-Dateien gibt.

 

Wenn ich dein Skript manuell ausführe, legt es hier die Verknüpfungen richtig an.

 

Gruß, Nils

 

Hi

 

Erstmal Danke für deine Antwort.

 

Wenn ich den Script direkt am Clienten ausführe, ist alles richtig.

 

Die VBS sind als ANSI gespeichert. Ich probiere es gleich per Unicode.

 

Danke.

 

gruß

Link zu diesem Kommentar
17626276fi7.png

 

Er verschluckt mir die Verknüpfung am Clienten, das "T" von der EldaClient.exe, sprich er führt "EldaClien.exe" aus :confused:.

 

wenn ich das richtig sehe, verschluckt er nicht nur das T, sondern N und T. Nimmt also nur 8 Zeichen...

Ist dieses I-Laufwerk denn korrekt verbunden?

Wie sehen denn die Pfade in den Verknüpfungen aus, bevor z.B. "Korrigieren" gedrückt wird?

Link zu diesem Kommentar
wenn ich das richtig sehe, verschluckt er nicht nur das T, sondern N und T. Nimmt also nur 8 Zeichen...

Ist dieses I-Laufwerk denn korrekt verbunden?

Wie sehen denn die Pfade in den Verknüpfungen aus, bevor z.B. "Korrigieren" gedrückt wird?

 

Hi

 

Sowohl ANSI als UNICODE funktionieren beide, aber der Fehler bleibt.

 

Scripts werden beim Anmelden gestartet.

 

Das Laufwerk I werd per Script vergeben, hat aber eine höhere Priorität in der Reihenfolge.

 

Du hast Recht, bei dem ELDAClient verschluckt er mehr :-).

 

Bei ELDA will er die Verknüpfung löschen, beim BMD will er Sie korrigieren.

 

gruß

Link zu diesem Kommentar

Moin,

 

jetzt noch mal langsam. In den Screenshots passt auch der Pfad nicht zum Code: Dort steht nur "Lohnbuch" statt "Lohnbuchhaltung". Bitte um Aufklärung.

 

Zumindest sieht das Ganze sehr seltsam aus. Kannst du bitte dein Skript mal um Fehlerbehandlung und Logging ergänzen? Vielleicht ergibt das ja was.

 

Es ist aber sichergestellt, dass da wirklich das Skript läuft, das du meinst? Nicht dass du versehentlich eine falsche Kopie erwischt hast und an dem tatsächlich ausgeführten Code gar nichts änderst.

 

Gruß, Nils

Link zu diesem Kommentar
Moin,

 

jetzt noch mal langsam. In den Screenshots passt auch der Pfad nicht zum Code: Dort steht nur "Lohnbuch" statt "Lohnbuchhaltung". Bitte um Aufklärung.

 

Zumindest sieht das Ganze sehr seltsam aus. Kannst du bitte dein Skript mal um Fehlerbehandlung und Logging ergänzen? Vielleicht ergibt das ja was.

 

Es ist aber sichergestellt, dass da wirklich das Skript läuft, das du meinst? Nicht dass du versehentlich eine falsche Kopie erwischt hast und an dem tatsächlich ausgeführten Code gar nichts änderst.

 

Gruß, Nils

 

Es ist definitv das richtige Script! Siehe Anhang. Es gibt doch die Möglichkeit den Pfad mit "~" zu kürzen?

 

Die Pfade werden also grundsätzlich auf 8 Zeichen gekürzt...

D.h. zur Ausführungszeit der GPO beherrscht das I-Laufwerk keine langen Dateinamen.... hmmm...

Was für ein Server hängt denn hinter dem I:? Novell?

 

Windows SBS 2003

Scripts.zip

Link zu diesem Kommentar
Ja. Wie die Pfade/Dateinamen dann heissen, kann man am CMD z.B. mittels DIR /X rausfinden.

 

Warum das aber passiert, würde ich schon lieber herausfinden.

Hab allerdings grad keine Idee...

Mal noch nebenher: Was für ein Client ist es denn? W2K? XP? Vista?

 

Clients sind alle Windows XP SP3. Server ist halt ein SBS 2003 SP2 :cry:.

Link zu diesem Kommentar

Moin,

 

das Problem bei den vom System erzeugten kurzen Datei-/Ordnernamen ist, dass sie nicht deterministisch sind. Gibt es eine Datei "ganzlangername.txt", wird daraus "ganzla~1.txt". Bei der zweiten heißt es "ganzla~2.txt". In dem Fall, dass mehrere da sind, ist es nicht ohne Weiteres möglich, die Zuordnung zur richtigen Datei herauszufinden.

 

Jedenfalls läuft da was falsch. Keine Ahnung, warum Windows (welches auch immer - das auf dem Client oder das auf dem Server) die Namen einfach abschneidet. Aus meiner Sicht darf es das nicht.

 

Bau doch mal eine Verzögerung ein mit "WScript.Sleep 20000" oder so. Wenn es nach der Wartezeit funktioniert, hat es was mit Timing zu tun - was auch immer. Und probier mal, ob das Problem auf allen Clients auftritt und ob es auf dem Server auch auftritt.

 

Nebenbei könntest du das Skript, sofern nicht zu lang, mal als Text hier posten. Der Zip-Anhang ist nämlich nicht freigeschaltet. Und gib bitte auch mal an, wie genau du das Laufwerk I: mappst.

 

Gruß, Nils

Link zu diesem Kommentar
Moin,

 

das Problem bei den vom System erzeugten kurzen Datei-/Ordnernamen ist, dass sie nicht deterministisch sind. Gibt es eine Datei "ganzlangername.txt", wird daraus "ganzla~1.txt". Bei der zweiten heißt es "ganzla~2.txt". In dem Fall, dass mehrere da sind, ist es nicht ohne Weiteres möglich, die Zuordnung zur richtigen Datei herauszufinden.

 

Jedenfalls läuft da was falsch. Keine Ahnung, warum Windows (welches auch immer - das auf dem Client oder das auf dem Server) die Namen einfach abschneidet. Aus meiner Sicht darf es das nicht.

 

Bau doch mal eine Verzögerung ein mit "WScript.Sleep 20000" oder so. Wenn es nach der Wartezeit funktioniert, hat es was mit Timing zu tun - was auch immer. Und probier mal, ob das Problem auf allen Clients auftritt und ob es auf dem Server auch auftritt.

 

Nebenbei könntest du das Skript, sofern nicht zu lang, mal als Text hier posten. Der Zip-Anhang ist nämlich nicht freigeschaltet. Und gib bitte auch mal an, wie genau du das Laufwerk I: mappst.

 

Gruß, Nils

 

Guten Morgen

 

 

Hier erstmal die beiden Scripts.

 

Desktop Verknüpfung - BMD

Set fso = CreateObject("Scripting.FileSystemObject") 
Set Shell = CreateObject("WScript.Shell") 
MenuePath = Shell.SpecialFolders("Programs") & "\Lohnbuchhaltung" 
If Not fso.FolderExists(MenuePath) Then fso.CreateFolder(MenuePath)

Set link = Shell.CreateShortcut(MenuePath & "\BMD Client.lnk") 
link.IconLocation = "I:\Lohnbuchhaltung\Software\BMDClients\Netspeed\BMD.exe,0" 
link.TargetPath = "I:\Lohnbuchhaltung\Software\BMDClients\Netspeed\BMD.exe" 
link.WindowStyle = 1 
link.Save

 

Desktop Verknüpfung - ELDA

Set fso = CreateObject("Scripting.FileSystemObject") 
Set Shell = CreateObject("WScript.Shell") 
MenuePath = Shell.SpecialFolders("Programs") & "\Lohnbuchhaltung" 
If Not fso.FolderExists(MenuePath) Then fso.CreateFolder(MenuePath)

Set link = Shell.CreateShortcut(MenuePath & "\ELDA Client.lnk") 
link.IconLocation = "I:\Lohnbuchhaltung\ELDA\EldaClient.exe,0" 
link.TargetPath = "I:\Lohnbuchhaltung\ELDA\EldaClient.exe" 
link.WindowStyle = 1 
link.Save

 

Laufwerk I verbinden

' LAUFWERK_I.VBS
'
Option Explicit
Dim objNetwork, strDrive, objShell, objUNC
Dim strRemotePath, strDriveLetter, strNewName
'
strDriveLetter = "I:"
strRemotePath = "\\XXX\Firmendaten$\XXX"
strNewName = "XXXX. - Struktur"

' Section to map the network drive
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath

' Section which actually (re)names the Mapped Drive
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName

WScript.Quit

' End of script.

 

Am Server führt er den Script auch falsch aus. Er verschluckt die Zeichen. Dann hat sich das mit WScript.Sleep erledigt oder? Dann liegt das Prob am Server :mad:

Link zu diesem Kommentar

Moin,

 

doch, probier das mit der Verzögerung mal aus. Nur um zu schauen, ob es irgendwas mit Timing zu tun hat. Du hast ja gesagt, dass es bei manuellem Aufruf funktioniert, daher der Verdacht.

 

Probiere darüber hinaus mal, das Umbenennen des I-Laufwerks wegzulassen.

 

Es ist aber am Server nicht zufällig die Unterstützung langer Dateinamen abgeschaltet? Zu NT-Zeiten kannte ich dazu mal den Regkey.

 

Gruß, Nils

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...