PowerShell Direct and DSC
I can also use PowerShell Direct to push DSC configurations very easily and without network connectivity. In this example, I set the DSC Local Configuration Manager of the VM to allow reboot, auto correct the config, and then verify that settings are applied using the Get-DSCLocalConfigurationManager cmdlet:
PS > Invoke-Command -VMName SQL011 -ScriptBlock { configuration LCMConfiguration { Node localhost { LocalConfigurationManager { ConfigurationMode = 'ApplyAndAutoCorrect' RebootNodeIfNeeded = $true RefreshFrequencyMins = 20 } } } LCMConfiguration -OutputPath C:\Scripts\DSC Set-DscLocalConfigurationManager -Path C:\Scripts\DSC Get-DSCLocalConfigurationManager } -Credential $cred
More information about Desired State Configuration: https://www.simple-talk.com/sysadmin/powershell/powershell-desired-state-configuration-the-basics/
You will understand that this new feature has been introduced to simplify your daily tasks.
How PowerShell Direct works in Hyper-V cluster?
The idea is simple; you need to be logged on to the node that hosts the virtual machine that you want to manage. In the following example, if I want to reach the VM01 virtual machine that is located on “node 2”, then I need to connect locally to “node 2” to use the PowerShell Direct feature. Use the “Get-VM” cmdlet to verify this.
PowerShell Direct vs VMConnect
Some of you will surely wonder about the utility of PowerShell Direct despite this article. You will probably wonder what the difference there is between
- Connecting to the Hyper-V host and then using PowerShell Direct to access the VM.
- Opening the “Hyper-V Manager” console and then using “VMConnect” to run your PowerShell command lines in the VM.
I grant you, the gain of time is not obvious. But imagine if you could create a shortcut on your desktop giving you instant access to the VM? By reading an article on the TechNet website, I found this script which is very simple and that will be very useful to you.
The idea is to create a first PowerShell session on your Hyper-V host, and when it is established, a second session will be created to your VM using this time PowerShell Direct:
$VM = "VM01" $HypVServer = "HyperV.domain.local" $cred = Get-Credential $Session = New-PSSession -ComputerName $HypVServer -Credential $cred Invoke-command -Session $Session {Enter-PSSession -VMName $using:VM -credential $using:cred} Enter-PSSession $Session
Then, you simply create a shortcut on your desktop that will execute this:
PS > Powershell.exe -NoExit -File C:\Users\%Username%\Desktop\PSDirectToVM01.ps1
By double clicking on this shortcut, you will have to enter your credentials in order to connect to the VM. You access your host via the network, and then you use VMBus to connect to your VM.
To go Further With Nano Server
To go even further in this line of reasoning, PowerShell Direct takes centre stage if you want to manage a Nano server.
With Windows Nano Server, Microsoft imposes a new way to manage the OS which must be done remotely. With this OS, remote management is driven by PowerShell scripts rather than by more conventional management tools such as the Remote Desktop Connection tool.
To date, the difficulty that sysadmins face when managing Nano Server is that it has no graphical user interface. PowerShell Direct fixes this problem by allowing a simplified Nano Server operation from end-to-end. As soon as you deploy it, you can configure it without any network connectivity, so you will never, in theory, ever need to use the “VMConnect” to manage a Nano Server:
Conclusion
We’ve seen in this article the new PowerShell Direct feature that allows you to interact with the virtual machines on the Hyper-V host. Access to these VMs no longer requires network access, which is a great help to Hyper-V administrators.
I think this is an excellent tool. It goes without saying that one must remain cautious about the security and the management of the accesses. Why? Because it is now possible to access the virtual machines without authorization in the firewall of the virtual machine. Imagine a machine in DMZ area for which it is no longer necessary to open network ports in the firewall because you can connect to it directly via the Hyper-V host? That poses a question, doesn’t it?
That is why, to finish, I advise you study another cool feature released by Microsoft: Just Enough Administration which will be very useful in order to secure access to your VMs.
The article is available at: PowerShell Just Enough Administration’
Создание виртуальной машины Hyper-V
Для запуска процесса создания виртуальной машины, пройдите по пути: меню «Действие», «Создать», «Виртуальная машина…». Далее откроется мастер создания виртуальной машины.
В первом окне «Приступая к работе» нажмите на кнопку «Далее». В следующем окне «Укажите имя и местонахождение» дайте понятное имя для создаваемой виртуальной машины (я назвал «Windows 7×64»), и выберите место для ее сохранения.
По умолчанию, файлы виртуальной машины сохраняются на диске «С» в папке «ProgramData»:
C:\ProgramData\Microsoft\Windows\Hyper-V
На моем компьютере виртуальные машины сохраняются не на системном, а на другом диске в специальной папке («Virtual Machines»). Поэтому, если вы хотите сохранить виртуальную машину не в папке по умолчанию, поставьте галку напротив пункта «Сохранить виртуальную машину в другом месте», а затем выберите папку для сохранения. Папку для хранения файлов виртуальной машины создайте заранее.
В окне «Укажите поколение» по умолчанию выбрано «Поколение 1», которое подойдет для большинства случаев. «Поколение 2» загружается не со всех образов, по существу, это виртуальная машина с UEFI.
В окне «Выделите память» необходимо выбрать объем выделяемой памяти для этой виртуальной машины. Я выделил 2 ГБ памяти со своего компьютера из 8 ГБ.
В следующем окне «Настройка сети» выберите ранее созданный сетевой адаптер (виртуальный коммутатор).
В окне «Подключить виртуальный жесткий диск» отобразится информация об имени виртуальной машины, о ее расположении на жестком диске, объем дискового пространства, выделяемого для виртуальной машины (по умолчанию предлагалось 127 ГБ, я выбрал — 50 ГБ).
Для установки ОС выберите пункт «Установить операционную систему с загрузочного компакт- или DVD-диска». Здесь выберите «Физический CD или DVD-диск» для установки системы с диска, помещенного в оптический привод, или выберите «Файл образа (.iso)» для установки операционной системы непосредственно с ISO образа ОС, который находится на компьютере.
При помощи кнопки «Обзор…» я выбрал образ операционной системы Windows 7 Максимальная SP1 x64, расположенный на внешнем жестком диске, который в данный момент подключен к моему компьютеру.
В окне «Завершение работы мастера создания виртуальной машины» отображена конфигурация созданной виртуальной машины. Нажмите на кнопку «Готово» для завершения создания ВМ.
После применения настроек, в окне «Диспетчер Hyper-V» появится созданная виртуальная машина, и отобразятся ее настройки.
Для запуска процесса установки, выделите виртуальную машину, в контекстном меню выберите «Подключить…».
В открывшемся окне войдите в меню «Действие», выберите команду «Пуск», или просто нажмите на зеленую кнопку «Пуск».
Далее в окне виртуальной машины Windows Hyper-V начнется процесс установки операционной системы на компьютер, в данном случае Windows 7.
На моем сайте вы можете прочитать подробные статьи о процессе установки операционных систем Windows.
Вам также может быть интересно:
- Песочница Windows 10 (Windows Sandbox): безопасная изолированная среда
- Виртуальная машина VMware Workstation
После завершения установки операционной системы, гостевая ОС готова к работе. На этом изображении видно, что на моем (хостовом) компьютере работает операционная система Windows 10, а в окне запущена виртуальная машина Hyper-V с операционной системой Windows 7.
В виртуальной машине можно создавать снимки виртуальной системы (контрольные точки) для того, чтобы сохранить состояние операционной системы на определенный период времени.
Создать контрольную точку можно из окна приложения, Управлять контрольными точками (восстановить состояние виртуальной машины, удалить ненужные точки) можно из раздела «Контрольные точки» в Диспетчере Hyper-V.
Как отключить компонент Hyper-V в Windows 10 — 4 способа
Create VM network switches
Before we create a VM, we want to create VM network switches to provide networking connectivity. We will create four different switches which are capable of providing different types of network connectivity: External, Internal, Private, and NAT.
External VM switch
Connect your VM to the External VM switch to enable network traffic between:
- VM to VM on the same physical server
- VM to parent system (and visa-versa)
- VM to externally located servers (and visa-versa)
Here is how to create the External VM switch using PowerShell. Note that we get the host adapter name to bind the switch to using the adapter name “Ethernet” as it appears in Network Connections. You may need to change this based on your own configuration.
$NetAdapter = Get-NetAdapter -Name "Ethernet" New-VMSwitch -Name "External" -AllowManagementOS $True -NetAdapterName $NetAdapter.Name
Internal VM switch
Connect your VM to the Internal VM switch to enable network traffic between:
- VM to VM on the same physical server
- VM to parent system (and visa-versa)
New-VMSwitch -Name "Internal" -SwitchType Internal
Private VM switch
Connect your VM to the Private VM switch to enable network traffic between:
VM to VM on the same physical server
New-VMSwitch -Name "Private" -SwitchType Private
NAT VM switch
Connect your VM to the NAT VM switch to enable network traffic between:
- VM to VM on the same physical server
- VM to parent and external servers via built-in NAT
The NAT switch is technically the same as an Internal switch, albeit with some additional configuration, currently only accessible via PowerShell!
$SwitchName = "NAT" # Create the Internal switch to use for NAT New-VMSwitch -Name $SwitchName -SwitchType Internal # Create the host interface for the Internal switch. This will be the default gateway used by your NAT'd VMs. New-NetIPAddress –IPAddress 192.168.1.1 -PrefixLength 24 -InterfaceAlias "vEthernet ($SwitchName)" # Create NAT object New-NetNat -Name $SwitchName -InternalIPInterfaceAddressPrefix 192.168.1.0/24
Configure a VM
To configure deeply a VM, you can use the Set-VM PowerShell cmdlet. Below an example:
Set-VM -Name <VM Name>
-ProcessorCount <number of vCPU>
-DynamicMemory
-MemoryMinimumBytes <Minimum Memory>
-MemoryStartupBytes <Startup Memory>
-MemoryMaximumBytes <Maximum Memory>
-AutomaticStartAction <automatic Start Action>
-AutomaticStartDelay <Automatic Start Delay in second>
-AutomaticStopAction <Automatic stop action>
1 |
Set-VM-Name<VM Name> -ProcessorCount<number of vCPU> -DynamicMemory -MemoryMinimumBytes<Minimum Memory> -MemoryStartupBytes<Startup Memory> -MemoryMaximumBytes<Maximum Memory> -AutomaticStartAction<automatic Start Action> -AutomaticStartDelay<Automatic Start Delay insecond> -AutomaticStopAction<Automatic stop action> |
- Name: Name of the VM you would like to edit
- ProcessorCount: number of vCPU that you want to assign to the VM
- DynamicMemory: Enable the Dynamic Memory
- MemoryMinimumBytes: set the minimum memory value
- MemoryStartupBytes: set the startup memory value
- MemoryMaximumBytes: set the maximum memory value
- AutomaticStartAction: action which is run when the Hyper-V service is starting (Nothing, Start, StartIfRunning)
- AutomaticStartDelay: number of second to wait before the automatic start action is run
- AutomaticStopAction: action which is run when the Hyper-V service is stopping (Save, Shutdown, TurnOff)
Below you can find an example of VM configuration with the above command:
If you want to configure the VM with static memory you can use the below command:
Set-VM -Name <VM Name>
-ProcessorCount <number of vCPU>
-StaticMemory
-AutomaticStartAction <automatic Start Action>
-AutomaticStartDelay <Automatic Start Delay in second>
-AutomaticStopAction <Automatic stop action>
1 |
Set-VM-Name<VM Name> -ProcessorCount<number of vCPU> -StaticMemory -AutomaticStartAction<automatic Start Action> -AutomaticStartDelay<Automatic Start Delay insecond> -AutomaticStopAction<Automatic stop action> |
How to Install Hyper-V using PowerShell on a PC
Microsoft offers Hyper-V virtualization software as a free integrated feature with Windows 8.x/10/11 operating systems. This software allows users to run multiple virtual machines or servers on their host computer.
If your PC supports virtualization, installing the Hyper-V Client software is straightforward. In an earlier article, we explained the building and execution of it on Windows 10 using the graphical user interface (GUI). You can easily install it by accessing that article through this link.
Under normal circumstances, one can install any program on a Windows operating system relatively fast and easily. Use command prompts such as CMD or PowerShell to speed up these processes.
Suppose you are a system admin of a company. In that case, you should know PowerShell, a great tool from Microsoft. With this Microsoft tool, you can enable or disable the Hyper-V.
You can easily install Microsoft’s VM software on your computer if you have Win 10 Enterprise, Professional, or Education.
Before proceeding with the installation steps, you should remember that the Home version of Windows 10 does not support this software under normal circumstances, regardless of the build number. However, various installation methods are available even if you have a system with the Home version.
Run the PowerShell tool as an administrator for enabling or removing the program, and try one of the methods below:
- Enable: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
- Disable: Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
Note: When removing HyperV, ensure that “Microsoft-Hyper-V-All” is contiguous in the terminal!
Enabling Hyper-V
Enabling Hyper-V may be simple, but it may take some work for novice users. The following photos will guide you through installing the required applications on your PC.
Step 1
Type “Windows PowerShell” or “PowerShell” into the Win Start menu’s search box to run PowerShell. Choose the desired terminal and click the context menu’s “Run as administrator” option.
Step 2
In the command prompt opened with administrator privileges, type or copy-paste the following command to enable Hyper-V:
Copy
Step 3
Installing Microsoft’s Client Hyper-V application on your Win operating system is in progress. Please wait.
Step 4
After enabling the HyperV feature, press Y (Yes) to apply the changes. Then, restart your machine to complete the process.
Step 5
After restarting your computer, find HyperV Manager in the search menu similarly and run it.
Step 6
The image below shows the first app interface you will encounter when running Hyper-V Manager.
Video
Conclusion
You can use a PowerShell terminal to configure Hyper-V quickly and many other features or programs on your system. You can now construct a new virtual machine on your PC and try installing whatever operating system you like now that you’ve enabled HyperV. Also, you may discover more about HyperV and its features by visiting Microsoft’s sites.
Related Articles
How to Enable Hyper-V Feature with CMDHow to Install a New Virtual Machine with HyperVHow to Install Windows 10 with HyperVHow to Install Windows 7 with HyperVHow to Install Windows 8 with HyperV
In other languages: TR
Установка Hyper-V
Hyper-V является встроенной опцией в Windows Server 2008 и более поздних версиях. Однако, по умолчанию она не активна, поэтому вам нужно настроить ее вручную. Существует три способа включения Hyper-V в ОС Windows:
- системные настройки Windows;
- интерфейс командной строки PowerShell (CLI);
- обслуживание образов развертывания и управление ими (DISM).
Magic RAID Recovery
Лучшее решение для восстановления сложных RAID-систем и утерянных данных.
Скачать сейчас!
Процесс установки Hyper-V с помощью панели управления Windows
Давайте рассмотрим наиболее популярный способ и установим Hyper-V, воспользовавшись панелью управления Windows:
1. В строке поиска на панели задач введите «Настройки» и нажмите «Enter».
2. После того, как вы открыли «Настройки», выберите «Приложения». Далее в разделе «Связанные настройки» справа кликните на «Программы и компоненты».
3. Слева выберите «Включить или отключить компоненты Windows».
4. В диалоговом окне «Компоненты Windows» выберите «Hyper-V» и нажмите «ОК».
После завершения процесса установки Hyper-V перезагрузите компьютер, чтобы применить все необходимые изменения.
Использование Hyper-V Manager
Для полноценной работы с Hyper-V, вам нужно запустить приложение «Диспетчер Hyper-V». Вы найдете его в списке установленных программ.
Диспетчер Hyper-V является своего рода инструментом для серверов. Его можно использовать для запуска виртуальных машин на вашем ПК — в этом случае ваш локальный компьютер работает как локальный сервер виртуализации.
Создание виртуального коммутатора для виртуальных машин Hyper-V
После установки Hyper-V на свой компьютер вы уже можете приступить к созданию новых виртуальных машин. Но перед этим следует подумать о создании виртуального коммутатора, который в дальнейшем будет использоваться для обеспечения связи между виртуальными машинами.
Кроме того, это позволит вам подключать виртуальные машины как к физическим, так и к виртуальным сетям. Также, виртуальные коммутаторы дают возможность переноса виртуальных машин с одного физического хоста на другой.
Вы можете легко создать виртуальный коммутатор с помощью диспетчера Hyper-V, следуя этой пошаговой инструкции:
1. Откройте «Диспетчер Hyper-V» и выберите имя хост-компьютера.
2. В панели быстрого доступа диспетчера Hyper-V кликните на «Действие» и в выпадающем меню выберите «Виртуальный коммутатор».
После того, как откроется «Виртуальный коммутатор», вам следует выбрать, соответствующий вашим задачам, тип из трех возможных:
- Внутренний (Internal): помогает создать виртуальный коммутатор, доступный только для виртуальных машин, работающих на этом физическом компьютере, но не обеспечивающий доступ к физическому сетевому подключению.
- Внешний (External): помогает создать виртуальный коммутатор, который предоставляет доступ виртуальным машинам к физической сети путем привязки к физическому сетевому адаптеру.
- Частный (Private): помогает создать виртуальный коммутатор, который может использоваться виртуальными машинами, работающими только на одном физическом компьютере. Частная сеть позволяет создать изолированную сетевую среду, доступ к которой извне невозможен.
3. Выберите «Создать виртуальный коммутатор».
4. Далее дайте виртуальному коммутатору имя и нажмите «ОК». Параметры по умолчанию в большинстве случаев подходят, но рекомендуем убедиться, что подключение к внешней сети работает. Обязательно выберите сетевой адаптер, который фактически подключен к Интернету, будь то Wi-Fi или проводное соединение.
5. Настройте тип подключения, выбрав «Тип сети», к которой должен подключаться виртуальный коммутатор (внешний, внутренний, частный). В случае, если это будет «Внешняя сеть», следует выбрать тип сетевого адаптера, который вы хотите использовать, и затем поставить галочку на «Разрешить управляющей операционной системе предоставлять доступ к этому сетевому адаптеру».
Hyper-V поддерживает работу с VLAN (IEEE 802.1Q). Вы можете вручную настроить этот идентификатор, который затем будет использоваться для сетевых соединений. Для этого в свойствах виртуальных сетевых интерфейсов поставьте галочку на «Разрешить идентификацию виртуальной локальной сети для управляющей операционной системы» (или «Enable VLAN Identification»). Эта опция доступна для внешнего и внутреннего типа сети.
6. После того, как вы нажмете «ОК», появится следующее диалоговое окно:
7. После того, как вы нажмете «Да», будет создан виртуальный коммутатор. Теперь ваша виртуальная среда может использовать собственную виртуальную сеть для упрощения организации работы нескольких виртуальных машин.
Enabling Dynamic Memory on a Remote Virtual Machine
Let’s say you need to configure the dynamic memory parameter on a virtual machine running on a remote Hyper-V host. Since Hyper-V modules offer the Set-VMMemory PowerShell cmdlet to work with memory parameters of a virtual machine, you can execute the following PowerShell command to modify the Dynamic Memory of a remote virtual machine:
The above command enables Dynamic Memory for SQLVM running on a remote Hyper-V host named “Hyper-VHost1” and configures the required dynamic memory parameters such as minimum memory required, startup memory and the maximum memory that can be used by the virtual machine. This command also helps in setting up the virtual machine priority and buffer values.
Что такое виртуальный коммутатор в среде Hyper-V?
Hyper-V vSwitch — это программно-определяемый коммутатор трафика сети Ethernet, работающий на канальном уровне (layer-2). С его помощью сетевые администраторы могут подключать ВМ как к физическим, так и к виртуальным сетям. Он доступен по умолчанию при установке Hyper-V Manager и содержит улучшенные средства обеспечения безопасности и отслеживания системных ресурсов. Как и в случае других возможностей среды Hyper-V, в состав каждой новой версии Hyper-V входит улучшенная версия vSwitch. В настоящее время коммутатор vSwitch считается очень надежным, но в него продолжают вносить улучшения. Например, в среде Hyper-V 4.0 (той, что в Windows 2012 R2) предусмотрено множество возможностей для внутреннего изолирования и защиты сети от вредоносных ВМ.
Поскольку я не вижу смысла в теории без практики, хотелось бы перейти в Hyper-V Manager и позволить вам самим увидеть и оценить все возможности.
СОЗДАДИМ ВИРТУАЛЬНЫЙ КОММУТАТОР
Виртуальный коммутатор Hyper-V (Hyper-V Extensible Switch) предназначен для организации сетевого взаимодействия между различными ВМ, между ВМ и хостом виртуализации, между ВМ и внешней средой. На самом деле у Hyper-V Extensible Switch обширное количество возможностей, много вкусного появилось в версии 2012 R2. Так что сейчас не будем углубляться в эту тему, и создадим простейший External Switch, который привязывается к сетевой карте Hyper-V Server, и организует взаимодействие ВМ с физической сетью.
Для начала проверим поддержку SR-IOV (Single-Root Input/Output (I/O) Virtualization).
Get-VMHost | Select-Object -Property «Iov*» | Format-List или
Get-NetAdapterSriov
В моем случае поддержки SR-IOV нет. Это связано с тем, что я немного схитрил, и в данной демонстрации у меня Hyper-V сервер запущен не на живом железе, а в виртуальной среде.
Получим список подсоединенных сетевых адаптеров
Get-NetAdapter | Where-Object -PropertyStatus -eqUp
Привязываем виртуальный свитч к сетевому адаптеру и при наличии SR-IOV включим его поддержку.
Внимание: Включить или отключить поддержку SR-IOV после создания свитча будет невозможно, для изменения этого параметра необходимо будет пересоздавать свитч. New-VMSwitch -Name «Extenal_network» -NetAdapterName «Ethernet 2» -EnableIov 1
New-VMSwitch -Name «Extenal_network» -NetAdapterName «Ethernet 2» -EnableIov 1
В моем случае Hyper-V выдает ошибку, опять же связанную с тем, что гипервизор сам запущен в виртуальной среде. На живом железе командлет создаст External Switch с именем «External_network» и привяжет его к сетевому адаптеру Ethernet 2. Виртуальный свитч также появится в списке сетевых адаптеров и на него будет перепривязаны все сетевые параметры физического адаптера Ethernet 2
Проверить можно с помощью командлетов Get-VMSwitch и Get-NetIPConfiguration –Detailed.
На этом этапе первоначальная настройка Hyper-V Server 2012 R2 закончена, и все готово для создания нашей первой виртуальной машины. Но об этом мы поговорим в следующей статье, использовать будем, естественно, PowerShell.
До скорых встреч!
НАСТРОЙКА СЕТЕВЫХ АДАПТЕРОВ
Если сетевые адаптеры до этого не были настроены с помощью sconfig.cmd, сделаем это с помощью командлетов PowerShell.
Смотрим текущую конфигурацию IP на сетевых интерфейсах. В моем случае адресация назначена службой APIPA, так как в сети нет DHCP сервера.
Get-NetIPConfiguration
Назначаем статическую адресацию, маску сети, шлюз по умолчанию и адреса DNS серверов. InterfaceIndex сетевого адаптера берем из вывода предыдущего командлета.
New-NetIPAddress -InterfaceIndex 13 -IPAddress 192.168.1.5 -DefaultGateway 192.168.1.1 -PrefixLength 24
Set-DnsClientServerAddress -InterfaceIndex 13 -ServerAddresses 192.168.1.2,192.168.1.3
Updating Virtual Machine Version
PowerShell can save you a lot of time when it comes to updating the Integration Services version on multiple virtual machines. The Update-VMVersion cmdlet is capable of detecting the Integration Services version on a virtual machine and perform an update if required. For example, the PowerShell command below will update SQLVM to the most recent virtual machine version:
If you need to check and update the version on multiple virtual machines, you can provide a list of virtual machines separated by commas as shown in the following command:
Conclusion
Today we have provided a few handy PowerShell examples that illustrate just how easy it is to perform Hyper-V operational tasks on a remote Hyper-V host using PowerShell. And most of these Hyper-V PowerShell cmdlets offer the “-ComputerName” parameter that can be used to specify the Hyper-V host name against which the operation needs to be performed.
Nirmal Sharma is a MCSEx3, MCITP and Microsoft MVP in Directory Services. He specializes in directory services, Microsoft Azure, Failover clusters, Hyper-V, System Center and Exchange Servers, and has been involved with Microsoft technologies since 1994. In his spare time, he likes to help others and share some of his knowledge by writing tips and articles on various sites and contributing to Health Packs for ADHealthProf.ITDynamicPacks.Net solutions. Nirmal can be reached at [email protected].
Follow ServerWatch on Twitter and on Facebook