PowerShell 技能连载 - Azure 虚拟网络管理

适用于 PowerShell 5.1 及以上版本

Azure 虚拟网络(Virtual Network,简称 VNet)是云端基础设施的基石,所有 Azure 资源之间的通信都建立在虚拟网络之上。无论是虚拟机、应用服务还是数据库,都需要通过 VNet 进行网络隔离与互联。对于运维工程师而言,掌握虚拟网络的创建、子网划分、安全组配置和对等连接等操作,是管理 Azure 环境的必备技能。

在多区域、多订阅的企业级架构中,网络配置的复杂度会迅速攀升。手动在 Azure Portal 中逐个配置子网和规则不仅耗时,还容易出现人为错误。通过 PowerShell 的 Az.Network 模块,我们可以将网络配置脚本化,实现版本控制和自动化部署,确保开发、测试、生产各环境的网络拓扑一致。

本文将从零开始演示如何使用 PowerShell 创建虚拟网络、管理子网、配置网络安全组以及建立 VNet 对等连接,帮助你构建一套可复用的网络管理脚本库。

阅读更多

PowerShell 技能连载 - Hyper-V 虚拟机管理

适用于 PowerShell 5.1 及以上版本(Windows),需要 Hyper-V 角色

Hyper-V 是微软提供的原生虚拟化平台,从 Windows Server 2008 开始内置,在 Windows 10/11 专业版和企业版中同样可用。对于系统管理员和 DevOps 工程师来说,能够通过脚本批量管理虚拟机是提高效率的关键。PowerShell 的 Hyper-V 模块提供了完整的 cmdlet 集,覆盖虚拟机的创建、配置、启动、快照、迁移等全生命周期操作。

在实际运维场景中,手动通过 Hyper-V 管理器操作几台虚拟机尚可应付,但当你需要管理数十甚至上百台虚拟机时,手动操作不仅耗时,还容易出错。通过 PowerShell 脚本,我们可以将日常的虚拟机管理任务自动化,比如批量创建开发环境、定期检查虚拟机状态、自动创建检查点等。

本文将通过几个实用的示例,展示如何使用 PowerShell 完成 Hyper-V 虚拟机的日常管理任务,包括查询状态、批量创建虚拟机、管理检查点以及资源监控。

阅读更多

PowerShell 技能连载 - Azure 虚拟机管理

适用于 PowerShell 5.1 及以上版本

Azure 虚拟机是云端基础设施的核心服务之一,运维团队日常需要频繁执行创建、启停、扩容和监控等操作。通过 Azure PowerShell 模块(Az.Compute),我们可以将这些操作脚本化,实现批量管理和自动化运维,大幅减少手动在门户点击的时间成本。

在生产环境中,虚拟机的生命周期管理远不止简单的开关机。你可能需要根据业务负载动态调整 VM 大小、批量检查所有虚拟机的运行状态、定期清理已解除分配的资源以节省费用。PowerShell 的管道机制和对象模型让这些批量操作变得异常简洁。

本文将演示如何使用 PowerShell 完成 Azure 虚拟机的创建、状态查询、规格调整和批量管理等常见任务,帮助你建立一套可复用的云端运维脚本库。

阅读更多

PowerShell 技能连载 - 元宇宙虚拟环境自动化管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function Invoke-MetaverseDeployment {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[string]$EnvironmentBlueprint,

[ValidateRange(1,100)]
[int]$NodeCount = 5
)

$deploymentReport = [PSCustomObject]@{
Timestamp = Get-Date -Format 'yyyy-MM-dd HH:mm:ss'
EnvironmentID = (New-Guid).Guid
AllocatedResources = @()
PerformanceMetrics = @()
}

# 虚拟节点资源配置
1..$NodeCount | ForEach-Object {
$nodeConfig = [PSCustomObject]@{
NodeID = "VNODE-$((Get-Date).ToString('HHmmssfff'))"
CPU = 4
Memory = '16GB'
Storage = '500GB SSD'
NetworkLatency = (Get-Random -Minimum 2 -Maximum 15)
}
$deploymentReport.AllocatedResources += $nodeConfig
}

# 虚拟环境健康检查
$deploymentReport.AllocatedResources | ForEach-Object {
$metrics = [PSCustomObject]@{
NodeID = $_.NodeID
Throughput = (Get-Random -Minimum 100 -Maximum 1000)
PacketLoss = (Get-Random -Minimum 0.1 -Maximum 5.0)
AvatarCapacity = (Get-Random -Minimum 50 -Maximum 200)
}
$deploymentReport.PerformanceMetrics += $metrics
}

# 生成三维可视化报告
$reportPath = "$env:TEMP/MetaverseReport_$(Get-Date -Format yyyyMMdd).glb"
$deploymentReport | ConvertTo-Json -Depth 5 |
Out-File -Path $reportPath -Encoding UTF8
return $deploymentReport
}

核心功能

  1. 分布式虚拟节点自动配置
  2. 网络延迟模拟与容量规划
  3. 实时三维性能指标采集
  4. GLB格式可视化报告

应用场景

  • 元宇宙基础架构部署
  • 虚拟演唱会资源调度
  • 数字孪生工厂监控
  • 虚拟现实教育资源分配

手动控制 VMware 服务

VMware Workstation 想必是很多朋友的必装软件,强大的虚拟机功能已经不用多解释了。这里提点小小的内存优化建议,就是我们在安装完 VMware Workstation 之后,它默认是开机自启动的。那有人会说,打开msconfig,在启动项里将它关闭不就行了吗?其实不然,VMware的几个进程都是以服务方式启动的,vmware-authd.exe、vmnetdhcp.exe、vmnat.exe等等,如不经处理,它们会常驻在系统内存中。而我们并不是每天都会使用虚拟机,所以那些进程大部分时间是在浪费我们的系统资源。

但如果在服务里面将它们全部禁用,那么 VMware 也就不能使用了。最好的方法就是打开服务管理器,将它的几个服务项先全部右击停止,然后双击进去,在启动类型中改为“手动”。这样一来,开机就不会自动启动了。那么,要开 VMware 的时候怎么办呢?一个个手工开启?没必要,写个 PowerShell 脚本就可以了,我用的是最新版VMware Workstation 10,代码如下:

将所有 VMware 服务设置为手动:

# Set-VMWareServiceToManual.ps1
Get-Service -DisplayName vmware* | % {
    Set-Service -Name $_.Name -StartupType Manual
}

将所有 VMware 服务设置为自动(缺省):

# Set-VMWareServiceToAuto.ps1
Get-Service -DisplayName vmware* | % {
    Set-Service -Name $_.Name -StartupType Automatic
}

启动所有 VMware 服务(准备运行 VMware 的时候):

# Start-VMWareService.ps1
Get-Service -DisplayName vmware* | % {
    Start-Service -Name $_.Name
}

停止所有 VMware 服务(运行 VMware 完毕以后):

# Stop-VMWareService.ps1
Get-Service -DisplayName vmware* | % {
    Stop-Service -Name $_.Name -Force
}

下载地址:VMWareService.zip

PowerShell 技术 QQ 群