尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Quick Reference 备忘清单:PowerShell 自动化任务与系统管理命令速查指南

Quick Reference 备忘清单:PowerShell 自动化任务与系统管理命令速查指南 Quick Reference 备忘清单PowerShell 自动化任务与系统管理命令速查指南【免费下载链接】reference面向开发者的技术速查清单Cheat Sheets集合整理常见技术、工具与开发流程帮助快速查阅关键信息提高开发效率。项目地址: https://gitcode.com/GitHub_Trending/referen/reference本文基于 Quick Reference 备忘清单仓库中的 PowerShell 备忘清单入口见 README 的“编程”分类整理扩写。该清单面向系统管理员与开发人员覆盖 PowerShell 常用命令、对象管道操作、系统管理硬件信息、网络、用户、注册表与脚本编写变量、运算符、函数、模块四大板块。读完本文你将获得一份可直接复制运行的 PowerShell 速查手册并理解每个命令的适用场景与关键参数。PowerShell 是微软推出的命令行 Shell 与脚本语言被广泛用于自动化任务和配置管理。它最大的特点在于以对象为中心几乎所有命令cmdlet的输出都是结构化对象配合管道可以将命令串联成强大的处理链。以下速查内容全部来自仓库文档 docs/powershell.md并补充了参数说明与使用要点。一、常用操作速查1.1 辅助命令动词-名词命名规范PowerShell 的每条命令都遵循动词-名词Verb-Noun格式例如Get-Process、New-Item。了解常见动词的含义即使面对陌生的命令也能快速推断其用途动词描述Get用于检索信息Set用于配置或更改设置New用于创建新对象实例Remove用于删除或移除项目Invoke用于执行特定的操作或动作Start用于启动进程或操作Stop用于停止或终止进程或操作Enable用于激活或启用功能Disable用于停用或禁用功能Test用于执行测试或检查Update用于更新或刷新数据或配置围绕“发现与学习”场景以下几个命令是日常使用频率最高的# 列出本机所有可用模块含未加载的 Get-Module --ListAvailable # 列出指定模块中的可用 cmdlet 和函数 Get-Command -Module ActiveDirectory # 列出所有别名及其对应的 cmdlet 名称了解 gci、?、% 等别名指向谁 Get-Alias | Select-Object Name, Definition # 获取帮助三种常用形式 Get-Help cmd Get-Help cmd -Examples # 只看示例 Get-Help -Name Get-Process -Parameter Id # 只看某个参数的说明 # Get-Member显示管道中对象的属性和方法是“探索未知对象”的关键工具 Get-Process | Get-Member使用要点Get-Help -Examples是新手学习命令最快的方式官方示例通常可直接复制运行Get-Member常与Select-Object配合先用Get-Member查清对象有哪些属性再决定投影哪些字段Get-Command支持通配符例如Get-Command *process*可以模糊搜索名称中含 process 的命令。1.2 对象操作管道与对象处理PowerShell 的管道传递的是对象而非文本因此可以用一组命令对数据进行“选择—过滤—统计—排序—格式化”的流水线处理# Select-Object选择对象的特定属性或自定义显示 Get-Process | Select-Object Name, CPU # Where-Object按条件过滤对象两种写法等价 Get-Service | Where-Object { $PSItem.Status -eq Running } # OR? 是 Where-Object 的别名$_ 是 $PSItem 的简写 Get-Service | ? { $_.Status -eq Running } # Measure-Object计算对象属性的统计信息总和、平均值、计数等 Get-Process | Measure-Object -Property WorkingSet -Sum # ForEach-Object对集合中的每个对象执行操作 # 注意以下命令将为当前目录中的每个文件/文件夹添加 Prefix_ 前缀 Get-ChildItem | ForEach-Object { Rename-Item $_ -NewName Prefix_$_ } # Sort-Object按指定属性排序-Descending 表示降序 Get-ChildItem | Sort-Object Length -Descending # Format-Table将输出格式化为指定列的表格ft 是别名 Get-Service | Format-Table -AutoSize # ft alias # Format-List将输出格式化为属性/值列表fl 是别名 Get-Process | Format-List -Property Name, CPU # fl alias使用要点$PSItem与$_都表示管道中的当前对象$_是历史简写两者等价Measure-Object除-Sum外还支持-Average、-Minimum、-Maximum、-Count等统计维度ForEach-Object对集合逐项处理注意此处$_代表当前被重命名的文件对象重命名语法为-NewName Prefix_$_Format-Table/Format-List仅改变显示方式不影响底层对象管道后如需继续处理应使用Select-Object而非格式化命令。1.3 文件系统操作文件操作既可以使用原生 cmdlet也可以直接调用 .NET 基类库BCL中的方法# 创建文件 / 目录-type 指定类型-value 指定初始内容 New-Item -path file.txt -type file -value contents New-Item -path file.txt -type dir # 复制 / 移动 / 删除 / 重命名 Copy-Item src -destination dest Move-Item -path src -destination dest Remove-Item file Rename-Item -path path -newname newname # 路径存在性检测 Test-Path path # 使用 .NET 基类库System.IO 命名空间 [System.IO.File]::WriteAllText(test.txt, ) [System.IO.File]::Delete(test.txt) # 读取文件内容 Get-Content -Path test.txt # 输出到文件重定向输出/ 导出到 CSV / 从 CSV 导入 Get-Process | Out-File -FilePath processes.txt # 输出到文件 Get-Process | Export-Csv -Path processes.csv # 输出到 CSV $data Import-Csv -Path data.csv # 从 CSV 导入使用要点Copy-Item、Move-Item均支持-Recurse参数用于目录级复制/移动Remove-Item删除目录时需加-Recurse -Force组合Out-File与重定向类似但Out-File可以显式指定编码如-Encoding UTF8Export-Csv/Import-Csv组合是 PowerShell 中做数据持久化与交换的经典模式导出的 CSV 可直接用 Excel 打开。二、系统管理速查2.1 硬件与系统信息采集CIM通过 CIM通用信息模型Common Information Model查询Win32_*类可以在不安装任何额外工具的情况下采集硬件与系统信息# 获取 BIOS 信息 Get-CimInstance -ClassName Win32_BIOS # 获取本地连接的物理磁盘设备信息 Get-CimInstance -ClassName Win32_DiskDrive # 获取安装的物理内存RAM信息 Get-CimInstance -ClassName Win32_PhysicalMemory # 获取安装的网络适配器物理 虚拟信息 Get-CimInstance -ClassName Win32_NetworkAdapter # 获取安装的图形/显卡GPU信息 Get-CimInstance -ClassName Win32_VideoController使用要点Get-CimInstance是新一代 CIM 命令语法更简洁且支持跨平台PowerShell 7 在 Linux/macOS 上也可配合 OpenPegasus 使用已取代旧的Get-WmiObject返回对象可通过管道进一步加工例如Get-CimInstance Win32_DiskDrive | Select-Object Model, Size除上述 5 个类外Win32_ProcessorCPU、Win32_OperatingSystem操作系统也是高频使用的类。2.2 WMI 命名空间与类探索当不确定系统中有哪些可用信息时可以直接枚举 WMI 命名空间与类# 列出所有类名 Get-CimClass | Select-Object -ExpandProperty CimClassName # 探索 root\cimv2 命名空间中的各种 WMI 类 Get-CimClass -Namespace root\cimv2 # 探索 root\cimv2 命名空间下的子 WMI 命名空间 # __NAMESPACE 类保存了当前命名空间的子命名空间列表 Get-CimInstance -Namespace root -ClassName __NAMESPACE使用要点root\cimv2是 Windows 系统信息最常用的 WMI 命名空间Win32_*系列类都在其中Get-CimClass返回类的元数据方法、属性Get-CimInstance返回类的实例数据通过__NAMESPACE逐层向下枚举可以像浏览文件系统一样遍历整个 WMI 层级例如root\Microsoft\Windows\...下的各服务类。2.3 网络管理网络诊断与信息查询是系统管理员的高频场景# 测试与远程主机的网络连接类似 ping但返回结构化对象 Test-Connection -ComputerName google.com # 获取网络适配器信息含状态、速度、MAC 地址等 Get-NetAdapter # 获取 IP 地址信息 Get-NetIPAddress # 获取路由表信息 Get-NetRoute # 测试远程主机上的端口是否开放TCP 连通性检测 Test-NetConnection google.com -Port 80使用要点Test-NetConnection -Port 80是排查“端口是否放通”的标准手段返回TcpTestSucceeded : True/FalseTest-Connection可通过-Count控制探测次数、-Quiet返回布尔值以便脚本判断Get-NetIPAddress常用-AddressFamily IPv4过滤出 IPv4 地址避免输出混杂 IPv6 信息。2.4 本地用户与组管理本地账户管理对应lusrmgr.msc的自动化替代# 获取本地用户账户信息 Get-LocalUser # 创建新的本地用户账户 # ConvertTo-SecureString 将明文密码转换为安全字符串 New-LocalUser -Name NewUser -Password (ConvertTo-SecureString Password123 -AsPlainText -Force) # 删除本地用户账户 Remove-LocalUser -Name UserToRemove # 获取本地组信息 Get-LocalGroup # 将成员添加到本地组 Add-LocalGroupMember -Group Administrators -Member UserToAdd使用要点New-LocalUser的-Password参数要求SecureString类型所以要用ConvertTo-SecureString ... -AsPlainText -Force包装明文密码生产环境中更安全的做法是使用Read-Host -AsSecureString交互式输入密码避免密码出现在命令历史中Add-LocalGroupMember -Group Administrators常用于将新账户提权为管理员。2.5 安全与权限ACLACL访问控制列表用于查看和修改文件/目录的 NTFS 权限# 获取文件/目录的访问控制列表 Get-Acl C:\Path\To\File.txt # 设置文件/目录的访问控制列表 Set-Acl -Path C:\Path\To\File.txt -AclObject $aclObject使用要点典型流程是Get-Acl取出对象 → 用$acl.AddAccessRule(...)修改规则 →Set-Acl写回更常用的权限变更方式是icacls.exe但 PowerShell 原生的Get-Acl/Set-Acl能在纯脚本环境中完成同样工作。2.6 注册表管理PowerShell 将注册表作为驱动器暴露HKLM:、HKCU:等 PSDrive可以像操作文件系统一样操作注册表# 获取注册表键值此处列出所有已安装程序的名称与版本 Get-ItemProperty -Path HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select DisplayName, DisplayVersion # 设置注册表键值 Set-ItemProperty -Path HKLM:\Software\MyApp -Name SettingName -Value NewValue # 创建新的注册表键值-PropertyType 指定类型String/DWord/QWord/Binary 等 New-ItemProperty -Path HKCU:\Software\MyApp -Name NewSetting -Value NewValue -PropertyType String # 删除注册表键值 Remove-ItemProperty -Path HKCU:\Software\MyApp -Name SettingToRemove # 检查注册表键是否存在 Test-Path HKLM:\Software\MyApp使用要点注册表驱动器与文件系统驱动器共用同一套 cmdletGet/Set/New/Remove-Item*这是 PowerShell 设计上的巧妙之处HKLM:\对应HKEY_LOCAL_MACHINEHKCU:\对应HKEY_CURRENT_USER枚举“已安装程序列表”是排查软件安装/卸载问题的常用技巧见第一条命令。三、脚本编写速查3.1 变量# 初始化变量不指定类型自动推断或显式指定类型 $var 0 [int] $var Trevor # (抛出异常无法将字符串转换为整数) [string] $var Trevor # (不会抛出异常字符串兼容) $var.GetType() # 查看变量类型 # 多重赋值一行内给多个变量赋值 $a,$b,$c a,b,c # 创建数组 $arrayvar (va1,va2) # 创建字典哈希表 Hashtable $dict {k1 test; k2 best}变量相关命令# 新建变量-Option 可指定 ReadOnly / Constant 等属性 New-Variable -Name FirstName -Value Trevor New-Variable FirstName -Value Trevor -Option ReadOnly/Constant # 查看当前会话的所有变量 Get-Variable # 按变量选项过滤$PSItem.Options 是变量选项集合 Get-Variable | ? { $PSItem.Options -contains constant } Get-Variable | ? { $PSItem.Options -contains readonly } # 删除变量只读变量需要 -Force 才能删除 Remove-Variable -Name firstname Remove-Variable -Name firstname -Force常用变量类型int32、int64、string、bool。使用要点强类型变量如[int] $var在赋值类型不匹配时会抛异常可用于早期发现数据问题-Option ReadOnly的变量可通过-Force删除而Constant变量在创建后无法修改或删除哈希表{keyvalue}是 PowerShell 中最灵活的复合数据结构广泛用于参数收集与配置传递。3.2 运算符# 赋值运算符 , / - , / -- # 比较运算符注意PowerShell 使用单词而非符号 -eq / -ne , -lt / -gt , -le / -ge $FirstName Trevor $FirstName -like T* # 通配符匹配结果为 True $true; $false # 布尔值 true/false # 三元运算符PowerShell 7 支持 $FoodToEat $BaconIsYummy ? bacon : beets # -in / -notin判断元素是否在集合中 Celery -in (Bacon, Sausage, Steak) # 输出: False # -is类型判断 5 -is [int32] # 输出: True # 正则表达式匹配-match 支持正则语法 Trevor -match ^T\w* # 输出: True # 查找多个匹配项使用 .NET [regex] 类 $regex [regex](\w*) $regex.Matches(this is test).Value使用要点PowerShell 的比较运算符不区分大小写-eq默认忽略大小写需要严格区分时可使用-ceq、-cne等带c前缀的变体-like使用*、?通配符-match使用正则表达式二者适用场景不同-is常用于函数内部对传入参数做类型校验。3.3 输入输出与流控制# 输出字符串直接书写字符串即可输出到管道 This displays a string # 带颜色的主机输出仅面向控制台显示 Write-Host color -ForegroundColor Red # 读取用户输入-asSecureString 使输入以掩码显示并返回 SecureString $age Read-host Enter age $pwd Read-host password -asSecureString # 清屏 Clear-Host流控制结构语法骨架#...#为注释占位符# 条件分支 IF(#Condition#){ #Commands# }ELSEIF(){} ELSE{} # 多分支匹配命中后 break 跳出 Switch($var){ val1{#Commands#; break} val2{#Commands#; break} } # 经典 for 循环 For($ct0;$ct -le 3;$ct){} # 遍历集合 ForEach($var in $arr){} # while 循环先判断后执行 while($var -ne 0){} # do-while 循环至少执行一次 Do{}While()使用要点Write-Host只向控制台输出不会进入管道若希望输出可被后续命令继续处理应使用Write-Output或直接书写表达式Switch支持通配符与正则匹配-wildcard、-regex参数比多层IF/ELSEIF更简洁ForEach语句与ForEach-Objectcmdlet 功能相似前者更贴近传统编程风格。3.4 函数与模块示例 1带参数校验的函数function funcname { [CmdletBinding()] # 启用高级函数特性支持公共参数 param( [Parameter(Mandatory)] # 必填参数缺失时提示输入 [String]$user ) Write-Host welcome $user return value # 函数返回值 } $var funcname -user pcb # 调用并接收返回值示例 2支持管道的流水线函数function Get-EvenNumbers { [CmdletBinding()] param ( [Parameter(ValueFromPipeline $true)] # 允许从管道接收输入 [int] $Number ) begin {#command#} # 管道开始前执行一次 process { # 对管道中的每个对象执行一次 if ($Number % 2 -eq 0) { Write-Output $Number # 输出偶数 } } end {#command#} # 管道结束后执行一次 } 1..10 | Get-EvenNumbers # 输出: 2 4 6 8 10模块管理# 查看 PowerShell 的模块搜索路径 $env:PSModulePath # 列出系统上安装的所有模块-ListAvailable 含未加载的 Get-Module -ListAvailable # 列出当前会话中已导入的模块 Get-Module # 导入 / 移除模块 Import-Module moduleName Remove-Module moduleName # 从 PowerShell Gallery 等仓库搜索模块 Find-Module -Tag cloud Find-Module -Name ps* # 创建一个内存中的 PowerShell 模块 New-Module -Name trevor -ScriptBlock { function Add($a,$b) { $a $b } }使用要点[CmdletBinding()]将普通函数升级为“高级函数”自动获得-Verbose、-Debug、-ErrorAction等公共参数[Parameter(Mandatory)]标记必填参数未提供时 PowerShell 会交互式提示ValueFromPipeline配合begin/process/end三块结构是编写管道友好型函数的黄金模板——process块对每个管道元素执行一次Find-Module默认从 PowerShell Gallery 拉取是发现第三方模块如 Azure、AWS、VMware 模块的入口。四、注意事项在大多数语言中转义字符是反斜杠\而在 PowerShell 中是反引号。例如$var会输出字面量$var而不是变量值换行符写作 n、制表符写作t PowerShell 的#用于行内注释# ... #用于块注释本文示例中的#...#即块注释占位符比较运算符与算术运算符的语法差异-eq而非是初学者的高频踩坑点。五、参考与延伸阅读本文内容以仓库文档 docs/powershell.md 为核心整理你可以通过以下方式继续深入学习浏览仓库首页 README.md 查看全部速查清单的导航结构PowerShell 位于“编程”分类与 PowerShell 定位相近的 Bash 备忘清单 可对照学习两类 Shell 在变量、条件、循环、函数上的异同了解本仓库速查清单的书写规范与本地编译方式可阅读 docs/quickreference.md 与 CONTRIBUTING.md仓库使用refs-cli将docs/*.md编译为静态 HTML 页面见 package.json 中的build/start脚本本地运行npm install npm run build即可生成dist目录后离线查阅全部清单。实践建议将本文的示例命令在 PowerShell 7pwsh或 Windows PowerShell 5.1 控制台中逐条运行结合Get-Help -Examples边查边练即可快速建立起 PowerShell 的自动化操作手感。【免费下载链接】reference面向开发者的技术速查清单Cheat Sheets集合整理常见技术、工具与开发流程帮助快速查阅关键信息提高开发效率。项目地址: https://gitcode.com/GitHub_Trending/referen/reference创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表