> 技术文档 > Windows 终端命令详解:PowerShell 初学者指南_windows powershell

Windows 终端命令详解:PowerShell 初学者指南_windows powershell


一、引言

什么是 Windows 终端?

Windows 终端是一个命令行工具,允许用户通过文本命令与系统交互,执行文件管理、系统配置和网络诊断等操作。PowerShell 是 Windows 终端的现代版本,相比传统的命令提示符(CMD),它功能更强大,支持脚本编写和复杂任务处理。本文将以 PowerShell 为主,带你从零开始学习。

如何打开 PowerShell?

有以下几种方法可以打开 PowerShell:

  1. Win + R 键,输入 powershell,然后按回车。
  2. 在任务栏搜索框输入 “PowerShell”,点击打开。
  3. Win + X 键,然后选择终端管理员

打开 PowerShell 后,你会看到类似以下的提示符:

PS C:\\Users\\userC>

这表示你当前在 C 盘的 Users\\userC 目录下。本文假设系统有 C 盘(用户 userC)、D 盘(用户 userD)、E 盘(用户 userE)、F 盘(用户 userF),我们将通过示例展示命令的运行效果。

二、基础导航命令

这些命令帮助你在文件夹之间移动和查看内容。

  • cd (切换目录)

    功能:更改你当前所在的文件夹位置(PowerShell 中实际命令是 Set-Locationcd 是它的常用别名)。

    新手提示:这可能是你用得最多的命令之一!

    示例:

    • cd D:\\Users\\userD (切换当前工作目录到 D 盘的 Users\\userD 文件夹)
    • cd .. (返回上一级文件夹)
    • cd \\ (切换到当前盘符的根目录, 比如 C:\\D:\\)
    • cd F:\\Users\\userF (切换当前工作目录到 F 盘的 Users\\userF 文件夹)
    • cd ~ (切换到你的用户主目录, 通常是 C:\\Users\\你的用户名)
    # 从 C 盘切换到 D 盘的 userD 目录C:\\Users\\userC> cd D:\\Users\\userDD:\\Users\\userD>
  • dirls (列出目录内容)

    功能:显示当前文件夹里的文件和子文件夹(PowerShell 中实际命令是 Get-ChildItemdirls 是它的常用别名)。

    新手提示:ls 是 Linux/Mac 用户熟悉的命令,PowerShell 也支持它!

    示例:

    • dir (列出当前目录下的文件和文件夹)
    • ls (效果同 dir)
    • dir -Name (仅列出当前目录下文件和文件夹的名称,看起来更简洁)
    • dir -Force (列出当前目录下的所有文件和文件夹, 包括隐藏的项目)
    • dir E:\\Users\\userE (列出 E 盘 Users\\userE 目录下的文件和文件夹)
    # 列出 F 盘 userF 目录内容F:\\Users\\userF> dir 目录: F:\\Users\\userFMode  LastWriteTime Length Name----  ------------- ------ ----d----- 2023/10/27 09:00 dir1d----- 2023/10/27 09:01 dir2-a---- 2023/10/27 09:05 100 file1.txt-a---- 2023/10/27 09:06 250 file2.txt# 仅显示文件名F:\\Users\\userF> dir -Namedir1dir2file1.txtfile2.txt# 包括隐藏文件F:\\Users\\userF> dir -Force 目录: F:\\Users\\userFMode  LastWriteTime Length Name----  ------------- ------ ----d----- 2023/10/27 09:00 dir1d----- 2023/10/27 09:01 dir2-a---- 2023/10/27 09:05 100 file1.txt-a---- 2023/10/27 09:06 250 file2.txt-a-h-- 2023/10/27 09:10 50 hidden.txt# 列出 E 盘 userE 目录内容F:\\Users\\userF> dir E:\\Users\\userE 目录: E:\\Users\\userEMode  LastWriteTime Length Name----  ------------- ------ -----a---- 2023/10/27 10:15 512000 photo.jpg-a---- 2023/10/27 10:16 15360000 video.mp4-a---- 2023/10/27 10:17 800 notes.txt
  • pwd (显示当前路径)

    功能:告诉你现在位于哪个文件夹(PowerShell 中实际命令是 Get-Locationpwd 是它的别名)。

    新手提示:当你切换了太多次目录,不确定自己在哪时,用这个命令!

    示例:

    • pwd
    D:\\Users\\userD> pwdPath----D:\\Users\\userD

三、文件与文件夹管理命令

这些命令用于管理文件和文件夹。

  • mkdirmd (创建文件夹)

    功能:创建一个新的文件夹(PowerShell 中实际命令是 New-Item -ItemType Directory)。

    示例:

    • mkdir C:\\Users\\userC\\test(在 C:\\Users\\userC 创建 test 文件夹)。
    • md D:\\Users\\userD\\dir1\\dir2(在 D:\\Users\\userD 下同时创建 dir1dir1\\dir2 两个嵌套文件夹,如果 dir1 不存在的话)。
    # 在 C 盘 userC 目录下创建 test 文件夹C:\\Users\\userC> mkdir C:\\Users\\userC\\test 目录: C:\\Users\\userCMode  LastWriteTime Length Name----  ------------- ------ ----d----- 2023/10/27 11:00 test# 在 D 盘 userD 目录下创建多级目录 dir1\\dir2C:\\Users\\userC> mkdir D:\\Users\\userD\\dir1\\dir2 目录: D:\\Users\\userD\\dir1Mode  LastWriteTime Length Name----  ------------- ------ ----d----- 2023/10/27 11:01 dir2
  • copycp (复制文件/文件夹)

    功能:复制文件或文件夹(PowerShell 中实际命令是 Copy-Item)。

    新手提示:复制文件夹时,如果想把里面的所有东西都复制过去,需要加 -Recurse 参数。

    示例:

    • copy E:\\Users\\userE\\test.txt F:\\Users\\userF (将 E:\\Users\\userE\\test.txt 复制到 F:\\Users\\userF 目录下)
    • cp C:\\Users\\userC\\myProject D:\\backup\\ -Recurse (递归复制 C:\\Users\\userC\\myProject 文件夹及其所有内容到 D:\\backup\\ 目录下)
    # 复制 E:\\Users\\userE\\test.txt 到 F:\\Users\\userFC:\\Users\\userC> copy E:\\Users\\userE\\test.txt F:\\Users\\userF\\# 递归复制 C 盘 userC 目录下的 myProject 文件夹到 D:\\backupC:\\Users\\userC> cp C:\\Users\\userC\\myProject D:\\backup\\ -Recurse
  • movemv (移动或重命名文件/文件夹)

    功能:移动文件或文件夹到另一个地方,或者在原地给它改个名字(PowerShell 中实际命令是 Move-Item)。

    示例:

    • move C:\\Users\\userC\\test.txt D:\\Users\\userD (将 C:\\Users\\userC\\test.txt 文件移动到 D:\\Users\\userD 目录下)
    • mv E:\\Users\\userE\\folder1 F:\\Users\\userF (将 E:\\Users\\userE\\folder1 文件夹移动到 F:\\Users\\userF 目录下)
    • move D:\\Users\\userD\\old_name.log new_name.log (在 D:\\Users\\userD 目录下将 old_name.log 重命名为 new_name.log)
    # 移动 C:\\Users\\userC\\test.txt 到 D:\\Users\\userDC:\\Users\\userC> move C:\\Users\\userC\\test.txt D:\\Users\\userD\\# 重命名 D:\\Users\\userD\\old.txt 为 new.txtD:\\Users\\userD> ren .\\old.txt new.txt
  • delrmrmdirrderase (删除文件/文件夹)

    功能:删除文件或文件夹(PowerShell 中实际命令是 Remove-Item)。

    !!! 非常重要:删除操作通常不可逆,默认不经过回收站!请务必小心使用 !!!
    新手提示:删除非空文件夹通常需要加 -Recurse 参数。-Force 可以强制删除(比如删除只读或隐藏文件)。

    示例:

    • del E:\\Users\\userE\\test.txt(删除 E:\\Users\\userE 目录下的 test.txt 文件)。
    • rmdir C:\\Users\\userC\\test(删除 C:\\Users\\userC 目录下的空文件夹 test)。
    • rm D:\\Users\\userD\\dir1 -Recurse(删除 D:\\Users\\userD\\dir1 文件夹及其所有内容 - 危险操作!)。
    • del F:\\Users\\userF\\*.tmp -Force(强制删除 F:\\Users\\userF 目录下所有 .tmp 文件)。
    # 删除 E:\\Users\\userE\\test.txt 文件C:\\Users\\userC> del E:\\Users\\userE\\test.txt# 递归删除 D:\\Users\\userD\\dir1 文件夹 (危险!)C:\\Users\\userC> rmdir D:\\Users\\userD\\dir1 -Recurse -Force
  • renrename (重命名)

    功能:重命名文件或文件夹(PowerShell 中实际命令是 Rename-Item)。

    示例:

    • ren D:\\Users\\userD\\old.txt new.txt(将 D:\\Users\\userD 目录下的 old.txt 重命名为 new.txt)。
    • rename C:\\Users\\userC\\MyFolder MyProject (将 C:\\Users\\userC 目录下的 MyFolder 文件夹重命名为 MyProject)。
    • 进阶示例: Get-ChildItem E:\\Users\\userE\\*.jpeg | ren -NewName {$_.Name -replace \'\\.jpeg\',\'.jpg\'}(将 E:\\Users\\userE 目录下所有 .jpeg 文件后缀改为 .jpg)。
    # 将 D:\\Users\\userD\\old.txt 重命名为 new.txtD:\\Users\\userD> ren .\\old.txt new.txt# 将 C:\\Users\\userC\\MyFolder 重命名为 MyProjectC:\\Users\\userC> rename .\\MyFolder MyProject
  • typecatgc (查看文件内容)

    功能:在屏幕上显示文本文件的内容(PowerShell 中实际命令是 Get-Content)。

    新手提示:cat 是 Linux/Mac 用户熟悉的命令。gcGet-Content 的缩写。

    示例:

    • type D:\\Users\\userD\\hi.txt (显示 D:\\Users\\userD\\hi.txt 文件的内容)
    • cat C:\\Users\\userC\\config.log (同上)
    • gc E:\\Users\\userE\\long_log.txt -Head 20 (只看 E:\\Users\\userE\\long_log.txt 文件的前 20 行)
    • gc F:\\Users\\userF\\error_report.txt -Tail 10 (只看 F:\\Users\\userF\\error_report.txt 文件的最后 10 行)
    # 查看 D:\\Users\\userD\\hi.txt 的内容C:\\Users\\userC> type D:\\Users\\userD\\hi.txtThis is the content of hi.txt.Hello PowerShell!# 查看 E:\\Users\\userE\\long_log.txt 的最后 5 行C:\\Users\\userC> gc E:\\Users\\userE\\long_log.txt -Tail 5Line 96Line 97Line 98Line 99Line 100
  • >>> (输出重定向)

    功能:这是 shell 的特性,不是 PowerShell 命令,但非常常用。> 把命令的输出写入文件(覆盖原有内容),>> 把输出追加到文件末尾。

    新手提示:这是创建简单文本文件或保存命令结果的快捷方式。

    示例:

    • \"第一行笔记\" > C:\\Users\\userC\\mynote.txt (创建 mynote.txt 并写入这句话,如果文件已存在则覆盖)
    • dir D:\\Users\\userD > D:\\Users\\userD\\filelist.txt (把 dir D:\\Users\\userD 命令的结果保存到 filelist.txt)
    • \"这是追加的一行\" >> C:\\Users\\userC\\mynote.txt (在 mynote.txt 文件末尾添加这句话)
    • Get-Process >> F:\\Users\\userF\\process_history.log (把当前进程列表追加到 process_history.log 文件)
    # 创建新文件或覆盖旧文件写入内容C:\\Users\\userC> \"Hello from PowerShell!\" > .\\greeting.txtC:\\Users\\userC> type .\\greeting.txtHello from PowerShell!# 向文件追加内容C:\\Users\\userC> Get-Date | Out-String >> .\\greeting.txt # 使用 Out-String 确保日期格式正确追加C:\\Users\\userC> type .\\greeting.txtHello from PowerShell!2023年10月27日 15:30:00

四、系统信息与管理命令

这些命令用于查看和管理系统。

  • psgps (查看进程)

    功能:列出当前正在运行的程序(进程)(PowerShell 中实际命令是 Get-Process)。tasklist 是传统 CMD 命令,在 PowerShell 中也能用。

    示例:

    • ps (列出所有正在运行的进程)
    • Get-Process notepad (查找名字叫 notepad 的进程)
    • ps | Where-Object {$_.CPU -gt 10} (查找 CPU 使用时间超过 10 秒的进程)
    # 列出所有进程 (输出会很多,仅示意部分)C:\\Users\\userC> Get-ProcessHandles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName------- ------ ----- ----- ------ -- -- ----------- 1051 58 140596 189812 123.45 1234 1 chrome 210 15 4500 18750 0.50 9876 1 notepad...# 查找名为 notepad 的进程C:\\Users\\userC> Get-Process -Name notepad# (输出类似上面 notepad 那一行)
  • killspps (结束进程)

    功能:终止指定的进程(PowerShell 中实际命令是 Stop-Process)。taskkill 是传统 CMD 命令,也能用。

    注意:强制终止进程可能导致数据丢失或系统不稳定,请谨慎使用。

    示例:

    • Stop-Process -Name notepad (停止所有名为 notepad 的进程)
    • Stop-Process -Id 9876 -Force (强制停止进程 ID 为 9876 的进程)
    • taskkill /IM explorer.exe /F (使用 CMD 命令强制结束资源管理器进程)
    # 停止所有名为 notepad 的进程 (会提示确认)C:\\Users\\userC> Stop-Process -Name notepad# 强制停止 ID 为 9876 的进程 (无确认)C:\\Users\\userC> Stop-Process -Id 9876 -Force
  • whoami (显示当前用户)

    功能:显示当前登录的用户名。PowerShell 中也可以用 $env:USERNAME 获取。

    示例:

    • whoami
    • $env:USERNAME
    C:\\Users\\userC> whoamimydomain\\usercC:\\Users\\userC> $env:USERNAMEuserC
  • Get-ComputerInfo (显示系统信息)

    功能:显示关于计算机硬件和操作系统的详细信息。systeminfo 是传统 CMD 命令,也能用但输出格式不易处理。

    示例:

    • Get-ComputerInfo (显示全面的系统信息,可能较多)
    • Get-ComputerInfo | Select-Object OsName, OsVersion, CsManufacturer, CsModel (只看操作系统名、版本、电脑制造商和型号)
    # 查看部分系统信息C:\\Users\\userC> Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, CsManufacturer, CsModelWindowsProductName : Windows 10 ProWindowsVersion : 2009CsManufacturer : Dell Inc.CsModel : XPS 15 9570
  • $PSVersionTable (显示 PowerShell 版本)

    功能:显示当前 PowerShell 的版本信息。ver 是传统 CMD 命令,显示的是 CMD 的模拟版本或 Windows 版本。

    示例:

    • $PSVersionTable
    C:\\Users\\userC> $PSVersionTableName Value---- -----PSVersion7.3.6PSEditionCoreGitCommitId  7.3.6OS Microsoft Windows 10.0.19045Platform Win32NTPSCompatibleVersions  {1.0, 2.0, 3.0, 4.0…}PSRemotingProtocolVersion 2.3SerializationVersion  1.1.0.1WSManStackVersion  3.0
  • Stop-Computer / Restart-Computer (关机或重启)

    功能:关闭或重新启动本地或远程计算机。shutdown 是传统 CMD 命令,也能用。

    注意:这些命令会中断当前工作,请保存好所有文件。

    示例:

    • Stop-Computer -Force (立即强制关闭本机)
    • Restart-Computer -Force (立即强制重启本机)
    • shutdown /s /t 120 (使用 CMD 命令,120 秒后关闭本机)
    • shutdown /r /t 0 (使用 CMD 命令,立即重启本机)
    # 立即重启本机 (需要管理员权限)C:\\Users\\userC> Restart-Computer -Force

五、网络相关命令

这些命令用于检查和管理网络配置与连接。

  • ipconfig (显示网络配置)

    功能:显示 TCP/IP 网络配置信息。PowerShell 中推荐使用 Get-NetIPConfiguration 获取更详细且结构化的信息。

    示例:

    • ipconfig (显示基本 IP 地址、子网掩码、默认网关)
    • ipconfig /all (显示详细的网络配置信息,包括 MAC 地址、DNS 服务器等)
    • Get-NetIPConfiguration (PowerShell 方式,显示接口的 IP 配置详情)
    # 使用 ipconfig 显示基本信息C:\\Users\\userC> ipconfigWindows IP 配置以太网适配器 以太网: 连接特定的 DNS 后缀 . . . . . . . : mycompany.local IPv4 地址 . . . . . . . . . . . . : 192.168.1.100 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 192.168.1.1# 使用 PowerShell 命令获取信息 (部分)C:\\Users\\userC> Get-NetIPConfiguration | Where-Object {$_.IPv4DefaultGateway -ne $null} | Select-Object InterfaceAlias, IPv4Address, IPv4DefaultGatewayInterfaceAlias IPv4Address IPv4DefaultGateway-------------- ----------- ------------------以太网 {192.168.1.100} {192.168.1.1}
  • ping (测试连接)

    功能:测试与另一台主机(IP 地址或域名)的网络连通性。PowerShell 中推荐使用 Test-Connection

    示例:

    • ping www.google.com (测试到 Google 的连通性)
    • ping 192.168.1.1 (测试到默认网关的连接)
    • Test-Connection www.baidu.com -Count 2 (PowerShell 方式,向百度发送 2 个 ICMP 请求)
    # 使用 ping 测试到 8.8.8.8 (Google DNS)C:\\Users\\userC> ping 8.8.8.8 -n 2正在 Ping 8.8.8.8 具有 32 字节的数据:来自 8.8.8.8 的回复: 字节=32 时间=10ms TTL=118来自 8.8.8.8 的回复: 字节=32 时间=9ms TTL=1188.8.8.8 的 Ping 统计信息: 数据包: 已发送 = 2,已接收 = 2,丢失 = 0 (0% 丢失),往返行程的估计时间(以毫秒为单位): 最短 = 9ms,最长 = 10ms,平均 = 9ms# 使用 Test-ConnectionC:\\Users\\userC> Test-Connection 8.8.8.8 -Count 1Source Destination IPV4Address IPV6Address Bytes Time(ms)------ ----------- ----------- ----------- ----- --------MYPC 8.8.8.8 8.8.8.8 32 9
  • Resolve-DnsName (查询域名)

    功能:执行 DNS 查询,将主机名解析为 IP 地址,或反向解析 IP 地址为主机名。nslookup 是传统 CMD 命令,也能用。

    示例:

    • Resolve-DnsName www.microsoft.com (解析微软官网的 IP 地址)
    • Resolve-DnsName 8.8.8.8 (反向解析 IP 地址 8.8.8.8)
    • nslookup www.github.com (使用 CMD 命令查询 GitHub 的 IP)
    # 解析 www.microsoft.com 的 A 记录 (IPv4)C:\\Users\\userC> Resolve-DnsName www.microsoft.com -Type AName Type TTL Section IPAddress---- ---- --- ------- ---------www.microsoft.com  A 3600 Answer 104.74.192.151# 使用 nslookupC:\\Users\\userC> nslookup www.google.com服务器: UnKnownAddress: 192.168.1.1非权威应答:名称: www.google.comAddresses: 2404:6800:4005:81a::2004 172.217.160.132

六、输出处理与筛选命令

这些命令通常跟在其他命令后面,用 | (管道符) 连接,用来处理和筛选输出结果。

  • | (管道 Pipeline)

    功能:把前一个命令的输出结果,交给后一个命令去处理。这是 PowerShell 的精髓!

    新手提示:想象成一个流水线,数据从左边的命令流到右边的命令。

    示例:

    • dir | Select-Object Name (列出当前目录内容,但只显示名字这一列)
    • Get-Process | Where-Object {$_.CPU -gt 10} (获取所有进程,然后筛选出 CPU 使用时间大于 10 秒的)
    • Get-Service | Sort-Object Status (获取所有服务,然后按状态排序)
  • Where-Objectwhere? (筛选对象)

    功能:根据你设定的条件,筛选出符合条件的数据。

    新手提示:{} 里面写筛选条件,$_ 代表当前正在处理的那个对象(比如一个文件、一个进程)。常用的比较符有 -eq (等于), -ne (不等于), -gt (大于), -lt (小于), -like (模糊匹配,可用 * 通配符), -contains (包含)。

    示例:

    • dir D:\\Users\\userD | where {$_.Length -gt 10KB} (找出 D:\\Users\\userD 目录下大于 10KB 的文件)
    • Get-Service | where {$_.Status -eq \'Stopped\'} (找出所有已停止的服务)
    • Get-Process | where {$_.ProcessName -like \"chrome*\"} (找出所有名字以 “chrome” 开头的进程)
    # 找出 F:\\Users\\userF 目录下所有 .txt 文件C:\\Users\\userC> dir F:\\Users\\userF | Where-Object {$_.Extension -eq \'.txt\'} 目录: F:\\Users\\userFMode  LastWriteTime Length Name----  ------------- ------ -----a---- 2023/10/27 09:05 100 file1.txt-a---- 2023/10/27 09:06 250 file2.txt-a-h-- 2023/10/27 09:10 50 hidden.txt
  • Select-Objectselect (选择属性)

    功能:从输出结果中只挑选你关心的那几列(属性),或者选择指定数量的对象。

    示例:

    • Get-Process | Select-Object Name, ID, WS (只看进程的名字、ID 和工作集内存)
    • dir E:\\Users\\userE | Select-Object Name, Length, LastWriteTime (只看文件/文件夹的名字、大小和最后修改时间)
    • dir C:\\Users\\userC | Select-Object -First 5 (只看 C:\\Users\\userC 目录下的前 5 个项目)
    • Get-Service | Select-Object -Last 3 (只看服务列表中的最后 3 个服务)
    # 只看进程名和内存使用情况 (前 5 个)C:\\Users\\userC> Get-Process | Select-Object -First 5 Name, WSName WS---- --ApplicationFrameHost  30532audiodg 12188CalculatorApp 22940chrome  78456cmd  6448
  • Sort-Objectsort (排序对象)

    功能:根据指定的属性对输出结果进行排序。默认升序,加 -Descending 参数为降序。

    示例:

    • dir D:\\Users\\userD | Sort-Object Name (按名字字母顺序排序)
    • dir E:\\Users\\userE | Sort-Object Length -Descending (按文件大小从大到小排序)
    • Get-Process | Sort-Object WS -Descending (按内存使用量从高到低排序)
    # 按 CPU 使用时间降序显示进程 (只显示名字和CPU时间,取前5)C:\\Users\\userC> Get-Process | Sort-Object CPU -Descending | Select-Object Name, CPU -First 5Name CPU---- ---System Idle Process 15000.50chrome 1234.56svchost 876.54explorer 543.21MsMpEng 321.09

七、帮助与发现命令

这些命令帮助你学习和使用 PowerShell。

  • Get-Helphelpman (获取帮助)

    功能:显示 PowerShell 命令的帮助文档。这是你最好的朋友!

    新手提示:如果你不确定一个命令怎么用,或者想看它有哪些参数,就用 help

    示例:

    • help Get-Process (查看 Get-Process 命令的帮助)
    • help dir -Examples (查看 dir (即 Get-ChildItem) 的用法示例)
    • help copy -Parameter Path (查看 copy (即 Copy-Item) 命令的 Path 参数说明)
    • help about_Operators (阅读关于 PowerShell 运算符的概念性帮助文档)
    • Get-Help Get-ChildItem -Full (显示 Get-ChildItem 的完整帮助,非常详细)
    • Get-Help Get-Service -Online (在浏览器中打开 Get-Service 的在线帮助文档)
    # 获取 copy 命令的基本帮助C:\\Users\\userC> help copyNAME Copy-ItemSYNOPSIS Copies an item from one location to another.... (后面还有详细说明和参数列表)# 查看 copy 命令的示例C:\\Users\\userC> help copy -Examples... (会显示很多使用示例)
  • Update-Help (更新帮助文档)

    功能:从网上下载最新的 PowerShell 帮助文件。

    新手提示:第一次使用 PowerShell 或者很久没用之后,最好运行一次这个命令,确保你的帮助文档是最新。需要管理员权限运行 PowerShell

    示例:

    • Update-Help (在管理员 PowerShell 窗口中运行)
    # 需要在管理员模式下运行PS C:\\WINDOWS\\system32> Update-Help# (会显示下载和安装进度)
  • Get-Commandgcm (查找命令)

    功能:查找 PowerShell 命令(包括 Cmdlet、函数、别名、脚本、应用程序)。

    示例:

    • Get-Command *process* (查找名字里包含 “process” 的命令)
    • Get-Command -Noun Item (查找所有操作 “Item” (项目) 的命令,比如 Get-Item, Set-Item, Remove-Item)
    • gcm dir (查看 dir 这个名字到底对应哪个实际命令)
    • Get-Command -Verb Get (查找所有动词(操作类型)为 “Get” 的命令)
    # 查找所有和 \"Service\" 相关的命令C:\\Users\\userC> Get-Command -Noun ServiceCommandType Name Version Source----------- ---- ------- ------Cmdlet Get-Service  7.0.0.0 Microsoft.PowerShell.ManagementCmdlet New-Service  7.0.0.0 Microsoft.PowerShell.Management... (还有 Start-Service, Stop-Service)# 查看 \'ls\' 是什么C:\\Users\\userC> gcm lsCommandType Name Version Source----------- ---- ------- ------Alias  ls -> Get-ChildItem
  • Get-Aliasgal (查看别名)

    功能:列出 PowerShell 中的命令别名(快捷方式)。

    新手提示:很多你习惯的 CMD 或 Linux 命令(如 cd, dir, ls, copy, move, rm, cat, ps, cls)在 PowerShell 里其实是别名,了解它们对应的实际 PowerShell 命令很有用。

    示例:

    • Get-Alias (列出所有别名)
    • gal cd (查看 cd 这个别名对应哪个命令)
    • Get-Alias -Definition Get-Content (查找所有指向 Get-Content 的别名)
    # 查看 \'copy\' 是什么的别名C:\\Users\\userC> Get-Alias copyCommandType Name Version Source----------- ---- ------- ------Alias  copy -> Copy-Item

八、其他实用命令

这些命令提供额外功能。

  • clsclear (清屏)

    功能:清除屏幕上的所有文字,让界面变干净。(PowerShell 中实际命令是 Clear-Host)。

    示例:

    • cls
  • exit (退出)

    功能:关闭当前的 PowerShell 窗口或会话。

    示例:

    • exit
  • Write-Host (写入主机)

    功能:向控制台主机直接写入输出,可以指定颜色。echo 是传统 CMD 命令,在 PowerShell 中通常映射到 Write-Output

    新手提示:Write-Host 主要用于向屏幕显示信息,它的输出不能直接通过管道 | 传递给下一个命令。如果需要传递数据,应使用 Write-Output 或直接让命令产生输出。

    示例:

    • Write-Host \"操作已完成。\"
    • Write-Host \"警告:文件不存在!\" -ForegroundColor Red (显示红色警告)
    • echo \"Hello World\" (在 PowerShell 中通常等同于 Write-Output \"Hello World\")
    # 显示绿色成功消息C:\\Users\\userC> Write-Host \"任务成功完成!\" -ForegroundColor Green任务成功完成!
  • $env:PATH (环境变量)

    功能:查看或临时修改环境变量,PATH 是其中最重要的之一,它决定了系统在哪里查找可执行文件。set 是传统 CMD 查看环境变量的命令。

    示例:

    • $env:PATH (显示当前 PATH 环境变量的值)
    • Get-ChildItem env: (列出所有环境变量)
    • $env:PATH += \";C:\\MyTools\" (将 C:\\MyTools 临时添加到 PATH 末尾,仅在当前会话有效)
    # 查看 PATH 变量 (输出会很长)C:\\Users\\userC> $env:PATHC:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;...# 临时添加路径 (仅当前窗口有效)C:\\Users\\userC> $env:PATH += \";E:\\userE\\my_scripts\"

九、脚本执行策略 (新手常见问题)

PowerShell 有一个安全特性叫做“执行策略”,它控制哪些 PowerShell 脚本(.ps1 文件)可以运行。

  • Get-ExecutionPolicy (查看执行策略)

    功能:查看当前系统允许 PowerShell 运行哪种类型的脚本。

    示例:

    • Get-ExecutionPolicy
  • Set-ExecutionPolicy (设置执行策略)

    功能:更改脚本执行策略。需要管理员权限 运行 PowerShell 来更改全局策略。

    新手提示:

    • Restricted: (默认) 不允许运行任何 .ps1 脚本。
    • AllSigned: 只允许运行由受信任发布者签名的脚本。
    • RemoteSigned: 推荐设置。允许运行本地创建的脚本,但从网上下载的脚本必须有签名才能运行。
    • Unrestricted: 允许运行所有脚本,不安全。
    • Bypass: 什么都不阻止,也不警告。

    示例 (在管理员 PowerShell 中运行):

    • Set-ExecutionPolicy RemoteSigned (更改为允许本地脚本和签名的远程脚本)
    • Set-ExecutionPolicy Restricted (恢复默认)
    • Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser (只为当前用户更改策略,不需要管理员权限)
    # 查看当前策略C:\\Users\\userC> Get-ExecutionPolicyRestricted# (以管理员身份运行 PowerShell)# 更改策略为 RemoteSignedPS C:\\WINDOWS\\system32> Set-ExecutionPolicy RemoteSigned# (会提示确认风险,输入 Y 回车)执行策略更改执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险...是否要更改执行策略?[Y](Y) [A] 全是(A) [N](N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): Y# 再次查看策略PS C:\\WINDOWS\\system32> Get-ExecutionPolicyRemoteSigned

十、小技巧与注意事项

  • 大小写不敏感:大多数 PowerShell 命令和参数不区分大小写(例如,dirDIR 相同),但文件名和路径通常还是区分的,与 Windows 文件系统行为一致。
  • Tab 自动补全:输入命令或路径的一部分,然后按 Tab 键,PowerShell 会尝试自动补全。连续按 Tab 可以循环浏览可能的选项。这是提高效率的关键!
  • 命令历史:按键盘的 (上箭头) 和 (下箭头) 键可以浏览你之前输入过的命令。
  • 查看帮助:遇到不熟悉的命令,立即使用 Get-Help(或 help)。例如 help Get-ChildItem -Examples
  • 管道组合 |:将一个命令的输出传递给下一个命令处理,实现复杂任务。例如 Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
  • 输出重定向 >>>:将命令输出保存到文件。> 覆盖文件,>> 追加到文件。例如 dir C:\\Windows > C:\\Users\\userC\\windows_files.txt
  • 注意安全:像 del / rm / Remove-Item, Stop-Process -Force, Set-ExecutionPolicy Unrestricted 等命令具有潜在风险。操作前请务必确认目标和后果。
  • 管理员权限:修改系统设置、管理服务、安装软件、更改执行策略等操作通常需要以管理员身份运行 PowerShell。右键点击 PowerShell 图标选择“以管理员身份运行”。

十一、实践练习

尝试完成以下任务来熟悉命令:

简单任务

  1. C:\\Users\\userC 目录下创建一个名为 practice 的文件夹。

    cd C:\\Users\\userCmkdir practice
  2. practice 文件夹里创建一个名为 hello.txt 的文件,内容为 “Hello PowerShell Practice!”。

    cd C:\\Users\\userC\\practice\"Hello PowerShell Practice!\" > hello.txt
  3. 查看 hello.txt 文件的内容。

    type .\\hello.txt
  4. hello.txt 重命名为 greeting.txt

    ren .\\hello.txt greeting.txt
  5. 列出 practice 文件夹的内容,只显示文件名。

    dir -Name
  6. 删除 greeting.txt 文件。

    del .\\greeting.txt
  7. 返回 C:\\Users\\userC 目录,然后删除 practice 文件夹。

    cd ..rmdir .\\practice

进阶任务

  1. 查找当前系统中所有正在运行的服务,并按显示名称排序。

    Get-Service | Where-Object {$_.Status -eq \'Running\'} | Sort-Object DisplayName
  2. 找出当前系统中内存使用量(WS)最大的 5 个进程,并显示它们的名称和内存使用量。

    Get-Process | Sort-Object WS -Descending | Select-Object -First 5 Name, WS
  3. 测试你是否能 ping 通 www.qq.com

    ping www.qq.com
  4. E:\\Users\\userE 目录下的所有 .log 文件复制到 F:\\Users\\userF\\LogsBackup 目录下(假设 LogsBackup 文件夹已存在)。

    copy E:\\Users\\userE\\*.log F:\\Users\\userF\\LogsBackup\\

十二、结尾

命令行工具初看可能令人生畏,但熟能生巧。多动手练习这些命令,遇到问题时积极使用 Get-Help 探索更多选项和功能。掌握 PowerShell 将极大地提升你的 Windows 操作和自动化能力。