Как узнать, какая операционная система работает в HyperV VM с Powershell
Итак, вот среда.
Хост: Windows 10
Гости: Server 2012 и Server 2016
Назначение: система разработки для автоматизации рассылки сборок на серверы для тестирования во время разработки.
У меня есть функция Powershell как часть этого сценария полной сборки, которая получает удаленный сеанс PSSession для виртуальной машины, с которой я собираюсь работать. Поскольку виртуальная машина клонируется динамически из базовой системы, на данный момент я не знаю, что такое ОС в виртуальной машине.
Если это виртуальная машина 2016 года, я бы предпочел использовать Powershell Direct для подключения к виртуальной машине.
$session = New-PSSession -VMName $VMName -Credential $VMCredentials
Если это 2012, я должен вернуться к сеансу WinRM по сети. У меня есть код, чтобы получить IP и установить соединение. Работает нормально.
$vm = Get-Vm -Name $VMName
$ips = New-Object System.Collections.Generic.List[System.String]
foreach ($adapter in $vm.NetworkAdapters)
{
foreach ($ip in $adapter.IPAddresses)
{
if($ip -like '*.*')
{
$ips.Add($ip)
}
}
}
$session = New-PSSession -ComputerName $ips[0] -Authentication Negotiate -Credential $VMCredentials
Мне нужно знать, как определить, следует ли мне использовать Powershell Direct (только в 2016 году) или сетевое подключение WinRM (2012 и старше).
Я думаю, что командлеты Hyper-V должны иметь какой-то способ сказать, какая ОС находится на виртуальной машине. Возможно, нет. Я открыт для других способов решения этого тоже. Спасибо!
1 ответ
Unfotunately Get-VM
Командлет не дает никаких сведений о том, на какой ОС работает гостевая виртуальная машина. Поскольку вы пытаетесь выяснить, является ли гостевая ОС Windows Server 2016 или Windows Server 2012, вы можете использовать Get-WMIObject
чтобы получить эту точную информацию.
Использование следующей команды вернет вам номер версии:
Get-WMIObject -Class Win32_OperatingSystem -ComputerName $VMName -Credential $VMCredentials | Select-Object *Version -ExpandProperty Version*
Windows 2012 является версией 6.3.x
в то время как Windows 2016 является версией 10.0.x
,