If .. then .. else vraag

Status
Niet open voor verdere reacties.

hassing

Gebruiker
Lid geworden
25 sep 2007
Berichten
43
Beste VBscript programmeurs,

ik zit met een hoogst waarschijnlijk eenvoudig probleem wat ik mijn minimale VB kennis niet opgelost krijg.

Wat wil ik?
Dit VBS script oproepen in mijn windows logon script

Wat doet het, of wat moet het doen?
controleren of er een juiste snelkoppeling op het bureaublad staat.
Ja .. niets doen
Nee .. snelkoppeling naar juiste server creeeren.

Voorwaarde:
Dit moet hij doen bij alle gebruikers .. mits!
Hij onderdeel is van de domain groep CJK_TERM_SERVER
(deze mogen niet naar de desktop schrijven en hebben wij zelf een icoon voor gemaakt)


Code:
Const Terminal_server_groep = "cn=CJK_TERM_SERVER"

Set ADSysInfo = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
strGroups = LCase(Join(CurrentUser.MemberOf))

If InStr(strGroups,Terminal_server_groep) Then

Exit  //als hij onderdeel is wil ik dat het script afgesloten wordt

Else  //geen onderdeel? icoon creeeren en klaar 

Set objFSO = CreateObject("Scripting.FileSystemObject")
    
Set C = CreateObject("WScript.Shell")

DesktopPath = C.SpecialFolders("Desktop")

Set link = C.CreateShortcut(DesktopPath & "\Share.lnk")

link.Description = "test"

link.TargetPath = "\\servernaam\data\share"

link.WindowStyle = 3

link.Save
    
End If

Iemand een idee?? oplossing .. of iets anders zinvols voor mij?
 
ik snap niet helemaal wat het probleem is, wil je checken of het icoon al bestaat? of werkt het hele script niet?
 
ik snap niet helemaal wat het probleem is, wil je checken of het icoon al bestaat? of werkt het hele script niet?


op dit moment werkt het script niet .. althans niet in een terminal server omgeving.

Het script wilt een icoon creeeren op de desktop en dat mogen deze gebruikers niet.

Misschien is er een andere oplossing voor mijn probleem. Ik heb geen idee wat de mogelijkheden zijn binnen VBscript.

Ik wil er eigenlijk voor zorgen dat alle gebruikers met desktop systemen middels een VBscript een snelkoppeling op hun desktop krijgen.
En dat de Terminal server gebruikers dit niet krijgen vanwege hun restricties.

Is dit duidelijk uitgelegd?

Ik hoor graag van U!
 
ik snap niet helemaal wat het probleem is, wil je checken of het icoon al bestaat? of werkt het hele script niet?

Dit was mijn eerste code .. hier check ik inderdaad of het icoon er al staat of niet.
Deze werkt ook alleen krijgen de terminal server gebruikers elke ochtend met het opstarten (na het script) een foutmelding .. unable to save ..


Code:
Set objFSO = CreateObject("Scripting.FileSystemObject")

If objFSO.FileExists("%Desktop%\SHARE.lnk")  Then

End if

Else
    
Set C = CreateObject("WScript.Shell")

DesktopPath = C.SpecialFolders("Desktop")

Set link = C.CreateShortcut(DesktopPath & "\Share.lnk")

link.Description = "Share"

link.TargetPath = "\\server\data\share"

link.WindowStyle = 3

link.Save
    
End If
 
je maakt hier geloof ik een fout;
Code:
If objFSO.FileExists("%Desktop%\SHARE.lnk")  Then
End if
je zegt hier dus dat als het bestaat, er "" moet gebeuren (niets dus)
mischien zou zo-iets beter zijn:
Code:
If objFSO.FileExists("%Desktop%\SHARE.lnk")  Then
Exit
End if

verder, ove rhet "unable to save": op de KB van MS vond ik:
http://support.microsoft.com/kb/319251
Windows Media Player shortcuts are created for administrators and power users when they log in for the first time on a system with Windows Media Player already installed. If the user is a member of the Users group, the shortcuts are not created.
nu gaat het er niet om dat het WMP is, maar mischien heb je er iets aan.
 
je maakt hier geloof ik een fout;
Code:
If objFSO.FileExists("%Desktop%\SHARE.lnk")  Then
End if
je zegt hier dus dat als het bestaat, er "" moet gebeuren (niets dus)
mischien zou zo-iets beter zijn:
Code:
If objFSO.FileExists("%Desktop%\SHARE.lnk")  Then
Exit
End if

verder, ove rhet "unable to save": op de KB van MS vond ik:
http://support.microsoft.com/kb/319251

nu gaat het er niet om dat het WMP is, maar mischien heb je er iets aan.

bedankt voor het meedenken, nee de unable to save komt echt vanaf de Windows script host. WSHshortcut.save
regel .. character ..

Die 'Exit' werkt trouwens niet.
Invalid statement!


Hoe kan je vanuit een IF naar de End if springen???

IF ja dan Exit
Else .. voer volgende commando's uit en Exit
 
Laatst bewerkt:
ja, het kan toch zijn dat wsh geen toegang heeft (als de user dat ook niet heeft)

dat springen kan via labels (iig in vb6, weet niet zeker over vbs)
Code:
if blabla then goto labelnummer1
(...)
(...)
labelnummer1:
Exit
Als Exit niet werkt, mischien werkt "end" dan wel.

[EDIT]
Code:
if "sblaat" = ja then
exit / end
else
(... commando's ...)
exit/end
end if
wat makkelijker is:
Code:
if "sblaat" [COLOR="DarkSlateGray"]<>[/COLOR] ja then
(... commando's ...)
exit/end
end if
zo hoef je geen "else" te gebruiken.

[/EDIT]
 
Laatst bewerkt:
ja, het kan toch zijn dat wsh geen toegang heeft (als de user dat ook niet heeft)

Met de <> zeg je toch is niet ..
Is geen gekke optie als dat zou werken ..

Code:
Const Terminal_server_groep = "cn=CJK_TERM_SERVER01"

Set ADSysInfo = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
strGroups = LCase(Join(CurrentUser.MemberOf))

If InStr <> (strGroups, Terminal_server_groep) Then 

Set objFSO = CreateObject("Scripting.FileSystemObject")
    
Set C = CreateObject("WScript.Shell")

DesktopPath = C.SpecialFolders("Desktop")

Set link = C.CreateShortcut(DesktopPath & "\Share.lnk")

link.Description = "Share"

link.TargetPath = "\\server\data\share"

link.WindowStyle = 3

link.Save

End If

character 23 op regel 7 .. hier gaat het mis
expected )
800A03EE is de code
 
inderdaad, "=" is gelijk aan, "<>" is ongelijk aan

ja dat komt omdat InStr() een functie is die je niet goed aanroept
t moet zijn:
Code:
If InStr(strGroups, Terminal_server_groep)<> "" Then
InStr retourneert een integer (-2,-1,0,1,2,3, enz) dus zou zou het moeten lukken (noot: beetje slordige code, maar het zou moeten werken)
 
inderdaad, "=" is gelijk aan, "<>" is ongelijk aan

ja dat komt omdat InStr() een functie is die je niet goed aanroept
t moet zijn:
Code:
If InStr(strGroups, Terminal_server_groep)<> "" Then
InStr retourneert een integer (-2,-1,0,1,2,3, enz) dus zou zou het moeten lukken (noot: beetje slordige code, maar het zou moeten werken)


het script werkt op deze manier wel maar heb niet het idee dat hij daadwerkelijk doet wat ik wil. Checken op member group .. niet uitvoeren indien gebruiker member is van deze gedefinieerde groep.
Hij voert het script op alle gebruikers uit.

Krijg dus nog dezelfde foutmelding ..
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan