使用Powershell脚本重命名主机名

时间:2019-03-19 05:25:49

标签: powershell amazon-ec2

我正在使用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 个答案:

答案 0 :(得分:2)

你为什么要这么做...

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

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

..与仅使用内置的NIC /网络cmdlet来获取IPA作为简单字符串一样。

(Get-NetIPAddress).IPv4Address

获取系统主机名是每个Windows主机上的默认系统变量。只需使用:

env:COMPUTERNAME 

$hostname

您应该能够按照以下文章中的说明进行操作。

Rename-Computer -NewName 'SomeHostname' -Restart

Dynamically rename an AWS Windows host deployed via a syspreped AMI

  
      
  1. 部署Windows Server 2016 AMI

  2.   
  3. 连接到Windows实例并根据需要对其进行自定义

  4.   
  5. 创建一个启动PowerShell脚本以设置将在无人参与的安装开始之前在启动时调用的主机名

  6.   
  7. 运行InitializeInstance.ps1 -Schedule以注册计划的任务,该任务将在下次启动时初始化实例

  8.   
  9. 修改sysprepInstance.ps1以在sysprep完成之后和关闭之前替换cmdline注册表项

  10.   
  11. 运行SysprepInstance.ps1来对计算机进行sysprep。

  12.   
#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

How to rename an AWS EC2 instance during provisioning using PowerShell

重命名计算机-NewName'SomeHostname'-重新启动

How to change & verify hostname in 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

要验证姓名格式,请输入:

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

另一种验证cmd名称形式的方法是,不带任何参数键入“ hostname”:

  hostname