Показать полную графическую версию : Помогите написать скрипт
Есть терминальный сервер на Win 2003, к которому подключаются пользователи под своими логинами с разных компьютеров. К компьютерам подключены принтеры и установлены на терминальнике. Необходимо написать скрипт, который бы выбирал по умолчанию конкретный принтер при подключении пользователя. Есть пожелание, реализовать через IP адрес клиентского компьютера.
А разве к учетной записи не прикреплены принтеры сразу в терминале? Если я не ошибаюсь для каждой учетной записи должны прикреплены свои принтеры, и зайдя на любой комп со своей учеткой будет свой принтер
А разве к учетной записи не прикреплены принтеры сразу в терминале? Если я не ошибаюсь для каждой учетной записи должны прикреплены свои принтеры, и зайдя на любой комп со своей учеткой будет свой принтер »
Да прикреплены. Но нужно чтоб выбирался другой принтер, т.к. пользователь может пересесть за другой комп и принтер уже другой будет.
Tonny_Bennet
31-05-2012, 12:38
Давайте определимся с принтерами. Это сетевые принтеры или принтеры, подключенные к компьютерам и к ним общий доступ открыт? Или это всё локальные принтеры терминального сервера?
Давайте определимся с принтерами. Это сетевые принтеры или принтеры, подключенные к компьютерам и к ним общий доступ открыт? Или это всё локальные принтеры терминального сервера? »
Это принтеры подключенные к клиентским компьютерам. И к ним открыт общий доступ и все они установлены на терминальном сервере.
Tonny_Bennet
31-05-2012, 14:13
Нашёл (http://shserg.ru/posts/script-add-network-shared-printer-set-as-default-printer/) практически готовое решение. Нужно только текстовый файл в котоом будет список адресов компов и список принтеров
192.168.0.1 \\PrintServerName\SharedPrinterName
192.168.0.2 \\PrintServer\SharedPrinte3
192.168.0.3 \\Print2\Shared4
Ну и дописать кусок который подставляет нужный принтер
DmitriiV
31-05-2012, 14:26
1.... написать скрипт, который бы выбирал по умолчанию конкретный принтер при подключении пользователя...Каким образом сценарий должен узнавать, кому и какой принтер подключать?
2....Есть пожелание, реализовать через IP адрес клиентского компьютера...Какой в этом смысл?
3. Сеть одноранговая или доменная?
Tonny_Bennet
31-05-2012, 15:03
Каким образом сценарий должен узнавать, кому и какой принтер подключать? »
Скрипт получает адрес подключившегося к терминальному серверу клиента. Исходя из таблицы соответствия
192.168.0.1 \\PrintServerName\SharedPrinterName
192.168.0.2 \\PrintServer\SharedPrinte3
192.168.0.3 \\Print2\Shared4 »
лежащей в отдельном файле, выбирает принтер и назначает его по умолчанию.
Tonny_Bennet
31-05-2012, 15:22
Тут (http://www.ctrl-alt-del.com.au/files/GETTSCIP.zip) лежит файл *.exe при запуске которого с терминала показывается IP адрес клиента. Как он это делает мне неизвестно да и не нужно :)
DmitriiV
31-05-2012, 16:44
Tonny_Bennet, все поставленные мной вопросы адресованы автору темы.
Tonny_Bennet
31-05-2012, 17:11
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/download/details.aspx?id=24449
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.