Цель: На компьютере под управлением Windows Server 2008 R2 используйте PowerShell 2.0 для:
- Переименование компьютера
- Присоединение компьютера к домену
Условие: Шаги 1 и 2 должны выполняться вместе, т. Е. Без перезагрузки компьютера между ними
Используемые функции
Это функции PowerShell, которые я создавал для каждого шага.
Переименование компьютера
Согласно моим исследованиям в Интернете, PowerShell 2.0 на момент до выпуска имел встроенный командлет под названием Переименуйте компьютер , но он был удален по причинам, неизвестным в 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
- Перезагрузка
Результат: Выходные данные Rename-Computer указывают, что имя было изменено, но после перезагрузки имя не изменилось, но компьютер был присоединен к домену
Попытка 2
- Вызов Join-ComputerToDomain
- Call Rename-Computer
- Перезапуск
Результат: Возвращаемое значение от Rename-Computer равно 1326 (Ошибка входа: неизвестный пользовательимя или неверный пароль).Я предполагаю, что это потому, что учетные данные домена необходимы для переименования, когда он присоединен к домену.Я попытался использовать учетные данные с вызовом Get-WmiObject в Rename-Computer, но он выдал ошибку о невозможности использовать другие учетные данные в локальной системе.
Попытка 3
- Вызов Переименование компьютера
- Перезагрузка
- Вызов Join-ComputerToDomain
- Перезапуск
Результат: Все работает как положено, но требуется дополнительный перезапуск.Работает, но я хочу устранить перезапуск на шаге 2.