PowerShell 是一款强大的自动化和管理工具,专为系统管理员设计。它允许您执行脚本、管理服务和用户、监控事件以及与外部系统和 API 进行交互。在本指南中,您将逐步学习如何使用 PowerShell 完成实际任务。
安装与配置
- 从官方网站下载 PowerShell 7+:https://github.com/PowerShell/PowerShell
- 打开 PowerShell 或 PowerShell ISE(内置脚本编辑器)。
通过执行以下命令允许脚本运行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
第一个脚本「Hello.ps1」
创建一个名为「Hello.ps1」的文件,并粘贴以下内容:
Write-Host "Hello, PowerShell automation!"
Get-Date
$env:USERNAME
执行以下命令运行脚本:
.\Hello.ps1
语法基础
PowerShell 基于清晰简洁的结构:
- 命令:Get-Process、Start-Service、Stop-Computer
- 变量:$user = “Admin”
- 条件:if ($x -gt 10) { … }
- 循环:foreach ($item in $list) { … }
使用 PowerShell ISE 编辑器或安装了 PowerShell 扩展的 Visual Studio Code 进行高亮显示和自动完成。
脚本的风格和结构
我们建议遵循以下原则:
- 以动词-名词的形式命名函数:Get-Report、Start-Backup
- 使用Try-Catch处理错误
- 添加参数的注释和描述(Docblocks)
- 将逻辑按函数和模块进行分离
示例:内存监控
param([int]$Threshold = 80)
$mem = Get-CimInstance Win32_OperatingSystem |
Select @{Name='FreeGB'; Expression={[math]::Round($_.FreePhysicalMemory/1MB,2)}}
if ($mem.FreeGB -lt $Threshold) {
Write-Warning "Memory low: $($mem.FreeGB) GB"
} else {
Write-Host "Memory OK: $($mem.FreeGB) GB"
}
脚本会检查是否有足够的可用空间,如果没有,则显示警告。
任务计划程序
您可以根据计划执行 PowerShell 脚本:
- 打开任务计划程序
- 创建新任务 → “操作”选项卡
指定以下内容:
powershell.exe -ExecutionPolicy Bypass -File "C:\Scripts\Hello.ps1"
- 配置基于时间或事件的触发器。
用户管理
本地用户:
$pass = Read-Host -AsSecureString "Введите пароль"
New-LocalUser -Name "TestUser" -Password $pass -FullName "Тестовый пользователь"
Disable-LocalUser -Name "TestUser"
Remove-LocalUser -Name "TestUser"
Active Directory(带CSV文件):
Import-Csv users.csv | ForEach-Object {
New-ADUser -Name $_.Name -SamAccountName $_.Login `
-AccountPassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) -Enabled $true
}
Windows 事件监视
Get-WinEvent -LogName System -MaxEvents 10 |
Format-Table TimeCreated, Id, Message
过滤:
Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000; StartTime=(Get-Date).AddDays(-1)}
导出为 CSV:
... | Export-Csv "C:\Logs\app.csv" -NoTypeInformation
备份与存档
$src = "C:\Important"
$dst = "D:\Backup\Backup_$(Get-Date -Format 'yyyyMMdd').zip"
Compress-Archive -Path "$src\*" -DestinationPath $dst
Add-Content "D:\Backup\backup_log.txt" "Backup: $(Get-Date) → $dst"
此脚本从一个文件夹创建一个文件并记录备份。
通过电子邮件发送通知
Send-MailMessage -From "admin@domain.com" -To "team@company.com" `
-Subject "Backup report" -Body "Backup completed successfully." `
-SmtpServer "smtp.domain.com" -Attachments "D:\Backup\*.zip"
与持续集成/持续交付(CI/CD)和云集成
- 您可以在 GitHub Actions、Azure Automation Runbooks 或 VPS SSD 中使用 PowerShell。
GitHub Actions 示例:
- name: Run PowerShell script
run: pwsh ./monitor.ps1
- 在 Azure 中,您可以根据计划使用 RBAC 和执行日志运行脚本。
PowerShell 不仅仅是一个 shell,还是一个通用自动化工具。您将通过实际示例快速掌握基础概念,包括备份和删除旧文件以及运行程序。重要提示:请始终使用 -WhatIf 参数或在测试环境中测试脚本,以避免意外更改。