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

gelöst Array zugriff

Mitglied: BADwolf

BADwolf (Level 1) - Jetzt verbinden

23.05.2012, aktualisiert 15:13 Uhr, 3340 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 ...

PHP

Array Filtern bei mehreren Werten innerhalb eines Array

gelöst Frage von LorderichPHP3 Kommentare

Hallo zusammen, ich habe folgendes Array: Array ( resource => Array ( 0 => Array ( ID => 3 ...

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. ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 2 TagenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 3 TagenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 3 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 3 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement19 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...

Netzwerkgrundlagen
VLAN - Offene Fragen
Frage von KnettenbrechNetzwerkgrundlagen17 Kommentare

Hallo zusammen, ich befasse mich derzeit mit dem Thema VLAN. Hierzu habe ich schon einige Guides gelesen, einschließlich des ...

Google Android
Empfehlung: Android Ortungsapp
gelöst Frage von certifiedit.netGoogle Android13 Kommentare

Guten Morgen, grundsätzlich vorweg, ich wollte mich eben schlau machen, bzgl einer Ortungsapp, welche Androidbasiert einem anderen Androidsmartphone mitteilt, ...

Router & Routing
VPN hinter zweiter Fritzbox nutzen im Nachbarhaus
gelöst Frage von georg2204Router & Routing11 Kommentare

Hallo zusammen, ich blicke hier leider nicht mehr so ganz durch. In Haus 1 steht eine Fritzbox 7390, diese ...