PowerShell 技能连载 - Windows 更新自动化管理

适用于 PowerShell 5.1 及以上版本

操作系统补丁管理是企业安全运维的基石。未打补丁的系统是勒索软件和漏洞攻击的首要目标,每一次重大的安全事件背后几乎都有”未及时安装更新”的影子。然而,Windows 更新管理远比点击”检查更新”复杂得多——需要控制更新时机、筛选更新类别、处理重启策略、验证安装结果,并在多台服务器上保持一致性。

PowerShell 通过 Microsoft.Update.Session COM 对象和 PSWindowsUpdate 模块提供了完整的 Windows 更新编程接口。本文将介绍如何使用 PowerShell 实现 Windows 更新的查询、安装、回滚和自动化管理。

阅读更多

PowerShell 技能连载 - 磁盘清理自动化

适用于 PowerShell 5.1 及以上版本

磁盘空间不足是运维中最常见的问题之一。日志文件堆积、临时文件未清理、回收站膨胀、Windows 更新缓存占用等问题,如果不加以管理,迟早会导致系统异常甚至服务中断。在容器化和虚拟化环境中,磁盘资源更是需要精打细算,自动化的磁盘清理机制必不可少。

手动清理磁盘既低效又容易遗漏,而且无法做到定期执行。通过 PowerShell 脚本可以精确定位各类可清理的目标,量化空间占用,并在安全的前提下自动执行清理操作。本文将介绍如何构建一个全面的磁盘清理自动化方案。

阅读更多

PowerShell 技能连载 - 凭据自动轮换

适用于 PowerShell 5.1 及以上版本

在信息安全领域,凭据管理是最基础也最重要的环节之一。无论是服务账户密码、API 密钥还是数据库连接字符串,长期不变的秘密都是潜在的安全隐患。越来越多的安全合规标准(如 PCI DSS、SOC 2)要求定期轮换密码,人工操作不仅容易遗漏,还可能在交接过程中引入风险。

自动化凭据轮换可以确保密码按策略定期更换,并将新密码安全地同步到所有需要的地方。PowerShell 结合 Windows 凭据管理 API 和 Azure Key Vault 等服务,能够构建端到端的凭据轮换工作流。本文将介绍如何用 PowerShell 实现凭据的安全存储、自动生成和轮换管理。

阅读更多

PowerShell 技能连载 - MSI 安装包自动化部署

适用于 PowerShell 5.1 及以上版本

在企业环境中,软件部署是最常见的运维任务之一。MSI(Microsoft Installer)是 Windows 平台上标准的安装包格式,几乎所有企业级软件都提供 MSI 分发方式。手动安装不仅耗时,而且在批量部署场景下几乎不可行。通过 PowerShell 自动化 MSI 安装,可以实现静默安装、参数化配置、日志记录和错误处理,大幅提升部署效率。

随着 DevOps 和基础设施即代码(IaC)理念的普及,将软件安装纳入版本控制的自动化流程已成为标准实践。本文将介绍如何使用 PowerShell 调用 msiexec.exe 完成 MSI 包的自动化安装、卸载和状态检测。

阅读更多

PowerShell 技能连载 - 定时任务与计划任务

适用于 PowerShell 5.1 及以上版本(Windows)

自动化运维的核心是定时执行——每天凌晨备份数据库、每周清理临时文件、每小时检查服务状态、每月生成报表。Windows 计划任务(Task Scheduler)是实现定时执行的基础设施,而 PowerShell 的 ScheduledTasks 模块提供了完整的计划任务管理能力,可以替代传统的 GUI 操作和 schtasks.exe 命令行工具。

本文将讲解计划任务的创建、管理、高级触发器配置,以及常见的自动化任务模板。

阅读更多

PowerShell 技能连载 - CI/CD 流水线中的 PowerShell 实践

适用于 PowerShell 7.0 及以上版本,需要 GitHub 账号

2025 年,CI/CD(持续集成/持续部署)已经成为软件交付的标准流程。无论是小型个人项目还是企业级微服务架构,自动化构建、测试和部署的能力都直接影响着交付效率和代码质量。GitHub Actions 作为目前最流行的 CI/CD 平台之一,原生支持 PowerShell 运行环境,这让 PowerShell 用户可以无缝融入 DevOps 工作流。

PowerShell 在 CI/CD 场景中有独特优势:强大的对象管道让数据处理变得简洁,跨平台支持(PowerShell 7+)让同一套脚本可以在 Windows、Linux 和 macOS Runner 上运行,丰富的模块生态则覆盖了从代码质量检查到部署验证的各个环节。本文将从脚本设计原则出发,逐步构建一个完整的 CI/CD 流水线方案。

阅读更多

PowerShell 技能连载 - Kubernetes 节点智能编排

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
function Invoke-K8sNodeOrchestration {
[CmdletBinding()]
param(
[ValidateSet('ScaleUp','ScaleDown','Maintenance')]
[string]$Operation,
[int]$NodeCount = 1
)

$nodePool = Get-AzAksNodePool -ClusterName 'prod-cluster'
$metrics = Invoke-RestMethod -Uri 'http://k8s-metrics:8080/api/v1/nodes'

switch ($Operation) {
'ScaleUp' {
$newCount = $nodePool.Count + $NodeCount
Update-AzAksNodePool -Name $nodePool.Name -Count $newCount
Write-Host "节点池已扩容至$newCount个节点"
}
'ScaleDown' {
$nodesToRemove = $metrics.Nodes |
Where-Object { $_.CpuUsage -lt 20 } |
Select-Object -First $NodeCount
$nodesToRemove | ForEach-Object {
Set-AzAksNode -Name $_.Name -State Draining
}
}
'Maintenance' {
$metrics.Nodes | Where-Object { $_.HealthStatus -ne 'Healthy' } |
ForEach-Object {
Add-K8sNodeLabel -Node $_.Name -Label @{
'maintenance' = (Get-Date).ToString('yyyyMMdd')
}
}
}
}
}

核心功能

  1. 节点自动扩缩容策略
  2. 基于资源利用率的智能调度
  3. 维护模式自动标签管理
  4. 与Azure AKS深度集成

典型应用场景

  • 应对突发流量自动扩容节点
  • 低负载时段自动缩容节约成本
  • 异常节点自动隔离维护
  • 跨可用区节点平衡管理
PowerShell 技术 QQ 群