我发现了一篇关于Rename the guest OS to match the virtual machine name on Hyper-V的文章,要重命名计算机名称以匹配vm的名称。问题是这个脚本必须附加在虚拟机上,如果我想改变它,那将很难。
是否可以从主机重命名vm计算机的名称?
答案 0 :(得分:2)
尝试一下,你可以在主机上运行它。目前它只打印旧的和新的vm名称的消息。我在代码中留下了两个选项(注释掉)来重命名机器。请记住,计算机应该是可解析的,最好是域的一部分(您可能需要从vm名称中删除域扩展名)。
Get-WmiObject -Namespace root\virtualization\v2 -Class Msvm_ComputerSystem | Where-Object {$_.ElementName -ne $env:COMPUTERNAME} | ForEach-Object {
$newName = $_.ElementName
$_.GetRelated('Msvm_KvpExchangeComponent').GuestIntrinsicExchangeItems | ForEach-Object {
if($_ -as [xml])
{
$GuestExchangeItemXml = ([XML]$_).SelectSingleNode("/INSTANCE/PROPERTY[@NAME='Name']/VALUE[child::text()='FullyQualifiedDomainName']")
if ($GuestExchangeItemXml -ne $null)
{
$vmName = $GuestExchangeItemXml.SelectSingleNode("/INSTANCE/PROPERTY[@NAME='Data']/VALUE/child::text()").Value -replace '\W','_'
$vmName = $vmName.Substring(0,[System.Math]::Min(15,$vmName.Length))
#(Get-WmiObject Win32_Computersystem -ComputerName $vmName).Rename($newName); shutdown -r -t 0
#Rename-Computer -ComputerName $vmName -NewName $newName -Restart -Force -WhatIf
Write-Host "Renaming $vmName to $newName"
}
}
}
}
答案 1 :(得分:1)
使用Rename-Computer
cmdlet:
Rename-Computer -ComputerName OldServerName -NewName NewServerName -Restart -Force
Rename-Computer
不使用Powershell远程处理,因此即使没有启用远程命令也可以运行。请参阅docs。
答案 2 :(得分:0)
如果您能够通过网络连接到远程主机,则可以更改guest虚拟机中的主机名。
$oldname = 'foo'
$newname = 'bar'
(Get-WMIObject Win32_ComputerSystem -Computer $oldname).Rename($newname)
Restart-Computer $oldname
答案 3 :(得分:0)
这是简单的命令,通过power shell执行它
(gwmi win32_computersystem)。重命名(“NewName”); shutdown -r -t 0
答案 4 :(得分:0)
这里很短
调用命令-VMName “VM名称这里” -ScriptBlock { 重命名计算机-NewName“此处输入新名称” }