<?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=8974&amp;type=atom" />
	<updated>2013-12-16T11:16:48Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8974</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78183#p78183" />
			<content type="html"><![CDATA[<p>Получилось как то так (оформил процедурой в большом коде скрипта регистрации ПК):<br /></p><div class="codebox"><pre><code>&#039; *** Процедура переименовывает ПК пользователя ********************************************************
Sub Rename_PC (HostName)
On Error Resume Next
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adCmdText = &amp;H0001
Set objConnection = CreateObject(&quot;ADODB.Connection&quot;)
Set objRecordSet = CreateObject(&quot;ADODB.Recordset&quot;)
strPathtoTextFile = &quot;C:\Sbersign\&quot; &#039;Путь к каталогу с файлом, содержащим имена ПК, подлежащие переименованию
objConnection.Open &quot;Provider=Microsoft.Jet.OLEDB.4.0;&quot; &amp; &quot;Data Source=&quot; &amp; strPathtoTextFile &amp; &quot;;&quot; &amp; &quot;Extended Properties=&quot;&quot;text;HDR=YES;FMT=Delimited&quot;&quot;&quot;
objRecordset.Open &quot;SELECT * FROM PC.csv&quot;, objConnection, adOpenStatic, adLockOptimistic, adCmdText &#039;Имя файла, содержащего имена ПК, подлежащие переименованию
Do Until objRecordset.EOF
    if HostName=objRecordset.Fields.Item(&quot;Old_Name_PC&quot;) then
        Name_PC = objRecordset.Fields.Item(&quot;New_Name_PC&quot;)
        Password = &quot;пароль_пользователя&quot;
        Username = &quot;домен\пользователь&quot;
        Set objWMIService = GetObject(&quot;Winmgmts:root\cimv2&quot;)
      &#039; Call always gets only one Win32_ComputerSystem object.
        For Each objComputer in objWMIService.InstancesOf(&quot;Win32_ComputerSystem&quot;)
            Return = objComputer.rename(Name_PC,Password,Username)
            If Return &lt;&gt; 0 Then
              Call WriteTOLogFile ( Now() &amp; &quot; ПК не переименован. Код ошибки = &quot; &amp; Err.Number)
              Exit Sub
            Else
              Call WriteTOLogFile ( Now() &amp; &quot; ПК успешно переименован. Необходима перезагрузка ПК.&quot;)
              Exit Sub
            End If
        Next
    end if
    objRecordset.MoveNext
Loop
Set objConnection = Nothing
Set objRecordSet = Nothing
End Sub</code></pre></div><p>Работает на ура. Ещё раз - спасибо!</p><p>Кстати, работает на Windows 7. На Windows XP не работает. Не работает анализ файла. Переименование работает и на ХР.</p>]]></content>
			<author>
				<name><![CDATA[komr]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25457</uri>
			</author>
			<updated>2013-12-16T11:16:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78183#p78183</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78100#p78100" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Евген пишет:</cite><blockquote><p>Google....</p></blockquote></div><p>Евген, спасибо! Это то, что доктор прописал. Работает. Компики уже активно переименовываются.<br />Не очень понял, зачем там цикл в коде..., я ещё тот программист :-), но прикрутить анализ файла получилось. В понедельник выложу код, который у меня в итоге получился.</p><p>А Гугл да, видимо, такие вещи надо искать на англоязычных ресурсах. Учту.</p>]]></content>
			<author>
				<name><![CDATA[komr]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25457</uri>
			</author>
			<updated>2013-12-13T20:39:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78100#p78100</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78088#p78088" />
			<content type="html"><![CDATA[<p>Google....</p><div class="codebox"><pre><code>Dim Name, Password, Username

Name = &quot;iWS-011&quot;

Password = &quot;password&quot;

Username = &quot;domain\Administrator&quot;

Set objWMIService = GetObject(&quot;Winmgmts:root\cimv2&quot;)

&#039; Call always gets only one Win32_ComputerSystem object.

For Each objComputer in _

   objWMIService.InstancesOf(&quot;Win32_ComputerSystem&quot;)

       Return = objComputer.rename(Name,Password,Username)

       If Return &lt;&gt; 0 Then

&#039;wscript.echo &quot;Rename failed. Error Code = &quot; &amp; Err.Number

    Else

          &#039;WScript.Echo &quot;Rename succeeded.&quot; &amp; _

              &#039;&quot; Reboot for new name to go into effect&quot;

&#039;wscript.echo &quot;Successfully Changed Hostname&quot;    

End If

Next</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Евген]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25253</uri>
			</author>
			<updated>2013-12-13T06:37:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78088#p78088</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78073#p78073" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>komr пишет:</cite><blockquote><p>...<br />Вариант с&nbsp; утилитой PsExec.exe не подойдёт, т.к. для её работы надо чтобы на удаленном и локальном ПК функционировали службы «Сервер» и «Рабочая станция». У нас это всё выключено.<br />...</p></blockquote></div><p>Кстати, я не подразумевал запуск скрипта на удаленном ПК, а только лишь запуск с помощью PsExec на локальной машине командной строки с указанием логина-пароля другой учётки.</p><p>Например, что-то типа такого батника:<br /></p><div class="codebox"><pre><code>
cd /d c:\kuku
psexec.exe /accepteula -u домен\vasia.pupkin -p Vasia_password &quot;%windir%\system32\wscript.exe&quot; &quot;renamePC.vbs&quot; 
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2013-12-12T14:29:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78073#p78073</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78071#p78071" />
			<content type="html"><![CDATA[<p>Код получился такой:<br /></p><div class="codebox"><pre><code>Dim WshNetwork : Set WshNetwork = WScript.CreateObject(&quot;WScript.Network&quot;)
Dim strOldComputerName : strOldComputerName = WshNetwork.ComputerName
Dim fso : Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Dim strLog : strLog = &quot;c:\log_renamePC.txt&quot;
strComputerName = InputBox(&quot;Enter a new machine name for this computer:&quot;, &quot;Rename Computer : &quot; &amp; strOldComputerName)

strUsername = &quot;adm_pk&quot;
strPassword = &quot;xxxxxxx&quot;
strNamespace = &quot;root\cimv2&quot;

&#039;on error resume next
Set objWbemLocator = CreateObject(&quot;WbemScripting.SWbemLocator&quot;)
Set objWMIService = objwbemLocator.ConnectServer(strComputerName, strNamespace, strUser, strPassword)
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy

if Err.Number &lt;&gt; 0 then
 WScript.Echo &quot;Authentication failed: &quot; &amp; Err.Description
end if

Set objWMIService = GetObject(&quot;winmgmts:&quot; &amp; &quot;{impersonationLevel=impersonate}!\\&quot; &amp; &quot;.&quot; &amp; &quot;\root\cimv2&quot;)
Set colComputers = objWMIService.ExecQuery (&quot;Select Name from Win32_ComputerSystem&quot;)
For Each objComputer in colComputers
    On Error Resume Next
    Err.Clear
    intErrorCode = objComputer.Rename(strComputerName)
    If intErrorCode &lt;&gt; 0 OR Err.Number&lt;&gt;0 Then
        Dim sErr : sErr = Err.Description
        Set objOutputFile = fso.OpenTextFile(strLog, 8, true)
        objOutputFile.WriteLine( now() &amp; vbTab &amp; strOldComputerName &amp; vbTab &amp; strComputerName &amp; vbTab &amp; &quot;Error: &quot;  &amp;_
            CStr(intErrorCode) &amp; &quot; -- &quot; &amp; sErr) 
        objOutputFile.Close
        Set objOutputFile = Nothing
        MsgBox &quot;Error renaming computer. Error # &quot; &amp; intErrorCode &amp; vbCrLf &amp; sErr
    Else
        Set objOutputFile = fso.OpenTextFile(strLog, 8, true)
        objOutputFile.WriteLine( now() &amp; vbTab &amp; strOldComputerName &amp; vbTab &amp; strComputerName &amp; vbTab &amp; &quot;OK&quot; )
        objOutputFile.Close
        Set objOutputFile = Nothing
        MsgBox &quot;Computer renamed. It will now reboot.&quot;
        objShell.Run &quot;shutdown.exe -r -f -t 0&quot;
    End If
Next</code></pre></div>]]></content>
			<author>
				<name><![CDATA[komr]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25457</uri>
			</author>
			<updated>2013-12-12T14:10:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78071#p78071</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78070#p78070" />
			<content type="html"><![CDATA[<p>Попробовал, выходит ошибка &quot;сервер RPC не доступен&quot;.</p>]]></content>
			<author>
				<name><![CDATA[komr]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25457</uri>
			</author>
			<updated>2013-12-12T14:08:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78070#p78070</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78063#p78063" />
			<content type="html"><![CDATA[<p>Посмотрите примеры по ссылкам <br /><a href="http://social.technet.microsoft.com/Forums/scriptcenter/en-US/cb110326-39a5-40b2-affa-cfbbaf4f7f2f/vbscript-trying-to-use-different-user-credentials-on-remote-machine">VBScript: Trying to use different user credentials on remote machine</a><br />MSDN - <a href="http://msdn.microsoft.com/en-us/library/aa393720%28VS.85%29.aspx">SWbemLocator.ConnectServer method</a></p>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2013-12-12T10:57:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78063#p78063</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78055#p78055" />
			<content type="html"><![CDATA[<p>Попробовал - мой комп переименовался. Большое спасибо! Но у меня есть все права. Осталось придумать, как этот код запустить с нужными правами на клиентской машине.</p><p>Вариант с&nbsp; утилитой PsExec.exe не подойдёт, т.к. для её работы надо чтобы на удаленном и локальном ПК функционировали службы «Сервер» и «Рабочая станция». У нас это всё выключено.</p><p>Переименовать надо порядка 3 сотен ПК. Заниматься переговорами с пользователями или ручное переименование - не варианты. Нужно автоматическое решение, отрабатывающее по файлу с именами ПК. Скрипт уже есть, осталось понять, как запустить его на локальном ПК от имени доменного пользователя, у которого есть права на переименование ПК в домене.</p>]]></content>
			<author>
				<name><![CDATA[komr]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25457</uri>
			</author>
			<updated>2013-12-12T07:19:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78055#p78055</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78038#p78038" />
			<content type="html"><![CDATA[<p>А сколько ж машин в списке?</p><p>Может проще сделать пользователям рассылку, чтобы в связи с критично важными для их дальнейшей работы они обязательно связывались с Вами (или коллегами Вашими) с просьбой подключиться для переименования машины? </p><p>Или по списку машин <strong>задизейблить </strong>соответствующий список (например, партиями, если список большой) юзеров - <strong>юзер звонит-жалуется</strong>, а по ходу его разблокировки машину админкой <strong>и переименовываете</strong><img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><br /><p>Или &quot;приковать к станку&quot; (т.е. к списку машин) нескольких админов - пускай внаглую подключаются и переименовывают.</p><br /><br /><p><em>p.s. по скрипту автоматизации ничего не скажу, т.к. такой необычной и разовой задачи лично у меня не было.</em></p><br /><p>Нагуглил для Вас, вот, такое: <a href="http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_23005396.html">Renaming of Computer&#039;s Name using VBScript</a></p><div class="codebox"><pre><code>
Dim WshNetwork : Set WshNetwork = WScript.CreateObject(&quot;WScript.Network&quot;)
Dim strOldComputerName : strOldComputerName = WshNetwork.ComputerName
Dim fso : Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Dim strLog : strLog = &quot;c:\log_renamePC.txt&quot;

strComputerName = InputBox(&quot;Enter a new machine name for this computer:&quot;, &quot;Rename Computer : &quot; &amp; strOldComputerName)
Set objWMIService = GetObject(&quot;winmgmts:&quot; &amp; &quot;{impersonationLevel=impersonate}!\\&quot; &amp; &quot;.&quot; &amp; &quot;\root\cimv2&quot;)
Set colComputers = objWMIService.ExecQuery (&quot;Select Name from Win32_ComputerSystem&quot;)
For Each objComputer in colComputers
    On Error Resume Next
    Err.Clear
    intErrorCode = objComputer.Rename(strComputerName)
    If intErrorCode &lt;&gt; 0 OR Err.Number&lt;&gt;0 Then
        Dim sErr : sErr = Err.Description
        Set objOutputFile = fso.OpenTextFile(strLog, 8, true)
        objOutputFile.WriteLine( now() &amp; vbTab &amp; strOldComputerName &amp; vbTab &amp; strComputerName &amp; vbTab &amp; &quot;Error: &quot;  &amp;_
            CStr(intErrorCode) &amp; &quot; -- &quot; &amp; sErr) 
        objOutputFile.Close
        Set objOutputFile = Nothing
        MsgBox &quot;Error renaming computer. Error # &quot; &amp; intErrorCode &amp; vbCrLf &amp; sErr
    Else
        Set objOutputFile = fso.OpenTextFile(strLog, 8, true)
        objOutputFile.WriteLine( now() &amp; vbTab &amp; strOldComputerName &amp; vbTab &amp; strComputerName &amp; vbTab &amp; &quot;OK&quot; )
        objOutputFile.Close
        Set objOutputFile = Nothing
        MsgBox &quot;Computer renamed. It will now reboot.&quot;
        objShell.Run &quot;shutdown.exe -r -f -t 0&quot;
    End If
Next
</code></pre></div><p>Я не тестировал скрипт (хотя и чуть подправил оригинальный) в домене и не знаю - подходит ли это для доменных машин. А, если подходит, то можно, например, создать батник, стартующий этот скрипт от имени у/з админа утилитой PsExec.exe, раскидать на машины: батник,&nbsp; PsExec, скрипт и список (скрипт доработать до поиска в списке нового имени машины&nbsp; по текущему имени + протоколирование работы для разбора полёта), организовать запуск батника.</p>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2013-12-11T19:33:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78038#p78038</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78029#p78029" />
			<content type="html"><![CDATA[<p>Актуально!!! Хоть совет дайте...</p>]]></content>
			<author>
				<name><![CDATA[komr]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25457</uri>
			</author>
			<updated>2013-12-11T17:49:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78029#p78029</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=77967#p77967" />
			<content type="html"><![CDATA[<p>Неужели ни у кого нет готового решения? Всё ещё актуально.</p>]]></content>
			<author>
				<name><![CDATA[komr]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25457</uri>
			</author>
			<updated>2013-12-10T08:16:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=77967#p77967</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=77886#p77886" />
			<content type="html"><![CDATA[<p>Тестировал netdom - не работает. На всех сетевых ПК политиками отключено всё, что только можно, наверняка проблема в этом (в лог netdom пишет что не найден сетевой путь). Скриптом VBS на ПК можно сделать всё, что надо, только не знаю как. Прошу помощи!</p>]]></content>
			<author>
				<name><![CDATA[komr]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25457</uri>
			</author>
			<updated>2013-12-07T09:57:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=77886#p77886</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=77878#p77878" />
			<content type="html"><![CDATA[<p>Гуглю уже второй час - один netdom рулит... Что за дела такие? При логоне в домене можно запустить скрипт от имени system, т.е. с админскими правами на данном ПК. Для переименования в домене нужны логин и пароль пользователя, обладающего нужными правами... ну что ж, можно забить их явно в скрипт, если очень надо.</p>]]></content>
			<author>
				<name><![CDATA[komr]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25457</uri>
			</author>
			<updated>2013-12-06T15:37:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=77878#p77878</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS переименование ПК в домене]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=77874#p77874" />
			<content type="html"><![CDATA[<p>Есть текстовый файл, содержащий строки; в строке, через запятую, текущее имя ПК в домене и новое.<br />Задача: запустить скрипт при логоне ПК в домене и переименовать ПК по найденному в файле вхождению.<br />Прошу помочь, собственно, с самим скриптом. Поиск что то не помог, только netdom предлагает использовать.</p>]]></content>
			<author>
				<name><![CDATA[komr]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25457</uri>
			</author>
			<updated>2013-12-06T12:33:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=77874#p77874</id>
		</entry>
</feed>
