Array zugriff
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:
Nun möchte ich aber den aktiven Array auslesen und in einer If funktion einer software zuweisen.
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 ;)
Hallo,
ich möchte in einem VBS Script auf ein Array zugreifen!
In dem Array werden die Gruppen einer AD aufgeführt.
BSP:
'--------------------------------------------------------
Groups(0) = "\#A_prog1,OU=Applikation,OU=Standard,OU=hier,OU=Benutzer"
Groups(1) = "\#A_prog2,OU=Applikation,OU=Standard,OU=hier,OU=Benutzer"
Groups(2) = "\#A_prog3,OU=Applikation,OU=Standard,OU=hier,OU=Benutzer"
Groups(3) = "\#A_prog3,OU=Applikation,OU=Standard,OU=hier,OU=Benutzer"
'--------------------------------------------------------
'--------------------------------------------------------
OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName")
If (InStr(OS, "XP")) & Groups(0|1|2|3)) 'Wenn Windows XP laufend und eine entsprechende Gruppe,
Then
ShellObject.Run ("c:\scripttest\script1.vbs")
end If
'--------------------------------------------------------
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 ;)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 185383
Url: https://administrator.de/contentid/185383
Ausgedruckt am: 22.11.2024 um 03:11 Uhr
9 Kommentare
Neuester Kommentar
Moin BADwolf,
etwa so:
oder so:
Freundliche Grüße von der Insel - Mario
etwa so:
OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName")
If (InStr(OS, "XP")) > 0 Then
For i = 0 To UBound(Groups)
If Groups(i) = "1. Vergleichstext" Then
ShellObject.Run ("c:\scripttest\script1.vbs")
ElseIf Groups(i) = "2. Vergleichstext" Then
ShellObject.Run ("c:\scripttest\script2.vbs")
ElseIf Groups(i) = "3. Vergleichstext" Then
ShellObject.Run ("c:\scripttest\script3.vbs")
ElseIf Groups(i) = "3. Vergleichstext" Then
ShellObject.Run ("c:\scripttest\script4.vbs")
End If
Next
End If
oder so:
OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName")
If (InStr(OS, "XP")) > 0 Then
For i = 0 To UBound(Groups)
If InStr(Groups(i), "1. Vergleichstext") > 0 Then
ShellObject.Run ("c:\scripttest\script1.vbs")
ElseIf InStr(Groups(i), "2. Vergleichstext") > 0 Then
ShellObject.Run ("c:\scripttest\script2.vbs")
ElseIf InStr(Groups(i), "3. Vergleichstext") > 0 Then
ShellObject.Run ("c:\scripttest\script3.vbs")
ElseIf InStr(Groups(i), "4. Vergleichstext") > 0 Then
ShellObject.Run ("c:\scripttest\script4.vbs")
End If
Next
End If
Freundliche Grüße von der Insel - Mario
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 "
Grüße
bastla
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
bastla
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 "
Grüße
bastla
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
Moin BADwolf,
dann etwa so:
oder so:
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
@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
dann etwa so:
OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName")
If (InStr(OS, "XP")) > 0 Then
ShellObject.Run ("c:\scripttest\scriptXP.vbs")
ElseIf (InStr(OS, "Win7")) > 0 Then
For i = 0 To UBound(Groups)
If Groups(i) = "1. Vergleichstext" Then
ShellObject.Run ("c:\scripttest\script1.vbs")
ElseIf Groups(i) = "2. Vergleichstext" Then
ShellObject.Run ("c:\scripttest\script2.vbs")
ElseIf Groups(i) = "3. Vergleichstext" Then
ShellObject.Run ("c:\scripttest\script3.vbs")
ElseIf Groups(i) = "3. Vergleichstext" Then
ShellObject.Run ("c:\scripttest\script4.vbs")
End If
Next
End If
oder so:
OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName")
If (InStr(OS, "XP")) > 0 Then
ShellObject.Run ("c:\scripttest\scriptXP.vbs")
ElseIf (InStr(OS, "Win7")) > 0 Then
For i = 0 To UBound(Groups)
If InStr(Groups(i), "1. Vergleichstext") > 0 Then
ShellObject.Run ("c:\scripttest\script1.vbs")
ElseIf InStr(Groups(i), "2. Vergleichstext") > 0 Then
ShellObject.Run ("c:\scripttest\script2.vbs")
ElseIf InStr(Groups(i), "3. Vergleichstext") > 0 Then
ShellObject.Run ("c:\scripttest\script3.vbs")
ElseIf InStr(Groups(i), "4. Vergleichstext") > 0 Then
ShellObject.Run ("c:\scripttest\script4.vbs")
End If
Next
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:OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName")
Const strGroupName = "Gruppenname"
If (InStr(OS, "XP")) > 0 Then
ShellObject.Run ("c:\scripttest\scriptXP.vbs")
ElseIf (InStr(OS, "Win7")) > 0 Then
If InStr(Join(Groups), strGroupName) > 0 Then
ShellObject.Run ("c:\scripttest\script1.vbs")
EndIf
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
Hallo Mario!
Was die "
Grüße
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 ...
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:OS = ShellObject.RegRead("HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\ProductName")
AllGroups = Join(Groups)
If (InStr(OS, "XP")) > 0 Then
ShellObject.Run ("c:\scripttest\scriptXP.vbs")
ElseIf (InStr(OS, "Win7")) > 0 Then
If InStr(AllGroups, "1. Vergleichstext") > 0 Then
ShellObject.Run ("c:\scripttest\script1.vbs")
ElseIf InStr(AllGroups, "2. Vergleichstext") > 0 Then
ShellObject.Run ("c:\scripttest\script2.vbs")
ElseIf InStr(AllGroups, "3. Vergleichstext") > 0 Then
ShellObject.Run ("c:\scripttest\script3.vbs")
ElseIf InStr(AllGroups, "4. Vergleichstext") > 0 Then
ShellObject.Run ("c:\scripttest\script4.vbs")
End If
End If
bastla