第一章:MCP PowerShell 命令 参考
PowerShell 是系统管理员和开发人员管理 Microsoft Cloud Platform(MCP)资源的强大工具。通过集成的 cmdlet,用户可实现自动化部署、资源监控与配置管理。本章提供常用 MCP 相关 PowerShell 命令的参考指南,帮助用户快速上手云端操作。
连接到 Microsoft Cloud Platform
在执行任何命令前,必须先使用账户凭据连接到云服务。
# 登录到 Azure 云(MCP 的基础平台)
Connect-AzAccount
# 指定订阅上下文
Set-AzContext -Subscription "your-subscription-id"
上述命令会弹出登录窗口,输入企业账号后即可认证。`Set-AzContext` 用于切换当前操作的订阅。
管理虚拟机
以下命令用于查询、创建和停止虚拟机。
Get-AzVM:列出当前订阅下的所有虚拟机Stop-AzVM:停止指定虚拟机以节省成本Start-AzVM:启动已停止的虚拟机
例如,停止一台名为 WebServer01 的虚拟机:
# 停止虚拟机
Stop-AzVM -ResourceGroupName "MyRG" -Name "WebServer01" -Force
# 输出操作状态:成功或失败原因
资源组操作
资源组是 MCP 中组织资源的核心单元。常用命令如下表所示:
| 命令 | 功能描述 |
|---|
New-AzResourceGroup | 创建新的资源组 |
Get-AzResourceGroup | 获取资源组列表 |
Remove-AzResourceGroup | 删除资源组及其所有资源 |
使用以下命令创建资源组:
New-AzResourceGroup -Name "Prod-WE-RG" -Location "West Europe"
第二章:系统状态监控与信息采集
2.1 Get-SystemInfo:实时获取服务器硬件与操作系统详情
功能概述
Get-SystemInfo 是一个用于实时采集服务器硬件配置与操作系统状态的 PowerShell 模块,广泛应用于运维监控与资产盘点场景。它能够获取 CPU 型号、内存容量、磁盘使用率、系统版本及启动时间等关键信息。
核心代码示例
Get-SystemInfo -ComputerName "SRV01" -Credential (Get-Credential)
该命令通过 WMI 连接远程主机,需提供有效凭据。参数
-ComputerName 指定目标服务器,
-Credential 用于身份验证,支持跨域查询。
返回字段说明
- CPU:处理器型号与核心数
- MemoryGB:总内存(GB)
- DiskFreePct:各磁盘剩余空间百分比
- OSVersion:操作系统版本号
- Uptime:自上次重启以来运行时间
2.2 Get-ProcessList:精准筛选运行进程并导出分析报告
功能概述与使用场景
Get-ProcessList 是一款用于枚举系统中正在运行的进程并支持条件过滤的实用工具,广泛应用于系统监控、安全审计和性能调优等场景。通过指定进程名、CPU占用阈值或内存使用上限,可快速定位异常进程。
核心代码实现
Get-Process | Where-Object { $_.CPU -gt 100 } | Export-Csv -Path "process_report.csv" -NoTypeInformation
该命令获取所有进程,筛选CPU使用时间超过100秒的条目,并导出为CSV格式。其中,
Where-Object 实现动态过滤,
Export-Csv 支持结构化数据持久化。
输出字段说明
| 字段名 | 说明 |
|---|
| Id | 进程唯一标识符 |
| ProcessName | 可执行文件名称 |
| WorkingSet | 物理内存占用(字节) |
2.3 Get-NetworkStatus:全面检测网络连接与端口占用情况
功能概述
Get-NetworkStatus 是一款 PowerShell 工具,用于实时检测本地网络连接状态与端口占用情况。它整合了 TCP 连接查询、监听端口扫描和远程主机连通性测试,适用于故障排查与安全审计。
核心命令示例
Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, State, OwningProcess
该命令列出所有处于“监听”状态的 TCP 端口。LocalPort 显示服务开放端口,OwningProcess 可关联至具体进程 ID,便于识别可疑服务。
端口与进程映射表
| 端口 | 协议 | 常见服务 | 风险等级 |
|---|
| 80 | HTTP | Web 服务 | 低 |
| 3389 | RDP | 远程桌面 | 高 |
| 445 | SMB | 文件共享 | 中 |
2.4 Get-DiskUsage:自动化磁盘空间分析与阈值预警设置
核心功能概述
Get-DiskUsage 是一款 PowerShell 脚本工具,用于扫描本地或远程系统的磁盘使用情况,支持自定义阈值触发预警。该工具可集成至监控系统,实现定期巡检与告警通知。
代码实现示例
# 获取所有本地磁盘并计算使用率
Get-CimInstance Win32_LogicalDisk | Where-Object {$_.DriveType -eq 3} |
Select-Object DeviceID,
@{Name="Free(GB)"; Expression={[math]::Round($_.Freespace / 1GB, 2)}},
@{Name="Total(GB)"; Expression={[math]::Round($_.Size / 1GB, 2)}},
@{Name="Used(%)"; Expression={[math]::Round((($_.Size - $_.Freespace) / $_.Size) * 100, 2)}}
上述命令通过
Get-CimInstance 获取逻辑磁盘信息,筛选类型为本地硬盘(DriveType=3),并计算总容量、可用空间及使用百分比,精度保留两位小数。
预警机制配置
- 设定使用率阈值(如 85%)触发邮件或日志告警
- 结合 Task Scheduler 实现每日自动执行
- 输出结果可导出为 CSV 供审计分析
2.5 Get-ServiceHealth:批量查询关键服务状态并生成健康评分
核心功能概述
`Get-ServiceHealth` 是一个 PowerShell cmdlet,用于批量检索本地或远程系统中指定服务的运行状态,并基于响应延迟、启动类型和运行时长等维度生成健康评分(0–100)。
使用示例与代码分析
Get-ServiceHealth -ComputerName Server01,Server02 -Services W32Time,Spooler
该命令查询两台服务器上时间同步与打印服务的健康状态。参数
-ComputerName 支持多主机输入,
-Services 限定目标服务名称。
健康评分逻辑
评分依据包括:服务是否正在运行(+40分)、启动类型为自动(+20分)、CPU占用低于阈值(+20分)、内存使用正常(+20分)。异常状态通过颜色在控制台高亮显示。
| 评分区间 | 健康等级 |
|---|
| 80–100 | 健康 |
| 60–79 | 警告 |
| 0–59 | 故障 |
第三章:配置管理与策略应用
3.1 Set-ConfigBaseline:定义并部署标准化系统配置模板
在大规模系统管理中,确保各节点配置一致性是运维稳定性的核心。`Set-ConfigBaseline` 命令用于定义并部署标准化的系统配置模板,实现配置的集中化管理。
配置模板结构示例
config-baseline:
security:
firewall: enabled
audit-level: 3
updates:
auto-download: true
schedule: "weekly"
上述YAML模板定义了安全与更新策略,参数如 `audit-level` 控制日志记录粒度,`schedule` 指定自动更新频率,确保合规性与安全性统一。
批量部署流程
- 上传配置模板至中央仓库
- 执行
Set-ConfigBaseline -template default-sec-policy - 目标节点自动拉取并应用配置
该机制依赖于轻量级代理服务轮询配置变更,保障最终一致性。
3.2 Invoke-PolicyEnforcement:强制执行安全策略与合规性检查
核心功能概述
Invoke-PolicyEnforcement 是 PowerShell 中用于在本地或远程系统上强制执行安全基线策略的高级函数,广泛应用于企业环境的合规性管理。它通过加载预定义的安全规则集,对系统配置进行扫描并自动修正偏离项。
典型使用场景
- 批量部署组织安全策略
- 定期执行合规性审计
- 响应安全事件后的策略重置
Invoke-PolicyEnforcement -PolicyPath "\\corp\policies\baseline.psd1" -Remediate -OutputReport "C:\Reports\compliance_20250405.html"
上述命令从共享路径加载策略定义文件,启用自动修复模式,并生成合规报告。参数 -PolicyPath 指定结构化策略清单,-Remediate 触发修正动作,-OutputReport 输出可视化结果。
策略验证流程
| 步骤 | 操作 |
|---|
| 1 | 加载策略规则 |
| 2 | 扫描当前系统配置 |
| 3 | 比对合规状态 |
| 4 | 执行修复(如启用) |
3.3 Compare-ConfigurationDrift:识别配置偏移并自动修复异常项
配置漂移检测机制
系统通过周期性比对目标节点的实际配置与基准模板,识别偏离预期状态的配置项。检测过程基于哈希校验与结构化字段对比,确保高精度发现变更。
自动化修复流程
一旦发现配置偏移,系统触发修复策略。以下为典型处理逻辑:
// CheckDrift 检查节点配置是否偏离基线
func (c *ConfigChecker) CheckDrift(nodeID string) []DriftItem {
baseline := c.fetchBaseline()
current := c.fetchCurrentConfig(nodeID)
var drifts []DriftItem
for key, baseVal := range baseline {
if currVal, exists := current[key]; !exists || currVal != baseVal {
drifts = append(drifts, DriftItem{
Key: key,
Expected: baseVal,
Actual: currVal,
Severity: "medium",
})
}
}
return drifts
}
该函数遍历基准配置,逐项比对当前值。若发现不一致,则记录为漂移项,并标注严重等级,供后续修复模块调用。
- 支持多维度比对:网络、安全组、服务状态
- 修复动作可配置:告警、自动回滚或人工确认
- 审计日志全程记录所有变更操作
第四章:故障响应与自动化修复
4.1 Restart-FailedService:智能识别异常服务并执行安全重启
在现代分布式系统中,服务的高可用性依赖于对异常状态的快速响应。Restart-FailedService 机制通过持续监控服务健康指标(如心跳、CPU 使用率和响应延迟),自动识别处于失败状态的服务实例。
异常检测策略
系统采用多维度判断逻辑,避免误判。当某服务连续三次心跳超时或返回 HTTP 5xx 错误率超过阈值时,触发异常标记。
安全重启流程
// RestartService 安全重启核心逻辑
func RestartService(serviceID string) error {
if !IsServiceFailed(serviceID) {
return errors.New("service is still healthy")
}
DrainConnections(serviceID) // 先摘流,确保流量切换
if err := StopInstance(serviceID); err != nil {
return err
}
return StartInstance(serviceID)
}
上述代码首先验证服务状态,执行连接摘除后停止实例,最后启动新实例,保障重启过程不影响整体服务链路。
- 监控采集频率:每 10 秒轮询一次健康状态
- 重启冷却期:每次重启间隔不少于 30 秒,防止雪崩
- 最大重试次数:单个服务最多连续重启 3 次
4.2 Clear-EventLogOverflow:自动清理过载事件日志防止性能下降
Windows 系统长时间运行后,事件日志可能因积累过多条目导致磁盘占用升高、系统响应变慢。`Clear-EventLogOverflow` 是一种自动化策略,用于识别并清理超出保留阈值的日志,保障系统稳定性。
核心清理脚本示例
# 清理超过指定大小的日志
wevtutil el | ForEach-Object {
$log = $_
wevtutil gl $log | Out-Null
if ((wevtutil gl $log).FileSize -gt 104857600) { # 超过100MB
wevtutil cl $log
Write-EventLog -LogName "Application" -Source "Maintenance" -EntryType Information -EventId 1000 -Message "已清理溢出日志: $log"
}
}
该脚本遍历所有启用的日志通道,检查其当前文件大小。若超过预设阈值(如100MB),则执行 `wevtutil cl` 命令清空内容,并记录操作至应用日志,实现无人值守维护。
执行策略建议
- 通过任务计划程序每日凌晨执行
- 保留关键安全日志,仅清理应用程序和系统非核心日志
- 结合备份机制,避免误删重要诊断信息
4.3 Restore-FromSnapshot:基于时间点快照实现快速系统回滚
在系统异常或数据损坏场景下,Restore-FromSnapshot 技术通过预置的时间点快照实现秒级回滚,保障服务连续性与数据一致性。
快照回滚核心流程
- 定位目标快照:根据时间戳或事务ID选择恢复点
- 暂停写入操作:确保恢复期间数据静止
- 块级数据覆盖:将快照数据逐块写回主存储
- 元数据更新:重置文件系统指针与版本号
典型恢复命令示例
# 从指定快照恢复卷
snapshot restore --volume=data_vol --snapshot=sn_20231011_1400
该命令触发异步恢复任务,参数
--volume 指定目标存储卷,
--snapshot 定义恢复源。执行后系统自动校验快照完整性并启动块级同步。
性能对比
| 恢复方式 | 平均耗时(GB) | 数据一致性 |
|---|
| 传统备份还原 | 180s | 最终一致 |
| 快照回滚 | 12s | 强一致 |
4.4 Notify-AdminAlert:集成邮件与企业IM通道实现实时告警推送
在现代运维体系中,实时告警是保障系统稳定性的关键环节。Notify-AdminAlert 模块通过整合邮件系统与企业级即时通讯工具(如钉钉、企业微信),实现多通道告警分发。
告警通道配置示例
type AlertNotifier struct {
EmailEnabled bool `json:"email_enabled"`
DingTalkWebhook string `json:"dingtalk_webhook"`
SMTPServer string `json:"smtp_server"`
}
上述结构体定义了告警推送的核心配置。EmailEnabled 控制邮件通道开关,DingTalkWebhook 用于接入钉钉机器人,SMTPServer 指定邮件服务器地址,支持灵活适配不同环境。
多通道优先级策略
- 一级故障:同时触发邮件与IM,确保10秒内触达
- 二级异常:仅通过IM推送,减少信息干扰
- 日志类告警:异步汇总至邮件日报
该机制显著提升响应效率,降低漏报风险。
第五章:MCP PowerShell 命令 参考
常用 MCP PowerShell 模块导入命令
在管理 Microsoft Cloud Platform 资源时,首先需确保已安装并导入正确的 PowerShell 模块。以下为典型操作示例:
# 安装 MCP PowerShell 模块
Install-Module -Name Az -Scope CurrentUser -Repository PSGallery
# 导入模块
Import-Module Az
# 登录 Azure 账户
Connect-AzAccount
资源组管理命令参考
使用 PowerShell 可快速创建、查询和删除资源组。以下是常用命令集合:
- New-AzResourceGroup:创建新的资源组
- Get-AzResourceGroup:获取资源组列表
- Remove-AzResourceGroup:删除指定资源组
- Set-AzResourceGroup:更新资源组标签或位置
例如,创建一个位于东亚的资源组:
New-AzResourceGroup -Name "prod-web-rg" -Location "East Asia"
虚拟机操作命令速查表
| 操作 | PowerShell 命令 |
|---|
| 列出所有 VM | Get-AzVM |
| 启动虚拟机 | Start-AzVM -ResourceGroupName "myRG" -Name "web-server" |
| 停止虚拟机 | Stop-AzVM -ResourceGroupName "myRG" -Name "web-server" |
| 获取 VM 状态 | Get-AzVM -Status -Name "web-server" |
自动化脚本实战案例
编写脚本定期备份关键资源组中的虚拟机磁盘:
$vms = Get-AzVM -ResourceGroupName "backup-rg"
foreach ($vm in $vms) {
$disk = Get-AzDisk -DiskName $vm.StorageProfile.OsDisk.Name
New-AzSnapshot -TimeToLiveInHours 72 `
-Snapshot $disk `
-SnapshotName "snap-$($vm.Name)-$(Get-Date -Format 'yyyyMMdd')"
}