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

Array zugriff

Frage Entwicklung VB for Applications

Mitglied: BADwolf

BADwolf (Level 1) - Jetzt verbinden

23.05.2012, aktualisiert 15:13 Uhr, 3236 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Router & Routing
gelöst MikroTik hAP ac Winbox Zugriff deaktivieren (1)

Frage von horstvogel zum Thema Router & Routing ...

Windows Server
Windows Server 2012 R2 Benutzerkonto für Zugriff auf AD Benutzer (1)

Frage von JulianOhm zum Thema Windows Server ...

Netzwerke
gelöst Zugriff auf Server von verschiedenen VLANs aus (7)

Frage von Kroeger02 zum Thema Netzwerke ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...