当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 适合管理员的常用 PowerCLI 命令

作者:精品下载站 日期:2024-12-14 08:13:19 浏览:15 分类:玩电脑

适合管理员的常用 PowerCLI 命令


[玩转系统] 适合管理员的常用 PowerCLI 命令

在本系列的第 2 部分中,您将了解有关模板的使用以及如何处理快照的更多信息,例如如何创建、查看和删除它们。

VMware很早就认识到PowerShell的潜力,这也是该技术公司的PowerShell模块(PowerCLI)非常成熟的原因。该模块具有 800 多个 cmdlet,可实现 VMware 产品 ESX、vCenter 甚至 vSphere 的几乎完全自动化。本系列文章深入介绍了各种 cmdlet,在我看来,这些 cmdlet 在 VMware 环境的管理中发挥着重要作用,并且可以极大地简化日常管理工作。

该系列由以下文章组成:

  • 简介和虚拟机库存管理(第 1 部分)
  • 创建快照和 VMware 模板(第 2 部分)
  • 常规 VMware 导航和高级信息(第 3 部分)

除了经典的管理和过滤任务之外,PowerCLI 还提供用于自动化各种流程的选项,例如创建快照和创建模板。这两个功能在管理和保护虚拟机 (VM) 状态方面发挥着核心作用,可以节省管理员的时间和精力。在这篇博客文章中,我们将仔细研究这种组合的实际用例和好处。

快照

尽管快照不应被视为完整备份,但它们仍然是保留虚拟机当前状态的有用工具。与备份创建虚拟机数据的完整副本不同,快照仅捕获自创建快照以来虚拟机的更改。这使得它们可以在需要时快速恢复。

使用 PowerCLI,您可以轻松创建、管理和整合快照。以下是一些可以帮助您完成此操作的基本命令:

创建虚拟机快照:

New-Snapshot -VM <VM-Name> -Name <Snapshot-Name> -Description <Description>

查看虚拟机的所有快照:

Get-Snapshot -VM <VM-Name>

删除/移除快照:

Remove-Snapshot -Snapshot <Snapshot-Name> 

为所有带有“测试”标签的虚拟机创建快照,并将当前日期指定为快照名称

$VMs = Get-VM | Get-TagAssignment | Where-Object {$_.Tag -like 'Test'}
$Date = (Get-Date).ToString("dd.MM.yyyy") 
Foreach ($vm in $VMs){
   $vm | New-Snapshot -Memory -Quiesce -Name $Date 
}

更新前自动快照

快照的一个实际用例是在更新之前自动创建快照。想象一下,所有测试虚拟机都在某一天收到更新。使用 PowerCLI,您可以在更新之前创建快照,如果没有检测到问题,则可以在第二天整合它们。一切都可以使用 ScriptRunner 等工具实现自动化和安排。

# Variables
$SnapshotName = "PreUpdateSnapshot" 
$SnapshotDescription = "Snapshot before Updates" 
$VMTag = "Test-VM"

# get test VMs with the specified tag
$VMs = Get-VM -Tag $VMTag

# create snapshots for test VMs and start Windows updates 
foreach ($VM in $VMs) {
	Write-Host "Create Snapshot for $($VM.Name)..." 
    $snapshotParams = @{ 
    	VM = $VM 
        Name = $SnapshotName 
        Description = $SnapshotDescription 
	} 
	New-Snapshot @snapshotParams
    
	# Run Windows updates on the VM
    $UpdateScript = { 
    	Install-WindowsUpdate -AcceptAll -AutoReboot 
	} 
    Write-Host "Run Windows-Updates on $($VM.Name) ..." 
	$invokeScriptParams = @{ 
		VM = $VM 
        ScriptText = $UpdateScript 
        GuestCredential = (Get-Credential) 
    } 
	Invoke-VMScript @invokeScriptParams 
}
    
# Variables
$SnapshotName = "PreUpdateSnapshot" 
$TestVMTag = "Test VM"

# get test VMs with the specified tag 
$TestVMs = Get-VM -Tag $TestVMTag

# consolidate snapshots if no problems were found 
foreach ($VM in $TestVMs) {
	$Snapshot = Get-Snapshot -VM $VM | Where-Object { $_.Name -eq $SnapshotName }
	if ($Snapshot) { 
		Write-Host "Consolidate snapshot for $($VM.Name)..."
		Remove-Snapshot -Snapshot $Snapshot -RemoveChildren -Confirm:$false 
	}
}

模板

模板在虚拟机 (VM) 管理中发挥着至关重要的作用。它们允许您作为管理员快速高效地基于现有 VM 创建新 VM。

应用领域

使用 PowerCLI 创建模板的可能应用领域包括基础架构更改的实际测试、创建实验室环境或作为配置新虚拟机的标准方法。

如果您想测试对生产系统的更改,则不应直接在生产虚拟机上执行此操作。相反,您可以创建一个模板,使用不同的 IP 或主机名从该模板创建一个新的虚拟机(以避免冲突),然后在其上运行测试。这可以最大限度地减少停机风险和对生产系统的不良影响。

模板也非常适合设置测试或实验室环境。例如,如果您想基于模板创建十个训练系统,只需多次运行以下命令即可:

$newVMParams = @{ 
	Name = "<VM Name>" 
	Template = "<Template Name>" 
	Datastore = "<Datastore Name>" 
	Location = "<Folder Path>" 
} 
New-VM @newVMParams

PowerCLI 允许您基于现有 VM 轻松快速地创建模板。当您想要使用虚拟机进行测试或作为新虚拟机的基础时,这尤其有用。要创建模板,请使用以下命令:

$newTemplateParams = @{ 
	VM = "<VM name>" 
    Name = "<Template name>" 
    Datastore = "<Datastore name>"
    Location = "<Folder path>" 
} 
New-Template @newTemplateParams

模板还可以作为部署新服务器的基础。您可以使用 PowerCLI 和适当的模板来更快、更高效地配置 VM,而不是使用 GUI 创建新 VM。这也是使用 ScriptRunner 等工具可以派上用场的地方,可以进一步自动化和简化此过程。

结论

通过使用 PowerCLI 和模板,您可以自动执行耗时的任务并降低错误风险。这使您能够作为管理员更高效地工作并专注于更重要的任务。总体而言,PowerShell、PowerCLI 和模板的组合是管理和优化虚拟机的宝贵工具。

PowerCLI 还允许您快速轻松地创建、管理和整合快照。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯