2011-02-03 60 views
2

當前正在處理從當前用戶信息讀出的腳本ActiveDirectory服務器nad檢查組以查看他們需要的打印機。在VBS中匹配字符串

我們所遇到的是都在努力要解決的問題,使用內置的功能InStr那裏試圖將組名稱匹配的對象,像這樣:

高達 GG_Room13

cn=GG_RoomA1,dc=Security Group cn=GG_RoomA2,dc=Security Group ... 

這個字符串去

'EDC Room A1 
If InStr(strGroup, lcase(GG_RoomA1)) Then 
    objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA1_P002765" 
    objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmA1_P002765" 
End if 

的變量如下:

  • strGroup |是羣體
  • GG_RoomA1的大串是恆定的設定,並具有cn=cn=GG_RoomA1

問題的值,其中有是,如果你一組GG_RoomA10的會員,您也將獲得GG_RoomA1

有沒有一種方法,我們可以專門匹配只有一個與下列因素有關組,

整個代碼是在這裏。

Option Explicit 
'On error resume next 
'Declare Variables 
Dim objNetwork, objUser, CurrentUser, strGroup, objFSO, Printers, i 

'Declare Constant Groups for Printer Locations 
Const GG_RoomA1 = "cn=GG_RoomA1" 
Const GG_RoomA2 = "cn=GG_RoomA2" 
Const GG_RoomA4 = "cn=GG_RoomA4" 
Const GG_RoomA6 = "cn=GG_RoomA6" 
Const GG_RoomA7 = "cn=GG_RoomA7" 
Const GG_RoomA8 = "cn=GG_RoomA8" 
Const GG_Room_CopiersA6_A8 = "cn=GG_Room_CopiersA6-A8" 
Const GG_RoomA9 = "cn=GG_RoomA9" 
Const GG_RoomA10 = "cn=GG_RoomA10" 
Const GG_RoomL1 = "cn=GG_RoomL1" 
Const GG_RoomL7 = "cn=GG_RoomL7" 
Const GG_RoomL9 = "cn=GG_RoomL9" 
Const GG_RoomC1 = "cn=GG_RoomC1" 
Const GG_RoomC3 = "cn=GG_RoomC3" 
Const GG_Room2 = "cn=GG_Room2" 
Const GG_Room3 = "cn=GG_Room3" 
Const GG_Room4_5 = "cn=GG_Room4&5" 
Const GG_Room6 = "cn=GG_Room6" 
Const GG_Room8_9 = "cn=GG_Room8&9" 
Const GG_Room10L = "cn=GG_Room10L" 
Const GG_Room10R = "cn=GG_Room10R" 
Const GG_Room11 = "cn=GG_Room11" 
Const GG_Room12 = "cn=GG_Room12" 
Const GG_Room12A = "cn=GG_Room12A" 
Const GG_Room12B = "cn=GG_Room12B" 
Const GG_Room13 = "cn=GG_Room13" 
Const GG_Room14_15 = "cn=GG_Room14&15" 
Const GG_Room16 = "cn=GG_Room16" 
Const GG_Room17 = "cn=GG_Room17" 
Const GG_Room_FRAnnexeA = "GG_Room_FRAnnexeA" 
Const GG_Room_FRAnnexeB = "GG_Room_FRAnnexeB" 
Const GG_Room_FRAnnexeC = "GG_Room_FRAnnexeC" 
Const GG_Room_FR02 = "GG_Room_FR02" 
Const GG_Room_FR05 = "GG_Room_FR05" 
Const GG_Room_FR10 = "GG_Room_FR10" 
Const GG_Room_FR11 = "GG_Room_FR11" 
Const GG_Room_FR13 = "GG_Room_FR13" 
Const GG_Room_FR14 = "GG_Room_FR14" 
Const GG_Room_FR16 = "GG_Room_FR16" 
Const GG_Room_Ruiz = "GG_Room_Ruiz" 
Const GG_Room_NLAdmin = "GG_Room_NLAdmin" 
Const GG_Room_NLManagers = "GG_Room_NLManagers" 
Const GG_Room_NLShared = "GG_Room_NLShared" 
Const GG_Room_NLSupport = "GG_Room_NLSupport" 
Const GG_Room_Shepwell = "GG_Room_Shepwell" 

Set objNetwork = CreateObject("WScript.Network") 
Set objUser = CreateObject("ADSystemInfo") 
Set CurrentUser = GetObject("LDAP://" & objUser.UserName) 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
strGroup = LCase(Join(CurrentUser.MemberOf)) 

'Remove all Network printers but not local printers 

Set Printers = objNetwork.EnumPrinterConnections 

For i = 0 to Printers.Count - 1 Step 2 

    If Left(ucase(Printers.Item(i+1)),2) = "\\" Then 
     'WScript.Echo Printers.Item(i+1) 
     objNetwork.RemovePrinterConnection Printers.Item(i+1) 
    End If 
Next 

'EDC Room A1 
If InStr(strGroup, lcase(GG_RoomA1)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA1_P002765" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmA1_P002765" 
End if 

'EDC Room A2 
If InStr(strGroup, lcase(GG_RoomA2)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA2_P002280" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA2_ARM207" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmA2_P002280" 
End if 

'EDC Room A4 
If InStr(strGroup, lcase(GG_RoomA4)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA4_P002012" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA4_P002175" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA4_P000169" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA4_P002874" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmA4_P002012" 
End if 

'EDC Room A5 and A6 
If InStr(strGroup, lcase(GG_RoomA6)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA5_P001710" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA5_P000640" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA6_P002821" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA6_MX3100N" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmA6_P002821" 
End if 

'EDC Room A7 
If InStr(strGroup, lcase(GG_RoomA7)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA7_P000804" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA7_P002241" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA7_ARM350" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmA7_P002241" 
End if 

'EDC Room A8 
If InStr(strGroup, lcase(GG_RoomA8)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA8_P001720" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA8_P002820" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA8_P002861" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA8_MX550U" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmA8_P002820" 
End if 

'EDC Room A6-A8 Copiers 
If InStr(strGroup, lcase(GG_Room_CopiersA6_A8)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA6_MX3100N" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA8_MX550U" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA7_ARM350" 
End if 

'EDC Room A9 
If InStr(strGroup, lcase(GG_RoomA9)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA9_P002011" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA9_P002819" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmA9_P002819" 
End if 

'EDC Room A10 
If InStr(strGroup, lcase(GG_RoomA10)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA10_P002827" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA6_MX3100N" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmA10_P002827" 
End if 

'EDC Room L1 
If InStr(strGroup, lcase(GG_RoomL1)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmL1_IRC2880" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmL1_P000474" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmL1_P002420" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmL1_P002420" 
End if 

'EDC Room L7 
If InStr(strGroup, lcase(GG_RoomL7)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmL7_P002603" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmL7_P002260" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmL7_MX363N" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmL7_P002603" 
End if 

'EDC Room L9 
If InStr(strGroup, lcase(GG_RoomL9)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmL9_P000930" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmL9_P000930" 
End if 

'EDC Room C1 
If InStr(strGroup, lcase(GG_RoomC1)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmC1_P000476" 
'objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\???" 
'objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\???" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmC1_P000476" 
End if 

'EDC Room C3 
If InStr(strGroup, lcase(GG_RoomC3)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmC3_P002828" 
'objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\???" 
'objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\???" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmC3_P002828" 
End if 

'EDC Room 2 
If InStr(strGroup, lcase(GG_Room2)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm2_P000229" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRM2_P000442" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm2_P000229" 
End if 

'EDC Room 3 
If InStr(strGroup, lcase(GG_Room3)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm3_P001736" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm3_P001736" 
End if 

'EDC Room 4 & 5 
If InStr(strGroup, lcase(GG_Room4_5)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm4&5_P000751" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRM4&5_P001904" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm4&5_P000751" 
End if 

'EDC Room 6 
If InStr(strGroup, lcase(GG_Room6)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm6_P002806" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRM6_P002562" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm6_P002806" 
End if 

'EDC Room 8 & 9 
If InStr(strGroup, lcase(GG_Room8_9)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm8&9_P001775" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm8&9_P001775" 
End if 

'EDC Room 10L 
If InStr(strGroup, lcase(GG_Room10L)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm10_P002379" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm10_P002380" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm10_P002764" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm10_P002380" 
End if 

'EDC Room 10R 
If InStr(strGroup, lcase(GG_Room10R)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm10_P002379" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm10_P002380" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm10_P002764" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm10_P002379" 
End if 

'EDC Resource Room (Room 11) 
If InStr(strGroup, lcase(GG_Room11)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm11_MX4501N" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm11_MX700U" 
End if 

'EDC Room 12 
If InStr(strGroup, lcase(GG_Room12)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm12_P002224" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm12_P002224" 
End if 


'EDC Room 12A 
If InStr(strGroup, lcase(GG_Room12A)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm12A_P000786" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm12A_P000792" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm12A_P000786" 
End if 

'EDC Room 12B 
If InStr(strGroup, lcase(GG_Room12B)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm12B_P002781" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm12B_P002781" 
End if 

'EDC Room 13 
If InStr(strGroup, lcase(GG_Room13)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm13_P001784" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm13_P002818" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm13_P002818" 
End if 

'EDC Room 14 & 15 
If InStr(strGroup, lcase(GG_Room14_15)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRM14&15_P002782" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm14&15_P002782" 
End if 

'EDC Room 16 
If InStr(strGroup, lcase(GG_Room16)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm16_P001360" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm16_P001512" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm16_P001512" 
End if 

'EDC Room 17 
If InStr(strGroup, lcase(GG_Room17)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm17_P001045" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRm17_P001936" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm16_P001512" 
End if 


'Field Road Admin 
'IS THIS NEEDED - IS FR16 the same thing 
'If InStr(strGroup, lcase(GG_Room???)) Then 
'objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRAdmin_P000230" 
'objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRAdmin_P000525" 
'objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRm16_P001512" 
'End if 

'Field Road AnnexeA SEN 
If InStr(strGroup, lcase(GG_Room_FRAnnexeA)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRAnnexe_P002809" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRAnnexe_P002805" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRAnnexeSEN_ARM256" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\FRAnnexe_P002805" 
End if 

'Field Road AnnexeB DISABILITY 
If InStr(strGroup, lcase(GG_Room_FRAnnexeB)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRAnnexe_P002312" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRAnnexeDIS_ARM256" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\FRAnnexe_P002312" 
End if 

'Field Road AnnexeC LAC 
If InStr(strGroup, lcase(GG_Room_FRAnnexeC)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRAnnexeLAC_P000991" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRAnnexeLAC_P001050" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\FRAnnexeLAC_P001050" 
End if 

'Field Road FR02 
If InStr(strGroup, lcase(GG_Room_FR02)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRMain_MX3100N" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRMain_MX363N" 
End if 


'Field Road FR05 
If InStr(strGroup, lcase(GG_Room_FR05)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRMain_P002436" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\FRMain_P002436" 
End if 

'Field Road FR10 
If InStr(strGroup, lcase(GG_Room_FR10)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRRm10_P000438" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\FRRm10_P000438" 
End if 


'Field Road FR11 
If InStr(strGroup, lcase(GG_Room_FR11)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRRm11_P002013" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\FRRm11_P002013" 
End if 


'Field Road FR13 
If InStr(strGroup, lcase(GG_Room_FR13)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRRm13_P001049" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\FRRm13_P001049" 
End if 


'Field Road FR14 
If InStr(strGroup, lcase(GG_Room_FR14)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRRm14_P001041" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\FRRm14_P001041" 
End if 


'Field Road FR16 
If InStr(strGroup, lcase(GG_Room_FR16)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRAdmin_P000230" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRAdmin_P000525" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\FRAdmin_P000230" 
End if 

'Field Road RUIZ 
If InStr(strGroup, lcase(GG_Room_Ruiz)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRRuiz_P001072" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRRuiz_P001867" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\FRRuiz_MX283N" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\FRRuiz_P001867" 
End if 

'New Leaf Admin 
If InStr(strGroup, lcase(GG_Room_NLAdmin)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCNL_IRC3580" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCNL_P002871" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCNL_P002871" 
End if 

'New Leaf Managers 
If InStr(strGroup, lcase(GG_Room_NLManagers)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCNL_P002306" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCNL_P002206" 
End if 

'New Leaf Shared 
If InStr(strGroup, lcase(GG_Room_NLShared)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCNL_IRC3580" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCNL_IRC3580" 
End if 

'New Leaf Support 
If InStr(strGroup, lcase(GG_Room_NLSupport)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCNL_P002016" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCNL_P002016" 
End if 

'Shepwell 
If InStr(strGroup, lcase(GG_Room_Shepwell)) Then 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\SHEP_P000436" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\SHEP_P002017" 
objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\SHEP_P002017" 
objNetwork.SetDefaultPrinter "\\edw-sr-img\SHEP_P000436" 
End if 


Dim answer 
answer=MsgBox("Printer Script is Complete!",0,"Confirmation") 


'End Printer Script 
WScript.Quit 

回答

2

望着組字符串,它看起來像所有的房間都有它背後的一個逗號,所以你可以改變你的If到:

If InStr(LCase(strGroup), LCase(GG_RoomA1 & ",")) Then 

所以,如果有一個逗號右後邊的那個房間字符串時,它只會匹配,或者如果最後一個房間不會有一個逗號後面,你可以做以下組合:

If InStr(LCase(strGroup), LCase(GG_RoomA1 & ",")) Or LCase(Right(strGroup, Len(GG_RoomA1))) = LCase(GG_RoomA1) Then 
2

如果我沒有理解這個權利,你有可能是一個字符串:

GG_RoomA10 

GG_RoomA1 

而且要匹配只有一個,但如果它不匹配RoomA1是Room10。

你可以嘗試:

'Matches A1 but not A10 
If InStr(strGroup, lcase(GG_RoomA1)) AND NOT InStr(strGroup, lcase(GG_RoomA10)) 

這將返回以下結果:

"GG_RoomA1" = true 
"GG_RoomA10" = false 
"GG_RoomA1/GG_RoomA10" = false 

所以,如果他們相互獨立,IE的,絕不會出現在同一個字符串,你是好去。如果它們出現在同一個字符串中,它會變得更復雜一些。你只需要一個建議,你的代碼設計有點重複,這通常表示設計不好,你可能想回到這個設計圖(IE,你有DB連接性)嗎? if和not的整個負載將很難維持。

+0

的代碼是由另一所學院中,他轉身向我求助製成,我不知道VBScript的線索,這是一個漫長的過程對我解釋的想法,如字典和循環等,但他說,這是他唯一的問題,如果他能通過它,他會很高興,當他可以檢查,看看你的答案是否工作不正確接受。 – RobertPitt 2011-02-03 13:05:47

+0

這個問題說,它會上升到13號房間,所以你不得不改變,它不是11,12或13。 – 2011-02-03 13:07:38

0

一個更好的辦法來做到這一點是使用For Each處理組一次一個,而不是依靠子串方法。

Set objNetwork = CreateObject("WScript.Network") 
Set objUser = CreateObject("ADSystemInfo") 
Set CurrentUser = GetObject("LDAP://" & objUser.UserName) 

For Each strGroup in CurrentUser.MemberOf 
    strGroupPath = "LDAP://" & strGroup 
    Set objGroup = GetObject(strGroupPath) 
    strGroupName = objGroup.CN 

    ' Set up printers based on group 
    If strGroupName = "GG_RoomA1" Then 
     objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA1_P002765" 
     objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmA1_P002765" 
    End If 

    If strGroupName = "GG_RoomA2" Then 
     objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA2_P002280" 
     objNetwork.AddWindowsPrinterConnection "\\edw-sr-img\EDCRmA2_ARM207" 
     objNetwork.SetDefaultPrinter "\\edw-sr-img\EDCRmA2_P002280" 
    End If 

    'TODO: Handle other groups 
Next