RemoveWeeklySnapshot
以下需求需要每周执行一次
- 连接vCenter/Esxi/Hyper-V
- 获取所有 vms
- 获取所有 snapshots
- 筛选出15天(半个月)前的snapshots
- 以上内容以Excel表格的形式导出,超出15天的快照蓝底标识
- 最后删除 15 天前的 snapshot,并同时记录删除的 snapshot 日志信息
- 需要控制每台 vCenter 不可以同时删除超过4个快照
- 增加排除不能删除的快照
| 你想获取 | 代码 | 示例输出 |
|---|---|---|
| 名称 | vm.name |
"WebServer-01" |
| MOID | vm._moId |
"vm-12" |
| 电源状态 | vm.runtime.powerState |
poweredOn / poweredOff |
| 开机时间 | vm.runtime.bootTime |
datetime 对象 |
| CPU数 | vm.config.hardware.numCPU |
4 |
| 内存(MB) | vm.config.hardware.memoryMB |
8192 |
| 操作系统 | vm.config.guestFullName |
"CentOS 7 (64-bit)" |
| IP地址 | vm.guest.ipAddress |
"192.168.1.100" |
| 主机名 | vm.guest.hostName |
"webserver01.local" |
| 存储路径 | vm.config.files.vmPathName |
"[Datastore1] WebServer-01/WebServer-01.vmx" |
| 快照数量 | len(vm.snapshot.rootSnapshotList) |
3 |
vm ├── 基础标识 │ ├── name VM名称 │ └── _moId 内部ID (vm-12) │ ├── runtime 【运行状态】 │ ├── powerState poweredOn/Off/Suspended │ ├── bootTime 开机时间 │ └── host 所在物理机 │ ├── config 【硬件配置】 │ ├── hardware CPU/内存/硬盘 │ ├── guestFullName 操作系统 │ └── files VMX文件路径 │ ├── guest 【客户机内部信息】 │ ├── hostName 主机名 │ ├── ipAddress IP地址 │ └── toolsStatus VMware Tools状态 │ ├── snapshot 【快照】 │ └── rootSnapshotList 快照树 │ ├── storage 【存储】 │ └── perDatastoreUsage 各数据存储用量 │ ├── network 【网络】 │ └── [Network] 连接的端口组 │ └── summary 【快速汇总】 ├── overallStatus 整体健康状态 └── quickStats 实时性能数据
[{'name': 'snap-02', 'description': 'test-Ansible snapshot', 'createTime': '2026-02-17 08:57:39', 'state': 'poweredOff', 'id': 2, 'moId': 'snapshot-27', 'sizeMB': None, 'quiesced': False, 'children': []}] [{'name': 'snap-01', 'description': 'Ansible snapshot', 'createTime': '2026-02-17 03:26:08', 'state': 'poweredOff', 'id': 1, 'moId': 'snapshot-26', 'sizeMB': None, 'quiesced': False, 'children': [{'name': 'snap-02', 'description': 'test-Ansible snapshot', 'createTime': '2026-02-17 08:57:39', 'state': 'poweredOff', 'id': 2, 'moId': 'snapshot-27', 'sizeMB': None, 'quiesced': False, 'children': []}]}] 获取到 2 台VM