Скрипт изменения имени компьютера
Есть текстовый файл, содержащий строки; в строке, через запятую, текущее имя ПК в домене и новое.
Задача: запустить скрипт при логоне ПК в домене и переименовать ПК по найденному в файле вхождению.
Прошу помочь, собственно, с самим скриптом. Поиск что то не помог, только netdom предлагает использовать.
Смена имени компьютера через командную строку [CMD]
Для начала нам необходимо запустить командную строку с правами администратора, для этого выполните действия -> Заходим в "Выполнить"[Win+R] -> Вписываем - cmd -> Нажимаем на клавиатуре сочетание клавиш "CTRL"+"SHIFT"+"ENTER". Всё! Приступаем.
Для начала, наверное, нужно посмотреть имя ПК, командой - hostname, а после, сделав выводы о том, что оно вас не устраивает, приступать к его изменению 😀 :
Для смены имени компьютера воспользуйтесь командой:
Так же покажу на своём примере. Я решил переименовать ПК в - "DC".(Рис.9)
После ввода команды, ПК нужно перезагрузить. Раз уж начали в CMD, то и продолжим в CMD. Перезагружаемся командой - shutdown -r:
Рис.9 - Смена имени ПК через командную строку и перезагрузка.
После перезагрузки опять открываем командную строку и проверяем поменялось ли имя ПК, командой - hostname:(Рис.10)
Рис.10 - Проверяем поменялось ли имя ПК, командой Hostname.
Как видим в выводе команды написано - "DC", а это значит, что смена имени ПК через командную строку прошла успешно. 🙂
Examples
Parameters
Renames the specified remote computer. The default is the local computer.
Type the NetBIOS name, an IP address, or a fully qualified domain name of a remote computer. To specify the local computer, type the computer name, a dot ( . ), or localhost .
This parameter does not rely on PowerShell remoting. You can use the ComputerName parameter of Rename-Computer even if your computer is not configured to run remote commands.
Type: | String |
Position: | Named |
Default value: | Local Computer |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Prompts you for confirmation before running the cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies a user account that has permission to connect to the domain. Explicit credentials are required to rename a computer that is joined to a domain.
Type a user name, such as User01 or Domain01\User01 , or enter a PSCredential object, such as one generated by the Get-Credential cmdlet.
If you type a user name, this cmdlet prompts you for a password.
To specify a user account that has permission to connect to the computer that is specified by the ComputerName parameter, use the LocalCredential parameter.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Forces the command to run without asking for user confirmation.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies a user account that has permission to connect to the computer specified by the ComputerName parameter. The default is the current user.
Type a user name, such as User01 or Domain01\User01 , or enter a PSCredential object, such as one generated by the Get-Credential cmdlet.
If you type a user name, this cmdlet prompts you for a password.
To specify a user account that has permission to connect to the domain, use the DomainCredential parameter.
Type: | PSCredential |
Position: | Named |
Default value: | Current User |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies a new name for the computer. This parameter is required.
Standard names may contain letters ( a-z ), ( A-Z ), numbers ( 0-9 ), and hyphens ( - ), but no spaces or periods ( . ). The name may not consist entirely of digits, and may not be longer than 63 characters
Type: | String |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Returns the results of the command. Otherwise, this cmdlet does not generate any output.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indicates that this cmdlet restarts the computer that was renamed. A restart is often required to make the change effective.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Shows what would happen if the cmdlet runs. The cmdlet is not run.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
The default value is Default.
For more information about the values of this parameter, see AuthenticationMechanism Enumeration.
Credential Security Service Provider (CredSSP) authentication, in which the user credentials are passed to a remote computer to be authenticated, is designed for commands that require authentication on more than one resource, such as accessing a remote network share. This mechanism increases the security risk of the remote operation. If the remote computer is compromised, the credentials that are passed to it can be used to control > the network session.
This parameter was introduced in Windows PowerShell 3.0.
Type: | String |
Accepted values: | Default, Basic, Negotiate, CredSSP, Digest, Kerberos |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Example 2: Rename a remote computer
This command renames the Srv01 computer to Server001 . The computer is not restarted.
The DomainCredential parameter specifies the credentials of a user who has permission to rename computers in the domain.
The Force parameter suppresses the confirmation prompt.
Example 2: Rename a remote computer
This command renames the Srv01 computer to Server001 . The computer is not restarted.
The DomainCredential parameter specifies the credentials of a user who has permission to rename computers in the domain.
The Force parameter suppresses the confirmation prompt.
Смена имени компьютера через командную строку [PowerShell]
Для начала нам необходимо запустить PowerShell c правами администратора, для этого выполните действия -> Заходим в "Выполнить"[Win+R] -> Вписываем - powershell -> Нажимаем на клавиатуре сочетание клавиш "CTRL"+"SHIFT"+"ENTER". Всё! Приступаем.
Для начала посмотрим имя ПК[Оно хранится в переменной - $env:COMPUTERNAME](Рис.11):
Как видим: Имя моего ПК - DESKTOP-AREI4D1
Рис.11 - Просмотр имени ПК.
Для смены имени компьютера воспользуйтесь командой:
Как вы уже знаете - Для того чтобы cмена имени ПК завершилась, требуется перезагрузка.
Обратите внимание что в команде присутствует опция -Restart, а это значит, что ПК после ввода команды, сразу же перезагрузится. Можно конечно, удалить -Restart, взять паузу и перезагрузить ПК тогда, когда вам это будет необходимо, командой - Restart-Computer.
Добрый день. Нужен скрипт который бы выполнял следующее:
Есть список компов (comp1, comp2. ) Нужно пройтись по списку и удаленно переименовать эти рабочие станции в домене, так чтобы названия стали с префиксом к примеру www-comp1. Выполняться скрипт будет от учётной записи, которая имеет удаленный доступ к данным рабочим станциям.
Добавить компьютер в Домен
Доброго времени суток ! Обращаюсь к вам за помощью. Необходимо написать запрос в PowerShell.
Компьютер долго входит в домен!
Добрый день Всем! ПОдскажите пожалуйста, почему компьютер с windows xp долго входит в домен windows.
Не могу ввести в домен 2012R2 компьютер с win7prof
Из-за ПО egois, которое обязательна с 2016 года переустановил винду с XP на вин7проф 32 бита. И.
При установленном касперском компьютер долго входит в домен
На компьютере с Win XP Установлен Касперский 14. При включении компьютер долго (несколько минут).
Есть список компов (comp1, comp2. ) Нужно пройтись по списку и удаленно переименовать эти рабочие станции в домене, так чтобы названия стали с префиксом к примеру www-comp1
PS C:\>$a = Import-Csv ServerNames.csv -Header OldName, NewName
PS C:\>Foreach ( $Server in $a ) mainCredential Domain01\Admin01 -Force -Restart>
Эта команда переименовывает несколько компьютеров в домене. Она использует CSV-файл для указания значений дл
я текущих и новых имен компьютеров. CSV-файл содержит ряд пар имен в формате "СтароеИмя, НовоеИмя": по одной
паре имен в каждой строке файла.
Первая команда использует командлет Import-Csv, чтобы импортировать файл ServerNames.csv в переменную $a. Он
а использует параметр Header, чтобы указать имена заголовков столбцов для каждого из двух столбцов. В переме
нной $a создается коллекция пользовательских объектов, каждый из которых имеет свойство OldName и NewName.
Вторая команда выполняет командлет Rename-Computer для каждого объекта в переменной $a. Она указывает старое
имя (значение свойства OldName) для значения параметра ComputerName и новое имя (значение свойства NewName)
для значения параметра NewName. Команда задает учетные данные домена и использует параметры Force и Restart
для отключения всех запросов к пользователю и перезагрузки каждого компьютера после переименования.
А сами машинки локально переименуются? И они буду в своих контейнерах AD?
Добавлено через 1 минуту
Я думал что скрипт должен выполянься удаленно на машинках с последующей перезагрузкой.
Вам кто-то мешает прочить справку или самостоятельно протестировать работу этой команды?
Эта команда задает для компьютера Srv01 имя Server044, а затем перезапускает его, чтобы изменения вступили в
силу. Она использует параметр LocalCredential для предоставления учетных данных пользователя, имеющего разр
ешение на подключение к локальному компьютеру, и параметр DomainCredential для предоставления учетных данных
пользователя, имеющего разрешение на переименование компьютеров в домене.
5 Ответ от komr 2013-12-11 21:49:46
Актуально. Хоть совет дайте.
Example 1: Rename the local computer
This command renames the local computer to Server044 and then restarts it to make the change effective.
Examples
3 Ответ от komr 2013-12-07 13:57:56
Тестировал netdom - не работает. На всех сетевых ПК политиками отключено всё, что только можно, наверняка проблема в этом (в лог netdom пишет что не найден сетевой путь). Скриптом VBS на ПК можно сделать всё, что надо, только не знаю как. Прошу помощи!
Outputs
This cmdlet returns a ComputerChangeInfo object, if you specify the PassThru parameter. Otherwise, it does not return any output.
The Rename-Computer cmdlet renames the local computer or a remote computer. It renames one computer in each command.
This cmdlet was introduced in Windows PowerShell 3.0.
2 Ответ от komr 2013-12-06 19:37:36
Гуглю уже второй час - один netdom рулит. Что за дела такие? При логоне в домене можно запустить скрипт от имени system, т.е. с админскими правами на данном ПК. Для переименования в домене нужны логин и пароль пользователя, обладающего нужными правами. ну что ж, можно забить их явно в скрипт, если очень надо.
Смена имени компьютера через графический интерфейс Windows [GUI]
И так заходим в "Панель управления"(Рис.1) -> "Система".(Рис.2)
Рис.1 - Панель управления.
В окне "Система" находим раздел "Имя компьютера, имя домена и параметры рабочей группы", справа нажимаем на надпись - "Изменить параметры".(Рис.2)
Рис.2 - Система.
Откроется окно - "Свойства системы".(Рис.3) [Кстати сразу же открыть это окно можно через "Выполнить", вписав туда - sysdm.cpl]
На первой вкладке - "Имя компьютера" нажимаем кнопку - "Изменить".
Рис.3 - Свойства системы.
Откроется еще одно окно - "Изменение имени компьютера или домена".(Рис.4)
Рис.4 - Изменения имени компьютера или домена.
В строке - "Имя компьютера" вписываем, удобное для нас, имя компьютера. В моем случае я поменял на - "CONTROLLER", и жмём - "ОК".(Рис.5)
Рис.5 - Изменяем имя компьютера.
Закрываем окно - "Свойства системы".(Рис.7)
Рис.7 - Закрываем окно "Свойства системы".
Получаем предложение - "Перезагрузить ПК сейчас" или "Перезагрузить ПК позже".(Рис.8)
У меня ничего стороннего не запущено, и в сохранении ничего не нуждается. Короче перезагружаемся.
Рис.8 - Предложение перезагрузки ПК.
После перезагрузки проверяйте "Панель управления"(Рис.1) -> "Система"(Рис.2) Имя компьютера должно поменяться.
6 Ответ от Rom5 2013-12-11 23:33:21 (изменено: Rom5, 2013-12-12 00:45:39)
А сколько ж машин в списке?
Может проще сделать пользователям рассылку, чтобы в связи с критично важными для их дальнейшей работы они обязательно связывались с Вами (или коллегами Вашими) с просьбой подключиться для переименования машины?
Или по списку машин задизейблить соответствующий список (например, партиями, если список большой) юзеров - юзер звонит-жалуется, а по ходу его разблокировки машину админкой и переименовываете
Или "приковать к станку" (т.е. к списку машин) нескольких админов - пускай внаглую подключаются и переименовывают.
p.s. по скрипту автоматизации ничего не скажу, т.к. такой необычной и разовой задачи лично у меня не было.
Я не тестировал скрипт (хотя и чуть подправил оригинальный) в домене и не знаю - подходит ли это для доменных машин. А, если подходит, то можно, например, создать батник, стартующий этот скрипт от имени у/з админа утилитой PsExec.exe, раскидать на машины: батник, PsExec, скрипт и список (скрипт доработать до поиска в списке нового имени машины по текущему имени + протоколирование работы для разбора полёта), организовать запуск батника.
The Rename-Computer cmdlet renames the local computer or a remote computer. It renames one computer in each command.
This cmdlet was introduced in Windows PowerShell 3.0.
Outputs
This cmdlet returns a ComputerChangeInfo object, if you specify the PassThru parameter. Otherwise, it does not return any output.
В этой статье мы рассмотрим три способа изменения имени компьютера в Windows. Через графический интерфейс[GUI], через командную строку[CMD] и через командную строку[PowerShell].
В новых версиях Windows, зачастую, имя компьютера автоматически генерируется при установке и имеет неудобный вид, для работы в сети. Примерно такой - DESKTOP-12U0F7U или WIN-OPRPPF4CR5Q.
Лично я считаю, что от такого имени компьютера нужно сразу избавляться. Два раза запустите ping, ещё разок пропишете в подключении к удалённому рабочему столу и сойдёте с ума. Конечно, вместо имени можно везде использовать IP-адрес, но это не всегда удобно.
Представленные в статье способы подойдут для смены имени ПК в Windows 7, 8, 8.1, 10, Server 2008, 2012, 2016.
2 Ответ от komr 2013-12-06 19:37:36
Гуглю уже второй час - один netdom рулит. Что за дела такие? При логоне в домене можно запустить скрипт от имени system, т.е. с админскими правами на данном ПК. Для переименования в домене нужны логин и пароль пользователя, обладающего нужными правами. ну что ж, можно забить их явно в скрипт, если очень надо.
Parameters
Renames the specified remote computer. The default is the local computer.
Type the NetBIOS name, an IP address, or a fully qualified domain name of a remote computer. To specify the local computer, type the computer name, a dot ( . ), or localhost .
This parameter does not rely on PowerShell remoting. You can use the ComputerName parameter of Rename-Computer even if your computer is not configured to run remote commands.
Type: | String |
Position: | Named |
Default value: | Local Computer |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Prompts you for confirmation before running the cmdlet.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies a user account that has permission to connect to the domain. Explicit credentials are required to rename a computer that is joined to a domain.
Type a user name, such as User01 or Domain01\User01 , or enter a PSCredential object, such as one generated by the Get-Credential cmdlet.
If you type a user name, this cmdlet prompts you for a password.
To specify a user account that has permission to connect to the computer that is specified by the ComputerName parameter, use the LocalCredential parameter.
Type: | PSCredential |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Forces the command to run without asking for user confirmation.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies a user account that has permission to connect to the computer specified by the ComputerName parameter. The default is the current user.
Type a user name, such as User01 or Domain01\User01 , or enter a PSCredential object, such as one generated by the Get-Credential cmdlet.
If you type a user name, this cmdlet prompts you for a password.
To specify a user account that has permission to connect to the domain, use the DomainCredential parameter.
Type: | PSCredential |
Position: | Named |
Default value: | Current User |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Specifies a new name for the computer. This parameter is required.
Standard names may contain letters ( a-z ), ( A-Z ), numbers ( 0-9 ), and hyphens ( - ), but no spaces or periods ( . ). The name may not consist entirely of digits, and may not be longer than 63 characters
Type: | String |
Position: | 0 |
Default value: | None |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Returns the results of the command. Otherwise, this cmdlet does not generate any output.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indicates that this cmdlet restarts the computer that was renamed. A restart is often required to make the change effective.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Shows what would happen if the cmdlet runs. The cmdlet is not run.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
The default value is Default.
For more information about the values of this parameter, see AuthenticationMechanism Enumeration.
Credential Security Service Provider (CredSSP) authentication, in which the user credentials are passed to a remote computer to be authenticated, is designed for commands that require authentication on more than one resource, such as accessing a remote network share. This mechanism increases the security risk of the remote operation. If the remote computer is compromised, the credentials that are passed to it can be used to control > the network session.
This parameter was introduced in Windows PowerShell 3.0.
Type: | String |
Accepted values: | Default, Basic, Negotiate, CredSSP, Digest, Kerberos |
Position: | Named |
Default value: | None |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Inputs
None
This cmdlet does not have parameters that take input by value. However, you can pipe the values of the ComputerName and NewName properties of objects to this cmdlet.
Inputs
None
This cmdlet does not have parameters that take input by value. However, you can pipe the values of the ComputerName and NewName properties of objects to this cmdlet.
Example 1: Rename the local computer
This command renames the local computer to Server044 and then restarts it to make the change effective.
4 Ответ от komr 2013-12-10 12:16:50
Неужели ни у кого нет готового решения? Всё ещё актуально.
Читайте также: