<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: Переназначение принтсервера]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=5043</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5043&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Переназначение принтсервера».]]></description>
		<lastBuildDate>Fri, 15 Oct 2010 09:17:56 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[VBS: Переназначение принтсервера]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=40463#p40463</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (manofsan)]]></author>
			<pubDate>Fri, 15 Oct 2010 09:17:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=40463#p40463</guid>
		</item>
	</channel>
</rss>
