![]() |
Помогите написать скрипт
Есть терминальный сервер на Win 2003, к которому подключаются пользователи под своими логинами с разных компьютеров. К компьютерам подключены принтеры и установлены на терминальнике. Необходимо написать скрипт, который бы выбирал по умолчанию конкретный принтер при подключении пользователя. Есть пожелание, реализовать через IP адрес клиентского компьютера.
|
А разве к учетной записи не прикреплены принтеры сразу в терминале? Если я не ошибаюсь для каждой учетной записи должны прикреплены свои принтеры, и зайдя на любой комп со своей учеткой будет свой принтер
|
Цитата:
|
Давайте определимся с принтерами. Это сетевые принтеры или принтеры, подключенные к компьютерам и к ним общий доступ открыт? Или это всё локальные принтеры терминального сервера?
|
Цитата:
|
Нашёл практически готовое решение. Нужно только текстовый файл в котоом будет список адресов компов и список принтеров
192.168.0.1 \\PrintServerName\SharedPrinterName 192.168.0.2 \\PrintServer\SharedPrinte3 192.168.0.3 \\Print2\Shared4 Ну и дописать кусок который подставляет нужный принтер |
1.
Цитата:
2. Цитата:
3. Сеть одноранговая или доменная? |
Цитата:
Цитата:
|
Тут лежит файл *.exe при запуске которого с терминала показывается IP адрес клиента. Как он это делает мне неизвестно да и не нужно :)
|
Tonny_Bennet, все поставленные мной вопросы адресованы автору темы.
|
DmitriiV, общался с автором темы в ICQ
|
Вот что я нашел в инете http://www.osp.ru/win2000/2009/06/9846437/
В понедельник проверю на пользователях, на своей машине проверил. Вот что у меня получилось: Dim dbg:dbg=true Dim networkIDs: set networkIDs=CreateObject("Scripting.Dictionary") Dim Nacs, Nac Set Nacs=GetObject("winmgmts://./root/cimv2").ExecQuery("Select IPAddress, IPSubnet from win32_NetworkAdapterConfiguration where IPEnabled=True") For Each Nac in Nacs Dim N If (Not IsNull(Nac.IPAddress)) And (Not IsNull(Nac.IPSubnet)) Then For N=0 to UBound(Nac.IPAddress) NetworkIDs(Nac.IPAddress(N))=vbNullString Next End If Next Dim IDList:IdList=networkIDs.Keys Dim Locations:Set Locations=CreateObject("Scripting.Dictionary") 'Locations ("Z")="192.168.1.7"' Locations ("31")="192.168.2.31" Locations ("32")="192.168.2.32" Locations ("33")="192.168.2.33" Locations ("38")="192.168.2.38" Locations ("49")="192.168.2.49" 'Locations ("45")="192.168.2.45"' 'Locations ("36")="192.168.2.36"' Locations ("50")="192.168.2.50" 'Locations ("61")="192.168.2.61"' 'Locations ("62")="192.168.2.62"' Locations ("39")="192.168.2.39" Locations ("37")="192.168.2.37" Locations ("47")="192.168.2.47" 'Locations ("42")="192.168.2.42"' Locations ("41")="192.168.2.41" 'Locations ("63")="192.168.2.63"' Locations ("60")="192.168.2.60" Locations ("40")="192.168.2.40" 'Locations ("35")="192.168.2.35"' Locations ("34")="192.168.2.34" 'Locations ("4")="192.168.2.4"' Dim SystemLocation SystemLocation=vbNullString Dim MultipleMatches MultipleMatches=False Dim WshShell Set WshShell=CreateObject("WScript.Shell") Dim Session Session=WshShell.ExpandEnvironmentStrings("%SessionName%") If Session = "Console" or Session = "%SessionName%" Then Dim Location For Each Location in Locations.Keys Dim currentId For Each currentID in IDList If dbg Then WScript.Echo "ID:", CurrentID If currentID=Locations(Location) Then If dbg Then WScript.Echo "matched", CurrentID If SystemLocation <> vbNullString Then MultipleMatches = True Else SystemLocation = Location End If End If Next Next End If If Not MultipleMatches Then Dim WshNetwork Set WshNetwork=CreateObject("WScript.Network") Select Case SystemLocation Case "Z" WshNetwork.AddWindowsPrinterConnection "\\192.168.1.251\HP LaserJet P1005" WshNetwork.SetDefaultPrinter "\\192.168.1.251\HP LaserJet P1005" Case "31" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.31\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.31\HP-LaserJet-Professional-P1102" Case "32" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.32\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.32\HP-LaserJet-Professional-P1102" Case "33" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.33\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.33\HP-LaserJet-Professional-P1102" Case "38" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.38\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.381\HP-LaserJet-Professional-P1102" Case "49" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.49\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.49\HP-LaserJet-Professional-P1102" ' Case "45"' ' WshNetwork.AddWindowsPrinterConnection "\\192.168.2.45\HP-LaserJet-Professional-P1102"' ' WshNetwork.SetDefaultPrinter "\\192.168.1.45\HP-LaserJet-Professional-P1102" ' ' Case "36"' ' WshNetwork.AddWindowsPrinterConnection "\\192.168.2.36\HP-LaserJet-Professional-P1102"' ' WshNetwork.SetDefaultPrinter "\\192.168.1.36\HP-LaserJet-Professional-P1102" ' Case "50" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.50\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.50\HP-LaserJet-Professional-P1102" ' Case "61"' ' WshNetwork.AddWindowsPrinterConnection "\\192.168.2.61\HP-LaserJet-Professional-P1102"' ' WshNetwork.SetDefaultPrinter "\\192.168.1.61\HP-LaserJet-Professional-P1102" ' ' Case "62"' ' WshNetwork.AddWindowsPrinterConnection "\\192.168.2.62\HP-LaserJet-Professional-P1102"' ' WshNetwork.SetDefaultPrinter "\\192.168.1.62\HP-LaserJet-Professional-P1102" ' Case "39" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.39\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.39\HP-LaserJet-Professional-P1102" Case "37" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.37\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.37\HP-LaserJet-Professional-P1102" Case "47" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.47\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.47\HP-LaserJet-Professional-P1102" ' Case "42"' ' WshNetwork.AddWindowsPrinterConnection "\\192.168.2.42\HP-LaserJet-Professional-P1102"' ' WshNetwork.SetDefaultPrinter "\\192.168.1.42\HP-LaserJet-Professional-P1102" ' Case "41" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.41\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.41\HP-LaserJet-Professional-P1102" ' Case "63"' ' WshNetwork.AddWindowsPrinterConnection "\\192.168.2.63\HP-LaserJet-Professional-P1102"' ' WshNetwork.SetDefaultPrinter "\\192.168.1.63\HP-LaserJet-Professional-P1102" ' Case "60" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.60\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.60\HP-LaserJet-Professional-P1102" Case "40" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.40\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.40\HP-LaserJet-Professional-P1102" ' Case "35"' ' WshNetwork.AddWindowsPrinterConnection "\\192.168.2.35\HP-LaserJet-Professional-P1102"' ' WshNetwork.SetDefaultPrinter "\\192.168.1.35\HP-LaserJet-Professional-P1102" ' Case "34" WshNetwork.AddWindowsPrinterConnection "\\192.168.2.34\HP-LaserJet-Professional-P1102" WshNetwork.SetDefaultPrinter "\\192.168.1.34\HP-LaserJet-Professional-P1102" ' Case "4"' ' WshNetwork.AddWindowsPrinterConnection "\\192.168.2.4\HP-LaserJet-Professional-P1102"' ' WshNetwork.SetDefaultPrinter "\\192.168.1.4\HP-LaserJet-Professional-P1102" ' Case Else If dbg then WScript.Echo "No matching location found." WScript.Echo "SystemLocation:",SystemLocation End If End Select End If Function NetworkID(Address,Mask) Dim AddresOctets,MaskOktets,Result,N AddressOctets=Split(Address,".") MaskOctets=Split(Mask,".") ReDim Result (UBound(AddressOctets)) For N=0 To UBound(AddressOctets) Result(N)=AddressOctets(N) And MaskOctets(N) Next NetworkID=Join(Result,".") End Function |
Ужас. В МС наверно бы удавились если увидели эти скрипты. Вам же уже совсем-совсем давно сделали GPP в которых можно назначать куда угодно и как угодно таргетинг. http://www.microsoft.com/en-us/downl....aspx?id=24449
|
Время: 10:43. |
Время: 10:43.
© OSzone.net 2001-