Windows 命令行 (cmd.exe) 和 PowerShell 命令详解
本文档旨在介绍 Windows 命令行 (cmd.exe) 和 PowerShell 中常用的和不常用的命令,并着重强调它们在 64 位 Windows 系统下的使用,以及与电源管理相关的命令。
一、核心概念:cmd.exe 和 PowerShell
- cmd.exe (命令提示符): 传统的 Windows 命令行解释器,基于 DOS 命令。通过在搜索栏输入
cmd
或命令提示符
即可打开。 - PowerShell: 更现代、更强大的命令行外壳和脚本语言,基于 .NET 框架。它不仅可以执行传统的 DOS 命令,还拥有自己独特的 cmdlet(命令)。通过在搜索栏输入
PowerShell
即可打开。
虽然两者都能在 64 位 Windows 下使用,但 PowerShell 提供了更多高级功能和面向对象的特性,更适合自动化任务和系统管理。
二、常用命令 (cmd.exe 和 PowerShell 通用或类似)
功能 | cmd.exe (命令) | PowerShell (Cmdlet) | 说明 | 示例 |
---|---|---|---|---|
显示目录 | dir |
Get-ChildItem |
列出当前目录的文件和子目录。 | dir / Get-ChildItem (显示当前目录);dir /a / Get-ChildItem -Force (显示所有文件,包括隐藏文件);dir *.txt / Get-ChildItem *.txt (显示所有 txt 文件) |
更改目录 | cd |
Set-Location |
更改当前工作目录。 | cd C:\Windows / Set-Location C:\Windows ;cd .. / Set-Location .. (返回上一级目录) |
创建目录 | mkdir / md |
New-Item -ItemType Directory |
创建新目录。 | mkdir MyFolder / New-Item -ItemType Directory MyFolder |
删除目录 | rmdir / rd |
Remove-Item |
删除目录(只能删除空目录)。 | rmdir MyFolder / Remove-Item MyFolder ;rmdir /s MyFolder / Remove-Item MyFolder -Recurse (删除非空目录,需要确认) |
删除文件 | del |
Remove-Item |
删除文件。 | del MyFile.txt / Remove-Item MyFile.txt ;del *.txt / Remove-Item *.txt (删除所有 txt 文件);del *.* /q / Remove-Item * -Force (强制删除所有文件,慎用!) |
复制文件/目录 | copy / xcopy |
Copy-Item |
复制文件或目录。xcopy 功能更强大,可以复制目录树。 |
copy MyFile.txt MyFileCopy.txt / Copy-Item MyFile.txt MyFileCopy.txt ;xcopy MyFolder NewFolder /s /e /i /y / Copy-Item MyFolder NewFolder -Recurse -Force (复制目录及其子目录) |
移动/重命名 | move / ren |
Move-Item |
移动文件或目录,也可用于重命名。 | move MyFile.txt NewLocation\ / Move-Item MyFile.txt NewLocation\ ;ren MyFile.txt NewName.txt / Rename-Item MyFile.txt NewName.txt |
清屏 | cls |
Clear-Host |
清除屏幕上的内容。 | cls / Clear-Host |
显示日期/时间 | date / time |
Get-Date |
显示或设置系统日期和时间。 | date / Get-Date (显示日期和时间) |
显示版本 | ver |
(Get-WmiObject Win32_OperatingSystem).Caption |
显示 Windows 版本。PowerShell 可以使用 WMI 获取更详细的信息。 | ver / (Get-WmiObject Win32_OperatingSystem).Caption ;(Get-WmiObject Win32_OperatingSystem).OSArchitecture (显示系统架构,例如 x64) |
退出 | exit |
exit |
退出命令行窗口。 | exit |
显示进程 | tasklist |
Get-Process |
显示当前运行的进程列表。 | tasklist / Get-Process ;tasklist /fi "imagename eq notepad.exe" / Get-Process notepad (显示特定进程) |
终止进程 | taskkill |
Stop-Process |
终止指定的进程。 | taskkill /im notepad.exe /f / Stop-Process -Name notepad -Force ;taskkill /pid 1234 /f / Stop-Process -Id 1234 -Force (通过 PID 终止进程) |
网络连接测试 | ping |
Test-Connection |
测试网络连接。 | ping www.google.com / Test-Connection www.google.com |
IP 配置信息 | ipconfig |
Get-NetIPAddress |
显示或配置网络接口信息。 | ipconfig / Get-NetIPAddress ;ipconfig /all / `Get-NetAdapter |
磁盘检查 | chkdsk |
Repair-Volume |
检查磁盘错误。 | chkdsk C: /f /r / Repair-Volume C -Scan -OfflineScanAndFix |
三、不常用但有用的命令 (cmd.exe 和 PowerShell)
功能 | cmd.exe (命令) | PowerShell (Cmdlet/方法) | 说明 | 示例 |
---|---|---|---|---|
详细系统信息 | systeminfo |
Get-ComputerInfo / Get-WmiObject Win32_ComputerSystem 等 |
提供非常详细的系统信息,包括操作系统、硬件、软件等。 | systeminfo / Get-ComputerInfo ;`Get-WmiObject Win32_ComputerSystem |
驱动程序信息 | driverquery |
Get-WmiObject Win32_PnPSignedDriver |
列出已安装的设备驱动程序信息。 | driverquery / Get-WmiObject Win32_PnPSignedDriver ;driverquery /v / `Get-WmiObject Win32_PnPSignedDriver |
WMI 访问 | wmic |
Get-WmiObject |
通过命令行访问 WMI,可以查询和管理各种系统信息。PowerShell 的 Get-WmiObject cmdlet 是更强大和灵活的 WMI 访问方式。 |
wmic os get Caption,Version / `Get-WmiObject Win32_OperatingSystem |
文件系统管理 | fsutil |
各种 .NET 方法(例如 [System.IO.DriveInfo]::GetDrives() ) |
用于管理文件系统,功能强大。PowerShell 中通常使用 .NET 方法来实现类似的功能。 | fsutil fsinfo drives (列出所有驱动器);fsutil volume diskfree C: (显示 C 盘的可用空间);PowerShell: [System.IO.DriveInfo]::GetDrives() |
注册表操作 | reg |
Get-ItemProperty / Set-ItemProperty / New-Item / Remove-Item |
操作注册表。PowerShell 提供了更结构化和安全的注册表操作方式。 | reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" / Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion" ;reg add "HKLM\SOFTWARE\MyKey" /v MyValue /t REG_SZ /d "My Data" / New-Item -Path "HKLM:\SOFTWARE\MyKey" -Name "MyValue" -Value "My Data" -ItemType String |
网络配置 | netsh |
大量 Net* cmdlet (例如 Get-NetAdapter , Set-NetIPAddress ) |
用于配置和管理网络设置。PowerShell 提供了更模块化和易用的网络配置 cmdlet。 | netsh interface show interface / Get-NetAdapter ;netsh wlan show profiles / (Get-NetAdapter -Name "Wi-Fi").Configuration (需要进一步处理输出) |
文件加密/解密 | cipher |
使用 .NET 的加密/解密类 | 显示或更改 NTFS 文件系统上目录和文件的加密状态。PowerShell 中可以使用 .NET 的加密/解密类进行更灵活的操作。 | cipher /e MyFile.txt / 使用 .NET 的 System.IO.File.Encrypt() 方法 (较为复杂,此处不提供完整示例) |
系统配置 | msconfig |
不直接等价,但可以通过 PowerShell 操作启动配置 | 虽然 msconfig 不是命令行工具,但可以通过 PowerShell 操作启动配置,例如修改启动项可以使用 bcdedit 命令或 WMI。 |
start msconfig ;使用 bcdedit 或 WMI 操作启动项 (较为复杂,此处不提供完整示例) |
显示目录树 | tree |
Get-ChildItem -Recurse |
以树状结构显示目录。PowerShell 中使用 Get-ChildItem -Recurse 结合 Format-List 或 Format-Table 可以实现更灵活的输出格式。 |
tree C:\Windows / Get-ChildItem C:\Windows -Recurse (默认输出不太像树状,需要配合 Format-List 或 Format-Table 进行格式化) |
强制休眠 | rundll32.exe powrprof.dll,SetSuspendState 0,1,0 |
无直接等价 cmdlet,但可通过 WMI 或调用 Win32 API 实现,或使用 psshutdown -d -t 0 |
强制计算机进入休眠状态。 | rundll32.exe powrprof.dll,SetSuspendState 0,1,0 ;使用 psshutdown -d -t 0 (需要先下载 Sysinternals Suite) |
电源请求 | powercfg /requests |
无直接等价 cmdlet,但可通过 WMI 查询相关信息 | 显示阻止计算机进入睡眠或休眠状态的应用程序和驱动程序。 | powercfg /requests |
唤醒计时器 | powercfg /waketimers |
无直接等价 cmdlet,但可通过 WMI 查询相关信息 | 列出活动的唤醒计时器。 | powercfg /waketimers |
分析系统能效 | powercfg /energy |
无直接等价 cmdlet | 生成一份 HTML 报告,分析系统能效问题。 | powercfg /energy |
生成电池报告 | powercfg /batteryreport |
无直接等价 cmdlet | 生成一份 HTML 报告,包含电池容量历史、使用情况、寿命估算等信息。 | powercfg /batteryreport |