Цель: На компьютере под управлением Windows Server 2008 R2 используйте PowerShell 2.0 для:
- Переименуйте компьютер
- Присоедините компьютер к домену
Условие: Шаги 1 и 2 должны выполняться вместе, то есть без перезагрузки компьютера между ними.
Функции, которые я использую
Это функции PowerShell, которые я создал для каждого шага.
Переименовать компьютер
Согласно моим исследованиям в Интернете, PowerShell 2.0 в один момент перед выпуском имел встроенный командлет с именем Rename-Computer, но он был удален по причинам, неизвестным в CTP 3. Моя версия использует WMI.
function Rename-Computer
{
param ( [Parameter(Mandatory=$true)][string]$name )
process
{
try
{
$computer = Get-WmiObject -Class Win32_ComputerSystem
$result = $computer.Rename($name)
switch($result.ReturnValue)
{
0 { Write-Host "Success" }
5
{
Write-Error "You need administrative rights to execute this cmdlet"
exit
}
default
{
Write-Host "Error - return value of " $result.ReturnValue
exit
}
}
}
catch
{
Write-Host "Exception occurred in Rename-Computer " $Error
}
}
}
Присоединить компьютер к домену
Как вы можете видеть, эта функция действительно просто оболочка для встроенного командлета Add-Computer, который собирает имя домена и создает некоторые учетные данные для использования.
function Join-ComputerToDomain
{
param ( [Parameter(Mandatory=$true)][string]$domain )
process
{
try
{
$_domainCredential = $Host.UI.PromptForCredential("Enter domain credentials", "Enter domain credentials to be used when joining computer to the domain", "", "NetBiosUserName")
Add-Computer -DomainName $_domain -cred $_domainCredential
}
catch
{
Write-Error "Exception occurred in Join-ComputerToDomain " $Error
}
}
}
Шаги, которые я пробовал
Попытка 1
- Вызов Переименовать-компьютер
- Вызов Join-ComputerToDomain
- Restart
Результат: Вывод из Rename-Computer указывает, что имя было изменено, но после перезагрузки имя не изменилось, но скомпилировано к домену
Попытка 2
- Вызов Join-ComputerToDomain
- Вызов Переименовать-компьютер
- Restart
Результат: Возвращаемое значение из Rename-Computer - 1326 (сбой входа в систему: неизвестное имя пользователя или неверный пароль). Я предполагаю, что это связано с тем, что учетные данные домена необходимы для переименования после присоединения к домену. Я попытался использовать учетные данные с вызовом Get-WmiObject в Rename-Computer, но он сделал ошибку в том, что не мог использовать разные учетные данные в локальной системе.
Попытка 3
- Вызов Переименовать-компьютер
- Restart
- Вызов Join-ComputerToDomain
- Restart
Результат: Все работает так, как ожидалось, но требуется дополнительный перезапуск. Работает, но я хочу исключить перезапуск на шаге 2.