Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung VB for Applications

GELÖST

Array zugriff

Mitglied: BADwolf

BADwolf (Level 1) - Jetzt verbinden

23.05.2012, aktualisiert 15:13 Uhr, 3327 Aufrufe, 9 Kommentare

VBS - Script mit Array

Hallo,

ich möchte in einem VBS Script auf ein Array zugreifen!
In dem Array werden die Gruppen einer AD aufgeführt.
BSP:
01.
'-------------------------------------------------------- 
02.
Groups(0) = "\#A_prog1,OU=Applikation,OU=Standard,OU=hier,OU=Benutzer"  
03.
Groups(1) = "\#A_prog2,OU=Applikation,OU=Standard,OU=hier,OU=Benutzer"       
04.
Groups(2) = "\#A_prog3,OU=Applikation,OU=Standard,OU=hier,OU=Benutzer"    
05.
Groups(3) = "\#A_prog3,OU=Applikation,OU=Standard,OU=hier,OU=Benutzer" 
06.
'-------------------------------------------------------- 
Nun möchte ich aber den aktiven Array auslesen und in einer If funktion einer software zuweisen.
01.
'-------------------------------------------------------- 
02.
OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName")  
03.
If (InStr(OS, "XP")) & Groups(0|1|2|3))      'Wenn Windows XP laufend und eine entsprechende Gruppe, 
04.
Then     
05.
ShellObject.Run ("c:\scripttest\script1.vbs")  
06.
end If  
07.
'--------------------------------------------------------
aber wie kann ich das bei dem Array bewerkstelligen???
Das ODER in der Klammer habe ich jetzt erst hinzugefügt...


Wäre super wenn mir wer helfen könnte ;)
Mitglied: mak-xxl
23.05.2012 um 15:57 Uhr
Moin BADwolf,

etwa so:

01.
OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName")   
02.
If (InStr(OS, "XP")) > 0 Then 
03.
    For i = 0 To UBound(Groups) 
04.
        If Groups(i) = "1. Vergleichstext" Then         
05.
            ShellObject.Run ("c:\scripttest\script1.vbs") 
06.
        ElseIf Groups(i) = "2. Vergleichstext" Then         
07.
            ShellObject.Run ("c:\scripttest\script2.vbs") 
08.
        ElseIf Groups(i) = "3. Vergleichstext" Then         
09.
            ShellObject.Run ("c:\scripttest\script3.vbs") 
10.
        ElseIf Groups(i) = "3. Vergleichstext" Then         
11.
            ShellObject.Run ("c:\scripttest\script4.vbs") 
12.
        End If 
13.
    Next 
14.
End If  
oder so:

01.
OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName")   
02.
If (InStr(OS, "XP")) > 0 Then 
03.
    For i = 0 To UBound(Groups) 
04.
        If InStr(Groups(i), "1. Vergleichstext") > 0 Then         
05.
            ShellObject.Run ("c:\scripttest\script1.vbs") 
06.
        ElseIf InStr(Groups(i), "2. Vergleichstext") > 0 Then         
07.
            ShellObject.Run ("c:\scripttest\script2.vbs") 
08.
        ElseIf InStr(Groups(i), "3. Vergleichstext") > 0 Then         
09.
            ShellObject.Run ("c:\scripttest\script3.vbs") 
10.
        ElseIf InStr(Groups(i), "4. Vergleichstext") > 0 Then         
11.
            ShellObject.Run ("c:\scripttest\script4.vbs") 
12.
        End If 
13.
    Next 
14.
End If  
Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: bastla
23.05.2012, aktualisiert um 15:58 Uhr
Hallo BADwolf!

Was genau möchtest Du eigentlich womit vergleichen?

Wenn es nur darum ginge, einen in der Variablen "MyGroup" enthaltenen Gruppennamen auf Vorhandensein in irgendeiner der angeführten Gruppen zu prüfen (und es keine Verwechslungsmöglichkeit mit einer OU geben kann), würde ich einfach alle Array-Elemente zu einem String zusammenfassen und "InStr()" verwenden - also ungetestet etwa:
If InStr(OS, "XP") And InStr(Join(Groups), MyGroup) Then
Grüße
bastla
Bitte warten ..
Mitglied: BADwolf
23.05.2012 um 16:17 Uhr
Möchte eigentlich nicht vergleichen. Mir geht es darum... Wenn der benutzer xp benutzt, soll sich eine .bat ausführen. Wenn er aber Win 7 benutzt Soll sich eine Gruppenabhängige bat datei ausführen.

Hatte im letzten threat schon eine ähnliche frage. Aber in diesem Script, was ich erweitern soll gibt es eben schon dieses Gruppenzuordnungsarray... Und würde es .. Weil es ja schon vorhanden ist, eben bei ser wenn funktion benutzen. .. Vielkeicht ist auch schon der anfang verkehrt ... Oder ich machs mir eindaxh schwer
Bitte warten ..
Mitglied: bastla
23.05.2012, aktualisiert um 16:30 Uhr
Hallo BADwolf!

Mario hat offensichtlich gleich verstanden, was Du gemeint hast - für mich sah Deine Darstellung nach etwas anderem aus ...
@Mario
Alternativ zur Schleife könntest Du auch meinen Vorschlag mit "Join()" verwenden - dann wäre für jedes Script nur jeweils ein Vergleich erforderlich ...

Grüße
bastla
Bitte warten ..
Mitglied: BADwolf
23.05.2012 um 16:44 Uhr
Danke mario danke bastla, werde es wenn ich wieder vernünftige hardware vor mir habe ausprobieren soweit wäre ich selbst ich nicht gekommen
Bitte warten ..
Mitglied: mak-xxl
23.05.2012, aktualisiert um 16:51 Uhr
Moin BADwolf,

dann etwa so:

01.
OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName")   
02.
If (InStr(OS, "XP")) > 0 Then 
03.
    ShellObject.Run ("c:\scripttest\scriptXP.vbs") 
04.
ElseIf (InStr(OS, "Win7")) > 0 Then 
05.
    For i = 0 To UBound(Groups) 
06.
        If Groups(i) = "1. Vergleichstext" Then         
07.
            ShellObject.Run ("c:\scripttest\script1.vbs") 
08.
        ElseIf Groups(i) = "2. Vergleichstext" Then         
09.
            ShellObject.Run ("c:\scripttest\script2.vbs") 
10.
        ElseIf Groups(i) = "3. Vergleichstext" Then         
11.
            ShellObject.Run ("c:\scripttest\script3.vbs") 
12.
        ElseIf Groups(i) = "3. Vergleichstext" Then         
13.
            ShellObject.Run ("c:\scripttest\script4.vbs") 
14.
        End If 
15.
    Next 
16.
End If  
oder so:

01.
OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName")   
02.
If (InStr(OS, "XP")) > 0 Then 
03.
    ShellObject.Run ("c:\scripttest\scriptXP.vbs") 
04.
ElseIf (InStr(OS, "Win7")) > 0 Then 
05.
    For i = 0 To UBound(Groups) 
06.
        If InStr(Groups(i), "1. Vergleichstext") > 0 Then         
07.
            ShellObject.Run ("c:\scripttest\script1.vbs") 
08.
        ElseIf InStr(Groups(i), "2. Vergleichstext") > 0 Then         
09.
            ShellObject.Run ("c:\scripttest\script2.vbs") 
10.
        ElseIf InStr(Groups(i), "3. Vergleichstext") > 0 Then         
11.
            ShellObject.Run ("c:\scripttest\script3.vbs") 
12.
        ElseIf InStr(Groups(i), "4. Vergleichstext") > 0 Then         
13.
            ShellObject.Run ("c:\scripttest\script4.vbs") 
14.
        End If 
15.
    Next 
16.
End If  
Das war der Teil wie oben - mit einer zusätzlichen Weiche für XP/Win7. Wenn Du eine gruppenabhängige Script-Verzweigung haben willst, musst Du auf jeden Fall vergleichen (i.e. welcher Gruppe gehört der User an?) - das kannst Du fest eingeben (als 'Vergleichsstring') oder von ifmember anliefern lassen. Wenn Du nur nach einem Gruppennamen (siehe bastlas Post) abgleichst und andere 'Fehltritte' ausschließen kannst, dann nimm bastlas Kurzversion, etwa so:

01.
OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName") 
02.
Const strGroupName = "Gruppenname"   
03.
If (InStr(OS, "XP")) > 0 Then 
04.
    ShellObject.Run ("c:\scripttest\scriptXP.vbs") 
05.
ElseIf (InStr(OS, "Win7")) > 0 Then 
06.
    If InStr(Join(Groups), strGroupName) > 0 Then 
07.
        ShellObject.Run ("c:\scripttest\script1.vbs") 
08.
    EndIf 
09.
End If  
@bastla
Ich hatte eher das Prinzip der Arrayabfrage als Fragestellung verstanden, weil im Beispiel schien mir das Array fehl am Platze, solange es nicht beispielsweise pro Gruppe gleich den zugehörigen Scriptnamen enthält ...

Schönen Feierabend Euch Beiden und freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: bastla
23.05.2012 um 16:57 Uhr
Hallo Mario!
Ich hatte eher das Prinzip der Arrayabfrage als Fragestellung verstanden, weil im Beispiel schien mir das Array fehl am Platze, solange es nicht beispielsweise pro Gruppe gleich den zugehörigen Scriptnamen enthält ...
Meine Interpretation war, dass das Script nur ausgeführt werden sollte, wenn der User einer der im Array angegebenen Gruppen angehört - hätte ich aber aufgrund des vorigen Threads von BADwolf eigentlich schon besser wissen sollen ...
Was die "Join()"-Variante betrifft hatte ich es etwa so gemeint:
01.
OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName") 
02.
AllGroups = Join(Groups) 
03.
If (InStr(OS, "XP")) > 0 Then 
04.
    ShellObject.Run ("c:\scripttest\scriptXP.vbs") 
05.
ElseIf (InStr(OS, "Win7")) > 0 Then 
06.
    If InStr(AllGroups, "1. Vergleichstext") > 0 Then 
07.
        ShellObject.Run ("c:\scripttest\script1.vbs") 
08.
    ElseIf InStr(AllGroups, "2. Vergleichstext") > 0 Then 
09.
        ShellObject.Run ("c:\scripttest\script2.vbs") 
10.
    ElseIf InStr(AllGroups, "3. Vergleichstext") > 0 Then 
11.
        ShellObject.Run ("c:\scripttest\script3.vbs") 
12.
    ElseIf InStr(AllGroups, "4. Vergleichstext") > 0 Then 
13.
        ShellObject.Run ("c:\scripttest\script4.vbs") 
14.
    End If 
15.
End If
Grüße
bastla
Bitte warten ..
Mitglied: BADwolf
23.05.2012 um 21:48 Uhr
Es tut mir leid dass das Thread noch misteriöser ist, als der des letzten mal. Aber das Script aus dem diese Schnippsel stammt ist ca. 1000 Zeilen lang und sehr sehr unübersichtlich ... ich hoffe dass das bald ein Ende hat und ich mich wieder anderen, lustigeren Sachen zuwenden kann.

Werde eure Einträge morgen prüfen...
Bitte warten ..
Mitglied: BADwolf
24.05.2012 um 14:48 Uhr
Hat super funktioniert, vielen Lieben dank euch beiden. ...

Grüße
BadWolf
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Leere Array-Werte aus einem Array entfernen
gelöst Frage von ToniHoBatch & Shell3 Kommentare

Hallo zusammen, ich bin dabei ein Powershell-Script zu schreiben, welches diverse Reports generieren kann. Für die Eingabe von SamAccountNames ...

JavaScript
Javascript Array
gelöst Frage von internet2107JavaScript2 Kommentare

Ich habe folgendes Problem. Ersetze ich die folgenden Zahlen gegen Variablenwerte, bekomme ich nicht das Ergebnis, wie mit festen ...

Batch & Shell
Array oder Object oder wie soll ich das machen
gelöst Frage von Druide83Batch & Shell4 Kommentare

Hallo, mal wieder verzweifelt. Wahrscheinlich ist die Lösung einfach, aber ich habe gerade keinen Kopf mehr zum klar denken. ...

Batch & Shell
Wert aus Array ausschliessen PowerShell
gelöst Frage von ivaylo53Batch & Shell2 Kommentare

Guten Morgen Community, irgendiwe komme ich bei diesem Problem nicht weiter. Ich habe Zwei Objekte $alCSVUser und $alADUser. Diese ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 15 StundenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit25 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Windows 10
Automatische daten kopieren, USB zu USB unter Win10 im Hintergrund
Frage von DerEisigeWindows 1016 Kommentare

Hallo Leute, ich bin auf der Suche nach einem Skript, dass von einem USB Stick automatisch nach dem einstecken ...