<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: Переназначение принтсервера]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5043&amp;type=atom" />
	<updated>2010-10-15T09:17:56Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=5043</id>
		<entry>
			<title type="html"><![CDATA[VBS: Переназначение принтсервера]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40463#p40463" />
			<content type="html"><![CDATA[<p>Столкнулся с проблемой переброса принтеров на другой принтсервер<br />Долго нудно скучно но вот что получилось:<br /></p><div class="codebox"><pre><code>Dim PrnName &#039; имя установленного принтера
Dim Printers &#039; коллекция установленных принтеров
Dim WshNetwork, FSO &#039; объекты серверов автоматизации
Dim TextStream &#039; объект файлового потока лога
Dim i &#039; счётчик, флаг
Dim PrinterPath &#039; имя устанавливаемого принтера
Dim Tmp &#039;временная переменная
&#039;============================================================
LogPath = &quot;C:\Data\Documents\PrintersConnection.txt&quot; &#039; путь к файлу лога
NetworkPr = &quot;C:\Data\Documents\NetworkPr.txt&quot; &#039; путь к файлу c сетевыми принтерами

&#039;============================================================

Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
&#039;FSO.CreateFolder &quot;C:\Data\Documents\&quot; &#039;создание папки если надо
Set TextStream = FSO.OpenTextFile(LogPath, 2, True) &#039;создание файла лога
Set NetworkPr = FSO.OpenTextFile(NetworkPr, 2, True) &#039;создание файла с сетевыми принтерами

Set WshNetwork = CreateObject(&quot;WScript.Network&quot;)
Set Printers = WshNetwork.EnumPrinterConnections &#039;получение списка принтеров
i = 0
While i &lt;= Printers.Count-1 &#039;цикл счета кол-ва устройств
    PrnName = Printers.Item(i+1) &#039;счетчик устройств
    If Left(PrnName, 2) = &quot;\\&quot; Then &#039; только сетевые принтеры
        Tmp = Right(PrnName, 8) &#039;вырезание нужной части (при условии что у Вас монотонные названия сет. принтеров)
    NetworkPr.WriteLine Tmp &#039;запись в файл имен принтеров
        WshNetwork.RemovePrinterConnection PrnName
    Else
    If Err.Number Then &#039;если ошибка 
            TextStream.WriteLine &quot;не удалось удалить сетевой принтер: &quot; &amp; PrnName &#039;комент ошибкт
            TextStream.WriteLine Err.Number &amp; &quot; &quot; &amp; Err.Description &#039;комент ошибкт
            Err.Clear
        Else
    End If
    TextStream.WriteLine &quot;обнаружен несетевой принтер: &quot; &amp; PrnName &#039;Запись в файл не сетевых принтеров
    End If
    i = i+2
Wend
&#039;===========================================================

Tmp = 0 &#039;обнуление временной переменной
NetworkPr.Close
NetworkPr = &quot;C:\Data\Documents\NetworkPr.txt&quot;
i = True
Set tsLog = FSO.OpenTextFile(NetworkPr, 1,True)
Do While Not tsLog.AtEndOfStream
 Tmp = tsLog.ReadLine 
 PrinterPath = &quot;\\mokwps01\&quot;&amp;Tmp
 WshNetwork.AddWindowsPrinterConnection PrinterPath
If Err.Number Then
            TextStream.WriteLine &quot;не удалось подключить принтер: &quot; &amp; PrinterPath
            TextStream.WriteLine Err.Number &amp; &quot; &quot; &amp; Err.Description
            Err.Clear
        Else
            TextStream.WriteLine &quot;подключён принтер: &quot; &amp; PrinterPath
End If
If i Then
            WshNetwork.SetDefaultPrinter PrinterPath
            If Err.Number Then
                TextStream.WriteLine &quot;не удалось назначить принтером по умолчанию: &quot; &amp; PrinterPath
                TextStream.WriteLine Err.Number &amp; &quot; &quot; &amp; Err.Description
                Err.Clear
            Else
                TextStream.WriteLine &quot;принтер назначен принтером по умолчанию: &quot; &amp; PrinterPath
                i = False
            End If
        End If
&#039;Else
&#039;End If
Loop
MsgBox (&quot;^O-O^ Задание выполнено насяльника&quot;)

tsLog.close
TextStream.Close</code></pre></div>]]></content>
			<author>
				<name><![CDATA[manofsan]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25495</uri>
			</author>
			<updated>2010-10-15T09:17:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40463#p40463</id>
		</entry>
</feed>
