首页 > 系统相关 >Windows: 使用PowerShell管理Hyper-V虚拟机

Windows: 使用PowerShell管理Hyper-V虚拟机

时间:2024-06-14 20:57:25浏览次数:26  
标签:Hyper Windows 虚拟机 TestVM 会话 VMName PowerShell

Hyper-V是Windows操作系统中强大的虚拟化平台,通过Hyper-V,用户可以创建和管理虚拟机(VM)。作为计算机专业人士,我们可能更倾向于使用命令行工具来高效地管理系统。在Windows上,PowerShell是一个功能强大的命令行工具,可以用来管理Hyper-V虚拟机。本文将详细介绍如何使用PowerShell管理Hyper-V虚拟机,包括创建、配置、启动和监控虚拟机。
在这里插入图片描述

一、启用Hyper-V功能

在使用PowerShell管理Hyper-V之前,您需要确保已启用Hyper-V功能。可以通过以下步骤启用Hyper-V:

  1. 打开PowerShell,以管理员身份运行。
  2. 输入以下命令以启用Hyper-V功能:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
  1. 系统会提示重新启动以完成安装,输入Y并回车进行重启。

二、使用PowerShell管理Hyper-V

1. 创建虚拟机

创建一个新的虚拟机是使用Hyper-V的第一步。以下命令将创建一个名为“TestVM”的虚拟机:

New-VM -Name "TestVM" -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath "C:\HyperV\TestVM\TestVM.vhdx" -NewVHDSizeBytes 20GB -Path "C:\HyperV\TestVM"
  • -Name:指定虚拟机的名称。
  • -MemoryStartupBytes:指定启动时分配给虚拟机的内存。
  • -Generation:指定虚拟机的代数(Generation 2)。
  • -NewVHDPath:指定虚拟硬盘文件的路径。
  • -NewVHDSizeBytes:指定虚拟硬盘的大小。
  • -Path:指定虚拟机的存储路径。

2. 配置虚拟机

创建虚拟机后,您需要配置其网络适配器、处理器数量以及安装源等。以下是一些常见的配置命令:

# 添加网络适配器
Add-VMNetworkAdapter -VMName "TestVM" -SwitchName "Default Switch"

# 配置处理器数量
Set-VMProcessor -VMName "TestVM" -Count 4

# 配置ISO安装源
Add-VMDvdDrive -VMName "TestVM" -Path "C:\Users\heish\Downloads\CentOS-8.5.2111-x86_64-boot.iso"
  • Add-VMNetworkAdapter:为虚拟机添加网络适配器。
  • Set-VMProcessor:配置虚拟机的处理器数量。
  • Set-VMDvdDrive:设置虚拟机的DVD驱动器路径,以便使用ISO文件作为安装源。

在管理Hyper-V虚拟机时,您可能需要禁用安全引导和设置虚拟机从光盘优先引导。这在安装新的操作系统或进行系统恢复时尤为重要。本文将详细介绍如何使用PowerShell执行这些操作。

2.1. 禁用虚拟机的安全引导

安全引导是windows独有的一种用于确保系统启动时只加载受信任软件的功能。某些情况下,比如安装linux, 我们可能需要禁用此功能来安装特定的操作系统或进行特定的维护任务。

Set-VMFirmware -VMName "TestVM" -EnableSecureBoot Off
  • Set-VMFirmware:设置虚拟机固件配置。
  • -VMName:指定虚拟机的名称。
  • -EnableSecureBoot:启用或禁用安全引导,Off表示禁用。
2.2. 设置虚拟机光盘优先引导

要使虚拟机从光盘优先引导,可以调整启动顺序。以下命令将设置虚拟机的启动顺序,使其优先从光盘引导:

$DVDDrive = Get-VMDvdDrive -VMName "TestVM"
Set-VMFirmware -VMName "TestVM" -FirstBootDevice $DVDDrive
  • Get-VMDvdDrive:获取虚拟机的DVD驱动器。
  • Set-VMFirmware:设置虚拟机固件配置。
  • -FirstBootDevice:设置虚拟机的首选引导设备。

3. 启动和关闭虚拟机

一旦虚拟机配置完成,您可以启动它:

Start-VM -Name "TestVM"

在这里插入图片描述

要关闭虚拟机,可以使用以下命令:

Stop-VM -Name "TestVM"

4. 检查虚拟机状态

您可以使用PowerShell检查虚拟机的当前状态:

Get-VM -Name "TestVM"

该命令将返回虚拟机的状态信息,包括运行状态、CPU使用率和内存使用情况等。

5. 监控虚拟机性能

PowerShell还可以用来监控虚拟机的性能,例如CPU和内存使用情况。以下命令将获取虚拟机的实时性能数据:

Get-Counter -Counter "\Hyper-V VM Vid Partition(TestVM)\% Processor Time"

6. 启动交互会话:

6.1. 以管理员身份打开 PowerShell。
6.2. 运行以下命令之一以使用虚拟机名称或 GUID 创建交互会话:

Enter-PSSession -VMName <VMName>
Enter-PSSession -VMId <VMId>

出现提示时,提供虚拟机的凭据。

6.3. 在虚拟机上运行命令。

你应该会看到作为 PowerShell 提示符前缀的 VMName 显示如下:

[VMName]: PS C:>

所有运行的命令将会在虚拟机上进行。 若要测试,可运行 ipconfighostname 以确保这些命令正在虚拟机中运行。

  1. 完成后,运行以下命令来关闭会话:

    Exit-PSSession 
    

7. 使用 Invoke-Command 运行脚本或命令

配合使用 PowerShell Direct 和 Invoke-Command 非常适合需要在虚拟机上运行一个命令或一个脚本但在这一点之外无需继续与虚拟机进行交互的情况。

7.1 运行单个命令:

通过使用虚拟机名称或 GUID 运行以下命令之一来创建会话:

Invoke-Command -VMName <VMName> -ScriptBlock { command } 
Invoke-Command -VMId <VMId> -ScriptBlock { command }

出现提示时,提供虚拟机的凭据。
该命令将在虚拟机上执行,如果存在到控制台的输出,会把此输出打印到控制台。 命令一运行将会自动关闭连接。

7.2 运行脚本:

通过使用虚拟机名称或 GUID 运行以下命令之一来创建会话:

Invoke-Command -VMName <VMName> -FilePath C:\host\script_path\script.ps1 
Invoke-Command -VMId <VMId> -FilePath C:\host\script_path\script.ps1 

出现提示时,提供虚拟机的凭据。
该脚本将在虚拟机上执行。 命令一运行将会自动关闭连接。

8. 使用 New-PSSession 和 Copy-Item 复制文件

注意: PowerShell Direct 仅支持 Windows 版本 14280 及更高版本中的持久性会话

在编写用于跨一个或多个远程计算机协调操作的脚本时,持久性 PowerShell 会话会非常有用。 一经创建后,持久性会话会一直存在于后台,直到你决定将其删除。 这意味着我们可以使用 Invoke-CommandEnter-PSSession 反复引用同一个会话而无需传递凭据。

通过使用相同的令牌,会话将保持原有状态。 由于持久性会话具有持久性,在会话中创建的或传递给会话的任何变量将跨多个调用被保留。 有多种工具可用于持久性会话。 在此示例中,我们将使用 New-PSSessionCopy-Item 在主机和虚拟机之间移动数据。

8.1. 创建会话,然后复制文件:

运行以下命令之一使用 New-PSSession 将持久性 PowerShell 会话创建到虚拟机。

$s = New-PSSession -VMName <VMName> -Credential (Get-Credential)
$s = New-PSSession -VMId <VMId> -Credential (Get-Credential)

出现提示时,提供虚拟机的凭据。

警告:
14500 之前的版本中存在一个 Bug。 如果不使用 -Credential 标志显式指定凭据,来宾操作系统中的服务将崩溃,并且将需要重新启动。 如果你遇到此问题,可在此处获取解决方法说明。

8.2. 将文件复制到虚拟机内。

要将 C:\host_path\data.txt 从主机复制到虚拟机内,运行:

Copy-Item -ToSession $s -Path C:\host_path\data.txt -Destination C:\guest_path\
8.3. 从虚拟机复制文件(到主机)。

要将 C:\guest_path\data.txt 从虚拟机复制到主机,运行:

Copy-Item -FromSession $s -Path C:\guest_path\data.txt -Destination C:\host_path\
8.4. 使用 Remove-PSSession 停止持久性会话。
Remove-PSSession $s

9. 删除虚拟机

如果您需要删除虚拟机,可以使用以下命令:

Remove-VM -Name "TestVM" -Force

该命令将删除名为“TestVM”的虚拟机,包括其配置文件和虚拟硬盘。

总结

使用PowerShell管理Hyper-V虚拟机可以显著提高工作效率,特别是对于需要批量管理虚拟机的专业人士。这里介绍了如何启用Hyper-V功能,并详细说明了如何使用PowerShell创建、配置、启动、监控,访问和删除虚拟机的步骤。通过这些命令和示例,我们可以更加高效地管理我们的虚拟化环境。

标签:Hyper,Windows,虚拟机,TestVM,会话,VMName,PowerShell
From: https://blog.csdn.net/qq_14829643/article/details/139664798

相关文章

  • Windows 下自动预约申购 i茅台
    今天分享一个自动预约抢茅子的工具!前期准备工作:1.需安装:.Net6依赖(根据操作系统选择x64或x86版本进行下载。)安装软件1.软件下来下来之后,解压并进入软件目录,我们双击启动程序软件界面比较简洁,首页里有点击展开菜单的快捷方式首先我们先进入【预约项目】菜单界面,先刷......
  • MongoDB分片(windows电脑系统)
    系统版本:windows10专业版MongoDB:4.4.24分片架构从图中可以看出,分片集群中主要由三个部分组成,即分片服务器(Shard)、路由服务器(Mongos)以及配置服务器(ConfigServer)组成。其中,分片服务器有三个,即Shard1、Shard2、Shard3;路由服务器有两个,即Mongos1和Mongos2;配......
  • MongoDB基本操作(Windows)
    本篇博文介绍知识目标熟悉数据库和集合操作本篇目标掌握MongoDB的部署掌握文档的插入、更新、删除以及查询操作一、MongoDB的安装部署在浏览器输入网址:www.mongodb.com  2. 点击“TRYFREE”或“GETSTARTED”按钮,进入MongoDB的下载页面;3. 在下载页面中,选择适......
  • MongoDB副本集部署(windows)
    环境准备本教程演示mongodb4.4副本集部署(一主两从,伪分布式)节点配置主节点localhost:27017主节点1localhost:27018从节点2localhost:27019 每一个节点(实例)都创建对应的数据文件(data)和日志文件(log)。例如:动实例(服务)语法:bin>mongod-port端口号-dbpath数据路径-logpat......
  • linux+windows跨端md软件选择(未找到)
    目的windows上使用typora当初是通过破解的方式实现的。现在装双系统时想做做笔记,没有一个管理的软件用起来很不方便。要求正常编辑,没有难以忍受的问题。目录管理及大纲(基于标题层级)linux+windows双端,且linux端能够读取。从粘贴图片能够在相应的img目录下创建图片文件并引用......
  • Windows系统 搭建 FFmpeg运行环境
    一、下载FFMPEG进入FFMPEG官网下载界面http://www.ffmpeg.org/download.html;选择Windows平台的"WindowsbuildsbyBtbN"下载选项,然后会跳转到GitHub的Release发布版本界面https://github.com/BtbN/FFmpeg-Builds/releases;在GitHub界面下载最近的......
  • ffmpeg推送音视频流、拉取音视频流 —— Windows
    一、压缩视频文件例如将input.mp4转码成output.avi。在Windows下,打开cmd,执行:ffmpeg-iinput.mp4output.aviffmpeg-iinput.mp4output.avi有很多参数可以指定,见ffmpeg官网。例如:ffmpeg-iinput.mp4-c:vlibx264-presetultrafast-b:v6000koutput.avi 其中,......
  • 用C++判断Windows是否锁屏
    点击查看代码#include"windows.h"#include"Windows.h"#include"Wtsapi32.h"#include<tchar.h>#pragmacomment(lib,"WtsApi32.lib")usingnamespacestd;typedefHDESK(WINAPI*PFNOPENDESKTOP)(LPSTR,DWORD,BOO......
  • 蓝牙BLE上位机工具开发理论线索梳理_1.Win32设备(Windows 属性系统)
    1.Windows属性系统     Windows属性系统是一个可扩展的数据定义读/写系统,它提供一种统一的方式来表达有关Shell项的元数据。WindowsVista及更高版本中的Windows属性系统使你能够存储和检索Shell项的元数据。Shell项是任何单个内容,例如文件、文件夹、电......
  • 【高光谱遥感分类论文解读1】Hyperspectral Image Classification Using Group-Aware
    目录一、论文基本信息二、研究背景三、研究方法1.GAHT总体框架2.GPE模块3.Transformer编码模块四、实验本文是博主对原论文的解读,仅代表博主个人观点,欢迎在评论区和我交流~其中,本博文中的图片和公式均来源于原论文,如需进一步了解,请查看原论文。一、论文基本信息......