Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBS Script fürs Autologon

Frage Entwicklung Batch & Shell

Mitglied: BADwolf

BADwolf (Level 1) - Jetzt verbinden

21.05.2012, aktualisiert 13:27 Uhr, 5016 Aufrufe, 20 Kommentare

wenn Win 7 und Gruppenzugehörigkeit xxxx, dann CAD-Script

Stehe momentan gewaltig aufm Schlauch.
In einem Logonscript müsste eine Betriebssystemabfrage eingebaut werden und dann für verschieden Programme zugehörige Batchprogramme ausgeführt werden.

wenn Win 7 und Gruppenzugehörigkeit xxxx, dann CAD-Script

if %os% == Windows_XP
then
Set ws = Wscript.CreateObject("Wscript.Shell")
ws.run ("Cmd /c:\scripttest\test1.bat"),
ws.run ("Cmd /c:\scripttest\test2.bat"),
ws.run ("Cmd /c:\scripttest\test3.bat")
endif;

Wahrscheinlich ist das, was ich bissher entworfen habe umständlich und auch die Abfrage nach der Benutzergruppe (AD) ist noch nicht integriert.

Für Hilfe wäre ich dankbar ;)

Der frühe Vogel fängt den Wurm ...
aber die 2.te Maus bekommt den Käse....

denk mal drüber nach...
Mitglied: rmarkus
21.05.2012 um 12:15 Uhr
Gude,

if (%OS% == Windows_XP & XXXX) then ...

Mit %os% wirst du nicht weiter kommen...Ich gehe davon aus das du sowas suchst...

01.
VER | find "XP" > nul 
02.
IF %errorlevel% == 0 GOTO XP 
03.
VER | find "2000" > nul 
04.
IF %errorlevel% == 0 GOTO 2000 
05.
VER | find "NT" > nul 
06.
IF %errorlevel% == 0 GOTO NT 
07.
VER | find "Microsoft Windows [Version 6.0" > nul 
08.
IF %errorlevel% E== 0 GOTO Vista 
09.
VER | find "Microsoft Windows [Version 5.2" > nul 
10.
IF %errorlevel% == 0 GOTO 2003 
11.
VER | find "Microsoft Windows [Version 6.1" > nul 
12.
IF %errorlevel% == 0 GOTO Win7
usw...


Gruß Markus
Bitte warten ..
Mitglied: BADwolf
21.05.2012 um 12:26 Uhr
danke Markus, ich bin für jeden Tipp dankbar ;)

Was genau aber meinst du mit VER | ...
ab dem | motzt die CMD, das er dieses zeichen nicht kenn, aber sicher bin ich nicht....
Bitte warten ..
Mitglied: rmarkus
21.05.2012 um 13:29 Uhr
Hi,

ab dem | motzt die CMD, das er dieses zeichen nicht kenn, aber sicher bin ich nicht....

Also bei mir funktioniert es , aber ich hab auch gerade gesehen das du ebenfalls die Gruppenzugehörigkeit abfragen willst.
Daher wäre es denk ich besser wenn du mit GPP (Group Policy Preferences) arbeitest, vorausgesetzt du hast eine vorhandene Domäne.


Gruß Markus
Bitte warten ..
Mitglied: BADwolf
21.05.2012 um 13:39 Uhr
also etwa so????????
---------------/script-------------------
VER | find "XP" > nul
IF %errorlevel% == 0 GOTO XP
then
Set ws = Wscript.CreateObject("Wscript.Shell")
ws.run ("cmd c:\testscript\test1.bat")
WScript.Echo "Test1.bat erfolgreich gestartet"
endif
---------------/script-------------------

hier sagt windows fehler zeile 1 zeichen 5 ... ergo | ;)
weiter kann das script nicht ausgeführt werden. okay.. hab hier auch kein xp ..
was müsste ich denn mit GPP denn anders machen??? Domäne ist da.
Bitte warten ..
Mitglied: rmarkus
21.05.2012 um 13:51 Uhr
Achso, das ganze in Batch und nicht VBS!
Kennst du dich denn in der Domänenstruktur aus, oder ist das absolut neu?

Gruß Markus
Bitte warten ..
Mitglied: BADwolf
21.05.2012 um 13:54 Uhr
sagen wir es mal so, ich bin absolut neu ;)
also sowohl in dem Unternehmen als auch im Scripten. Habe auch fast garkeine Rechte.
Ergo muss ich mich darauf konzentrieren eben die Gruppe des angemeldeten Users irgendwie auswerfen zu lassen, wenn möglich.

Gruß Gabriel
Bitte warten ..
Mitglied: BADwolf
21.05.2012 um 13:59 Uhr
muss ich denn, wenn ich die Datei als BAT ausführe dann irgendwas besonderes beachten? BZW, muss ich die ganze "Tabelle in BAt ausführen, und wie übergebe ich die den Wert dann an die VBS um damit weiter zu arbeiten
Bitte warten ..
Mitglied: rmarkus
21.05.2012, aktualisiert um 14:17 Uhr
Wie gesagt, am besten wäre es wenn du das mittels GPP löst. Ist definitiv eine saubere Lösung. (Wenn nicht die sauberste Lösung)
Ja, ohne Rechte ist das so ne Sache. Da musst du mit deinen vorgesetzten Reden...

Zitat von BADwolf:
muss ich denn, wenn ich die Datei als BAT ausführe dann irgendwas besonderes beachten? BZW, muss ich die ganze "Tabelle
in BAt ausführen, und wie übergebe ich die den Wert dann an die VBS um damit weiter zu arbeiten

Es wäre von Vorteil wenn du mal sagen würdest was genau du vor hast. Willst du nur weitere Batches ausführen, etwas kopieren, oder ein Programm starten?
Wenn ja, was sollen die weiteren Batches machen, oder die auszüführenden Programme...
Bitte warten ..
Mitglied: BADwolf
21.05.2012, aktualisiert um 14:40 Uhr
In einem vorhandenen Login - Script soll überprüft werden (müsste erst eingebunden werden), ob das OS (also XP) und die Gruppe (xxxx) des angemeldeten Benutzers übereinstimmt. Wenn die bedingung erfüllt, soll ein vbs - Script ausgeführt werden, welches entsprechend des Programmes dann die bat startet.
Bitte warten ..
Mitglied: BADwolf
21.05.2012 um 14:58 Uhr
okay alles anders! Wie ich gerade erfahren habe....
In einem vorhandenen Login - Script soll überprüft werden (müsste erst eingebunden werden), ob das OS (also XP) und die Gruppe (xxxx) des angemeldeten Benutzers.
Wenn das zutrifft dann soll ein schon vorhandene login.bat gestartet werden.

Wenn aber das OS Windows 7 ist dann müssen andere Scripts (3Stück; Programmabhängig) gestartet werden...
Bitte warten ..
Mitglied: rmarkus
21.05.2012 um 15:09 Uhr
Löst es über die Group Policy Preferences (GPP), wie oben bereits erwähnt. Definitiv leichter und
sauberer als die Geschichte zu scripten.


Gruß Markus
Bitte warten ..
Mitglied: BADwolf
22.05.2012, aktualisiert um 12:19 Uhr
okay.. soweit der Plan .. ich habe es auch angesprochen aber es SOLL gescripted werden. Mittlerweile bin ich auch ein Stück weiter.
Aber dennoch habe ich eine Fehlermeldung das 'Next', dann 'End' erwartet wird. Beides gesetzt wird das 'Next' erwartet. Vielleicht kann mir jemand Helfen???

'
Dim ObjShell
Dim ShellObject
DIM OS
'-----------------------OS - ERmitllung------------------------------
Set ShellObject = WScript.CreateObject("WScript.Shell")
Set ObjShell = WScript.CreateObject("WScript.Shell")
Set os = Wscript.CreateObject("Wscript.Shell")
ObjShell = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProductName")
'Wenn Windows XP, dann
if InStr(ObjShell, "XP",1) then
os.run ("c:\scripte\test1")
end if
'Wenn Windows 7, dann
if InStr(ObjShell, "7",1) then
os.run ("cmd c:\scripte\test2")
os.run ("cmd c:\scripte\test3")
os.run ("cmd c:\scripte\test4")
end if
end
'

Zum Ablauf
Es soll überprüft werden in welchen Gruppen der User sich befindet, wenn eine der Gruppen die Gruppe 'xxxxx' ist soll überprüft werden, welches betriebssystem installiert ist und dem entsprechend dann eben die test*.bat ausgeführt werden. Vielleicht nur ein kleiner Fehler aber da ich ziemlich Neu im Scripten bin, kann ich den Fehler nicht extrahieren.

Hoffe das mir irgendwer helfen kann.
Bitte warten ..
Mitglied: bastla
22.05.2012, aktualisiert um 12:13 Uhr
Hallo BADWolf!

Es ist sinnlos, dsa gleiche Objekt unter 3 verschiedenen Namen zu erstellen (und dann - siehe "ObjShell=..." auch noch falsch zu verwenden) - daher sollte eigentlich
01.
'-----------------------OS - ERmitllung------------------------------ 
02.
Set ShellObject = WScript.CreateObject("WScript.Shell") 
03.
ProductName = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProductName") 
04.
'Wenn Windows XP, dann 
05.
If InStr(ProductName, "XP") Then 
06.
    ShellObject.Run ("\\oe03817\Launch\login.bat") 
07.
End If 
08.
'Wenn Windows 7, dann 
09.
If InStr(ObjShell, "7") then 
10.
    ShellObject.Run ("\\davs240301\cad$\SWX\SolidWorks_2012\00_Logon\swxlogon.bat") 
11.
    ShellObject.Run ("\\davs240301\cad$\ACADME\ACADME2012\00_Logon\acadmelogon.bat") 
12.
    ShellObject.Run ("\\davs240301\cad$\INV\00_Logon\invlogon.bat") 
13.
End If
genügen ...

Grüße
bastla

P.S.: Und schau doch mal in die Formatierungshilfe, wie sich Code besser leserlich darstellen lässt ...
Bitte warten ..
Mitglied: BADwolf
22.05.2012 um 12:41 Uhr
Hallo Bastla,

Ja cool, .. danke, konnte es zwar noch nicht ausprobieren, aber das sieht gut aus, muss nur noch die Gruppenabfrage integrieren.
könnte ich hier den Code in eine if abfrage verschachteln, alá:
Dim ObjShell
Dim ShellObject
DIM OS
'--------------------------------
Set objitem = GetObject("LDAP://CN=meinuser,OU=meinou,DC=meindomaene,DC=lo")
Groups = objItem.memberof

If IsArray(Groups) Then
For Each Group In Groups
if InStr(Group,"xxxxx")
Next
'---------------------------------
If InStr(ProductName, "XP") Then
ShellObject.Run ("c:\script\test1.bat")
End If
If InStr(ObjShell, "7") then
ShellObject.Run ("c:\script\test2.bat")
ShellObject.Run ("c:\script\test3.bat")
ShellObject.Run ("c:\script\test4.bat")
End If
'--------------------------------
Else
WScript.Echo "Keine konfiguration notwendig
End If
Bitte warten ..
Mitglied: bastla
22.05.2012 um 14:24 Uhr
Hallo BADwolf!

Grundsätzlich ja, wobei allerdings die Position des "Next" zu überdenken wäre - die Frage ist auch, ob Du nicht vielleicht doch nur den "CN" der Gruppe verwenden willst - entweder per Abfrage des Attributs oder per Zerlegung in der Art von
If InStr(Split(Split(Group, "=")(1), ",")(0)), "xxxx") Then
- damit wird zunächst anhand der "=" zerlegt und der zweite entstehende Teil verwendet, und dieser beim "," weiter unterteilt, wobei dieses Mal der erste Teil gefragt ist ...

Grüße
bastla
Bitte warten ..
Mitglied: BADwolf
22.05.2012, aktualisiert um 15:48 Uhr
vielen dank für die Mithilfe ;)

wenn ich nun das in das script eintrage und es versuche laufen zu lassen habe ich einen Kompatibilitätsfehler in Zeile 5 ... hoffe das es der letzte post ist ;)

01.
Set objitem = GetObject("LDAP://CN=meinuser,OU=meinou,DC=meindomaene,DC=lo")  
02.
Groups = objItem.memberof  
03.
If IsArray(Groups) Then  
04.
 For Each Group In Groups  
05.
  If InStr(Split(Split(Group, "=")(1), ",")(0)), "xxxx") Then 
06.
   If InStr(ProductName, "XP") Then  
07.
     ShellObject.Run ("c:\script\test2.bat")   
08.
   end If  
09.
   If InStr(ObjShell, "7") then  
10.
  ShellObject.Run ("c:\script\test2.bat")  
11.
  ShellObject.Run ("c:\script\test3.bat")  
12.
  ShellObject.Run ("c:\script\test4.bat")  
13.
   end If 
14.
   Next 
15.
  end If  
16.
end if
Bitte warten ..
Mitglied: bastla
22.05.2012 um 15:08 Uhr
Hallo BADwolf!

An "Kompatibilitätsfehler " muss ich meine Zweifel anmelden.

Vielleicht fehlt ja auch nur ein einzelnes Leerzeichen - allerdings ließe sich die Zeile 5 wesentlich leichter finden, wenn Du Dich zur Verwendung der oben schon angesprochenen "Code"-Formatierung (siehe hier) entschließen könntest.

Wenn Du das mit der Zeile 5 hinbekommen hast, solltest Du auch noch über eine passende Position für ein "Next" nachdenken ...

Grüße
bastla
Bitte warten ..
Mitglied: BADwolf
22.05.2012 um 15:29 Uhr
mh.. okay.. Kompilierungsfehler besteht trotzdem....Zeile 5 Zeichen 48 .. 'then' erwartet.. meint er :D ...für mich ist das then aber deutlich sichtbar ... ;D oder habe ich ein gedankenfehler???

auch mit dem jetzt eingefügten Next habe ich meine Zweifel... aber das endert nichts an dem fehler .....
Bitte warten ..
Mitglied: bastla
22.05.2012, aktualisiert um 15:43 Uhr
Hallo BADwolf!

In der Zeile 15 wäre das "Next" wesentlich besser aufgehoben (was noch besser zu erkennen wäre, wenn Du auch noch konsequent Einrückungen verwendet hättest) ...

Grüße
bastla
Bitte warten ..
Mitglied: BADwolf
22.05.2012 um 15:59 Uhr
Hallo Bastla,

vielen dank habe meinen Fehler gefunden ... eine klammer mehr zu als ich aufgemacht habe. sonst soweit alles bestens... glaub ich ;) muss ich mal testen was jetzt noch passiert ;)
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Batch & Shell
gelöst VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen) (5)

Frage von Luuke257 zum Thema Batch & Shell ...

VB for Applications
gelöst VBS Script kann Prgramm nicht starten (15)

Frage von C.Boerner zum Thema VB for Applications ...

Windows Server
Aufgabenplanung bringt bei VBS Script immer 0x41301 (14)

Frage von 116480 zum Thema Windows Server ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (18)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...