переименовать имя хоста используя скрипт powershell - PullRequest
0 голосов
/ 19 марта 2019

Я клонирую экземпляр, используя золотое изображение в AWS, и пытаюсь переименовать экземпляр, используя IP-адрес.Дело в том, что я могу клонировать, и переменная $ ipaddress содержит соответствующий IP-адрес, но я не могу получить имя хоста.

foreach ($key in $SystemTypes.Keys) {
  [String]$value = $SystemTypes[$key]

    #$value = $($SystemTypes[$key])
    $ipaddarray = $value.split('.')

    $ipaddress = $ipaddarray[0]+'.'+$ipaddarray[1]+'.'+$ipaddarray[2]+'.'+$ipaddarray[3]    

    Write-Host "the type is $key"
    Write-Host "the ip is  $ipaddress"
    Write-Host $value
    $object = Get-WmiObject -Class win32_operatingsystem -ComputerName $ipaddress -Credential $MylocalCreds    
     $hostname = $object.__server

1 Ответ

2 голосов
/ 19 марта 2019

Зачем ты это делаешь ...

$ipaddarray = $value.split('.')

    $ipaddress = $ipaddarray[0]+'.'+$ipaddarray[1]+'.'+$ipaddarray[2]+'.'+$ipaddarray[3] 

.. против использования встроенных команд NIC / сети для получения IPA в виде простой строки.

(Get-NetIPAddress).IPv4Address

Получение имени системного хоста является системной переменной по умолчанию на каждом хосте Windows. Просто используйте:

env:COMPUTERNAME 

или

$hostname

Вы должны уметь делать только то, что описано в статьях ниже.

Rename-Computer -NewName 'SomeHostname' -Restart

Динамическое переименование хоста AWS Windows, развернутого через AMI syspreped

  1. Развертывание Windows Server 2016 AMI

  2. Подключиться к экземпляру Windows и настроить его по необходимости

  3. Создайте сценарий запуска PowerShell для установки имени хоста, которое будет вызываться при загрузке до начала автоматической установки

  4. Запустите InitializeInstance.ps1 -Schedule для регистрации запланированного задания, которое инициализирует экземпляр при следующей загрузке

  5. Измените файл SysprepInstance.ps1, чтобы заменить раздел реестра cmdline после завершения sysprep и до завершения работы

  6. Запустите SysprepInstance.ps1, чтобы выполнить sysprep для машины.

#Set my hostname based on my internal IP address
$instanceName = (((Invoke-WebRequest -UseBasicParsing -Uri http://169.254.169.254/latest/meta-data/hostname).Content).split(".")[0]).replace("ip-172-31","TCG")

#Change the hostname in the unattend.xml file
$filePath = "C:\Windows\Panther\Unattend.xml"
$AnswerFile = [xml](Get-Content -Path $filePath)
$ns = New-Object System.Xml.XmlNamespaceManager($answerFile.NameTable)
$ns.AddNamespace("ns", $AnswerFile.DocumentElement.NamespaceURI)
$ComputerName = $AnswerFile.SelectSingleNode('/ns:unattend/ns:settings[@pass="specialize"]/ns:component[@name="Microsoft-Windows-Shell-Setup"]/ns:ComputerName', $ns)
$ComputerName.InnerText = $InstanceName
$AnswerFile.Save($filePath)

#Start the OOBE
Start-Process C:\windows\system32\oobe\windeploy.exe -Wait

Как переименовать экземпляр AWS EC2 во время подготовки с использованием PowerShell

Rename-Computer -NewName 'SomeHostname' -Restart

Как изменить и проверить имя хоста в Windows Server 2012 (AWS EC2)

Способ 1. Откройте cmd и введите: SCONFIG, и вы получите меню выбора, где № 2 говорит имя компьютера:

Способ 2. Из типа cmd:

netdom renamecomputer %computername% /newname:<NewName> /reboot:0

Способ 3. Из консоли PowerShell:

netdom renamecomputer $env:computername /newname:<NewName> /reboot:0

Чтобы проверить форму имени, введите cmd:

nbtstat -A xxx.xxx.xxx.xxx (where x is the ip address)

Еще один способ проверить форму имени cmd, просто набрать «hostname» без параметров:

  hostname
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...